import { Event, EventFilter, BaseContract, Signer, Overrides as Overrides$1, ContractTransaction, BytesLike, BigNumberish, CallOverrides, BigNumber, PopulatedTransaction, utils, PayableOverrides, ContractReceipt, providers } from 'ethers';
import { FunctionFragment, Result, EventFragment } from '@ethersproject/abi';
import { Listener, Provider } from '@ethersproject/providers';

var ERC20$1 = [
	{
		type: "constructor",
		inputs: [
			{
				name: "_trustedForwarder",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "UPGRADE_INTERFACE_VERSION",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "string",
				internalType: "string"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "allowance",
		inputs: [
			{
				name: "owner",
				type: "address",
				internalType: "address"
			},
			{
				name: "spender",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "approve",
		inputs: [
			{
				name: "spender",
				type: "address",
				internalType: "address"
			},
			{
				name: "value",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "balanceOf",
		inputs: [
			{
				name: "account",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "decimals",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "uint8",
				internalType: "uint8"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "initialize",
		inputs: [
			{
				name: "_name",
				type: "string",
				internalType: "string"
			},
			{
				name: "_symbol",
				type: "string",
				internalType: "string"
			},
			{
				name: "_lootboxAddress",
				type: "address",
				internalType: "address"
			},
			{
				name: "_owner",
				type: "address",
				internalType: "address"
			},
			{
				name: "_tf",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "isTrustedForwarder",
		inputs: [
			{
				name: "forwarder",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "lootboxAddress",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "lootboxMint",
		inputs: [
			{
				name: "to",
				type: "address",
				internalType: "address"
			},
			{
				name: "amount",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "mint",
		inputs: [
			{
				name: "to",
				type: "address",
				internalType: "address"
			},
			{
				name: "amount",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "name",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "string",
				internalType: "string"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "owner",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "proxiableUUID",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "bytes32",
				internalType: "bytes32"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "renounceOwnership",
		inputs: [
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "symbol",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "string",
				internalType: "string"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "totalSupply",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "transfer",
		inputs: [
			{
				name: "to",
				type: "address",
				internalType: "address"
			},
			{
				name: "value",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "transferFrom",
		inputs: [
			{
				name: "from",
				type: "address",
				internalType: "address"
			},
			{
				name: "to",
				type: "address",
				internalType: "address"
			},
			{
				name: "value",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "transferOwnership",
		inputs: [
			{
				name: "newOwner",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "trustedForwarder",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "upgradeToAndCall",
		inputs: [
			{
				name: "newImplementation",
				type: "address",
				internalType: "address"
			},
			{
				name: "data",
				type: "bytes",
				internalType: "bytes"
			}
		],
		outputs: [
		],
		stateMutability: "payable"
	},
	{
		type: "event",
		name: "Approval",
		inputs: [
			{
				name: "owner",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "spender",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "value",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Initialized",
		inputs: [
			{
				name: "version",
				type: "uint64",
				indexed: false,
				internalType: "uint64"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "OwnershipTransferred",
		inputs: [
			{
				name: "previousOwner",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "newOwner",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Transfer",
		inputs: [
			{
				name: "from",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "to",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "value",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Upgraded",
		inputs: [
			{
				name: "implementation",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	},
	{
		type: "error",
		name: "AddressEmptyCode",
		inputs: [
			{
				name: "target",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC1967InvalidImplementation",
		inputs: [
			{
				name: "implementation",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC1967NonPayable",
		inputs: [
		]
	},
	{
		type: "error",
		name: "ERC20InsufficientAllowance",
		inputs: [
			{
				name: "spender",
				type: "address",
				internalType: "address"
			},
			{
				name: "allowance",
				type: "uint256",
				internalType: "uint256"
			},
			{
				name: "needed",
				type: "uint256",
				internalType: "uint256"
			}
		]
	},
	{
		type: "error",
		name: "ERC20InsufficientBalance",
		inputs: [
			{
				name: "sender",
				type: "address",
				internalType: "address"
			},
			{
				name: "balance",
				type: "uint256",
				internalType: "uint256"
			},
			{
				name: "needed",
				type: "uint256",
				internalType: "uint256"
			}
		]
	},
	{
		type: "error",
		name: "ERC20InvalidApprover",
		inputs: [
			{
				name: "approver",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC20InvalidReceiver",
		inputs: [
			{
				name: "receiver",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC20InvalidSender",
		inputs: [
			{
				name: "sender",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC20InvalidSpender",
		inputs: [
			{
				name: "spender",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "FailedInnerCall",
		inputs: [
		]
	},
	{
		type: "error",
		name: "InvalidInitialization",
		inputs: [
		]
	},
	{
		type: "error",
		name: "NotInitializing",
		inputs: [
		]
	},
	{
		type: "error",
		name: "OwnableInvalidOwner",
		inputs: [
			{
				name: "owner",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "OwnableUnauthorizedAccount",
		inputs: [
			{
				name: "account",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "UUPSUnauthorizedCallContext",
		inputs: [
		]
	},
	{
		type: "error",
		name: "UUPSUnsupportedProxiableUUID",
		inputs: [
			{
				name: "slot",
				type: "bytes32",
				internalType: "bytes32"
			}
		]
	}
];

var ERC721$1 = [
	{
		type: "constructor",
		inputs: [
			{
				name: "_trustedForwarder",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "UPGRADE_INTERFACE_VERSION",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "string",
				internalType: "string"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "approve",
		inputs: [
			{
				name: "to",
				type: "address",
				internalType: "address"
			},
			{
				name: "tokenId",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "balanceOf",
		inputs: [
			{
				name: "owner",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "baseURI",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "string",
				internalType: "string"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "getApproved",
		inputs: [
			{
				name: "tokenId",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "initialize",
		inputs: [
			{
				name: "_name",
				type: "string",
				internalType: "string"
			},
			{
				name: "_symbol",
				type: "string",
				internalType: "string"
			},
			{
				name: "baseuri",
				type: "string",
				internalType: "string"
			},
			{
				name: "_lootboxAddress",
				type: "address",
				internalType: "address"
			},
			{
				name: "_disallowedTokenIdStart",
				type: "uint256",
				internalType: "uint256"
			},
			{
				name: "_disallowedTokenIdEnd",
				type: "uint256",
				internalType: "uint256"
			},
			{
				name: "_disallowedTokenIds",
				type: "uint256[]",
				internalType: "uint256[]"
			},
			{
				name: "_owner",
				type: "address",
				internalType: "address"
			},
			{
				name: "_tf",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "isApprovedForAll",
		inputs: [
			{
				name: "owner",
				type: "address",
				internalType: "address"
			},
			{
				name: "operator",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "isTokenIdDisallowed",
		inputs: [
			{
				name: "_tokenId",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "isTrustedForwarder",
		inputs: [
			{
				name: "forwarder",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "lootboxAddress",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "lootboxMint",
		inputs: [
			{
				name: "_to",
				type: "address",
				internalType: "address"
			},
			{
				name: "_tokenId",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "mintNFT",
		inputs: [
			{
				name: "_to",
				type: "address",
				internalType: "address"
			},
			{
				name: "_tokenId",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "name",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "string",
				internalType: "string"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "owner",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "ownerOf",
		inputs: [
			{
				name: "tokenId",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "proxiableUUID",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "bytes32",
				internalType: "bytes32"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "renounceOwnership",
		inputs: [
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "safeTransferFrom",
		inputs: [
			{
				name: "from",
				type: "address",
				internalType: "address"
			},
			{
				name: "to",
				type: "address",
				internalType: "address"
			},
			{
				name: "tokenId",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "safeTransferFrom",
		inputs: [
			{
				name: "from",
				type: "address",
				internalType: "address"
			},
			{
				name: "to",
				type: "address",
				internalType: "address"
			},
			{
				name: "tokenId",
				type: "uint256",
				internalType: "uint256"
			},
			{
				name: "data",
				type: "bytes",
				internalType: "bytes"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "setApprovalForAll",
		inputs: [
			{
				name: "operator",
				type: "address",
				internalType: "address"
			},
			{
				name: "approved",
				type: "bool",
				internalType: "bool"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "supportsInterface",
		inputs: [
			{
				name: "interfaceId",
				type: "bytes4",
				internalType: "bytes4"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "symbol",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "string",
				internalType: "string"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "tokenURI",
		inputs: [
			{
				name: "tokenId",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "string",
				internalType: "string"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "transferFrom",
		inputs: [
			{
				name: "from",
				type: "address",
				internalType: "address"
			},
			{
				name: "to",
				type: "address",
				internalType: "address"
			},
			{
				name: "tokenId",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "transferOwnership",
		inputs: [
			{
				name: "newOwner",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "trustedForwarder",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "upgradeToAndCall",
		inputs: [
			{
				name: "newImplementation",
				type: "address",
				internalType: "address"
			},
			{
				name: "data",
				type: "bytes",
				internalType: "bytes"
			}
		],
		outputs: [
		],
		stateMutability: "payable"
	},
	{
		type: "event",
		name: "Approval",
		inputs: [
			{
				name: "owner",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "approved",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenId",
				type: "uint256",
				indexed: true,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "ApprovalForAll",
		inputs: [
			{
				name: "owner",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "operator",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "approved",
				type: "bool",
				indexed: false,
				internalType: "bool"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Initialized",
		inputs: [
			{
				name: "version",
				type: "uint64",
				indexed: false,
				internalType: "uint64"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "OwnershipTransferred",
		inputs: [
			{
				name: "previousOwner",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "newOwner",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Transfer",
		inputs: [
			{
				name: "from",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "to",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenId",
				type: "uint256",
				indexed: true,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Upgraded",
		inputs: [
			{
				name: "implementation",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	},
	{
		type: "error",
		name: "AddressEmptyCode",
		inputs: [
			{
				name: "target",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC1967InvalidImplementation",
		inputs: [
			{
				name: "implementation",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC1967NonPayable",
		inputs: [
		]
	},
	{
		type: "error",
		name: "ERC721IncorrectOwner",
		inputs: [
			{
				name: "sender",
				type: "address",
				internalType: "address"
			},
			{
				name: "tokenId",
				type: "uint256",
				internalType: "uint256"
			},
			{
				name: "owner",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC721InsufficientApproval",
		inputs: [
			{
				name: "operator",
				type: "address",
				internalType: "address"
			},
			{
				name: "tokenId",
				type: "uint256",
				internalType: "uint256"
			}
		]
	},
	{
		type: "error",
		name: "ERC721InvalidApprover",
		inputs: [
			{
				name: "approver",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC721InvalidOperator",
		inputs: [
			{
				name: "operator",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC721InvalidOwner",
		inputs: [
			{
				name: "owner",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC721InvalidReceiver",
		inputs: [
			{
				name: "receiver",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC721InvalidSender",
		inputs: [
			{
				name: "sender",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC721NonexistentToken",
		inputs: [
			{
				name: "tokenId",
				type: "uint256",
				internalType: "uint256"
			}
		]
	},
	{
		type: "error",
		name: "FailedInnerCall",
		inputs: [
		]
	},
	{
		type: "error",
		name: "InvalidInitialization",
		inputs: [
		]
	},
	{
		type: "error",
		name: "NotInitializing",
		inputs: [
		]
	},
	{
		type: "error",
		name: "OwnableInvalidOwner",
		inputs: [
			{
				name: "owner",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "OwnableUnauthorizedAccount",
		inputs: [
			{
				name: "account",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "UUPSUnauthorizedCallContext",
		inputs: [
		]
	},
	{
		type: "error",
		name: "UUPSUnsupportedProxiableUUID",
		inputs: [
			{
				name: "slot",
				type: "bytes32",
				internalType: "bytes32"
			}
		]
	}
];

var ERC1155$1 = [
	{
		type: "constructor",
		inputs: [
			{
				name: "_trustedForwarder",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "UPGRADE_INTERFACE_VERSION",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "string",
				internalType: "string"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "balanceOf",
		inputs: [
			{
				name: "account",
				type: "address",
				internalType: "address"
			},
			{
				name: "id",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "balanceOfBatch",
		inputs: [
			{
				name: "accounts",
				type: "address[]",
				internalType: "address[]"
			},
			{
				name: "ids",
				type: "uint256[]",
				internalType: "uint256[]"
			}
		],
		outputs: [
			{
				name: "",
				type: "uint256[]",
				internalType: "uint256[]"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "baseURI",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "string",
				internalType: "string"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "exists",
		inputs: [
			{
				name: "id",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "initialize",
		inputs: [
			{
				name: "_name",
				type: "string",
				internalType: "string"
			},
			{
				name: "_symbol",
				type: "string",
				internalType: "string"
			},
			{
				name: "_baseuri",
				type: "string",
				internalType: "string"
			},
			{
				name: "_lootboxAddress",
				type: "address",
				internalType: "address"
			},
			{
				name: "_owner",
				type: "address",
				internalType: "address"
			},
			{
				name: "_tf",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "isApprovedForAll",
		inputs: [
			{
				name: "account",
				type: "address",
				internalType: "address"
			},
			{
				name: "operator",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "isTrustedForwarder",
		inputs: [
			{
				name: "forwarder",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "lootboxAddress",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "lootboxMint",
		inputs: [
			{
				name: "account",
				type: "address",
				internalType: "address"
			},
			{
				name: "_tokenId",
				type: "uint256",
				internalType: "uint256"
			},
			{
				name: "amount",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "mintNFT",
		inputs: [
			{
				name: "account",
				type: "address",
				internalType: "address"
			},
			{
				name: "_tokenId",
				type: "uint256",
				internalType: "uint256"
			},
			{
				name: "amount",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "name",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "string",
				internalType: "string"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "owner",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "proxiableUUID",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "bytes32",
				internalType: "bytes32"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "renounceOwnership",
		inputs: [
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "safeBatchTransferFrom",
		inputs: [
			{
				name: "from",
				type: "address",
				internalType: "address"
			},
			{
				name: "to",
				type: "address",
				internalType: "address"
			},
			{
				name: "ids",
				type: "uint256[]",
				internalType: "uint256[]"
			},
			{
				name: "values",
				type: "uint256[]",
				internalType: "uint256[]"
			},
			{
				name: "data",
				type: "bytes",
				internalType: "bytes"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "safeTransferFrom",
		inputs: [
			{
				name: "from",
				type: "address",
				internalType: "address"
			},
			{
				name: "to",
				type: "address",
				internalType: "address"
			},
			{
				name: "id",
				type: "uint256",
				internalType: "uint256"
			},
			{
				name: "value",
				type: "uint256",
				internalType: "uint256"
			},
			{
				name: "data",
				type: "bytes",
				internalType: "bytes"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "setApprovalForAll",
		inputs: [
			{
				name: "operator",
				type: "address",
				internalType: "address"
			},
			{
				name: "approved",
				type: "bool",
				internalType: "bool"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "supportsInterface",
		inputs: [
			{
				name: "interfaceId",
				type: "bytes4",
				internalType: "bytes4"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "symbol",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "string",
				internalType: "string"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "tf",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "totalSupply",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "totalSupply",
		inputs: [
			{
				name: "id",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "transferOwnership",
		inputs: [
			{
				name: "newOwner",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "trustedForwarder",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "upgradeToAndCall",
		inputs: [
			{
				name: "newImplementation",
				type: "address",
				internalType: "address"
			},
			{
				name: "data",
				type: "bytes",
				internalType: "bytes"
			}
		],
		outputs: [
		],
		stateMutability: "payable"
	},
	{
		type: "function",
		name: "uri",
		inputs: [
			{
				name: "_tokenId",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "string",
				internalType: "string"
			}
		],
		stateMutability: "view"
	},
	{
		type: "event",
		name: "ApprovalForAll",
		inputs: [
			{
				name: "account",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "operator",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "approved",
				type: "bool",
				indexed: false,
				internalType: "bool"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Initialized",
		inputs: [
			{
				name: "version",
				type: "uint64",
				indexed: false,
				internalType: "uint64"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "OwnershipTransferred",
		inputs: [
			{
				name: "previousOwner",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "newOwner",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "TransferBatch",
		inputs: [
			{
				name: "operator",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "from",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "to",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "ids",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "values",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "TransferSingle",
		inputs: [
			{
				name: "operator",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "from",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "to",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "id",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			},
			{
				name: "value",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "URI",
		inputs: [
			{
				name: "value",
				type: "string",
				indexed: false,
				internalType: "string"
			},
			{
				name: "id",
				type: "uint256",
				indexed: true,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Upgraded",
		inputs: [
			{
				name: "implementation",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	},
	{
		type: "error",
		name: "AddressEmptyCode",
		inputs: [
			{
				name: "target",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC1155InsufficientBalance",
		inputs: [
			{
				name: "sender",
				type: "address",
				internalType: "address"
			},
			{
				name: "balance",
				type: "uint256",
				internalType: "uint256"
			},
			{
				name: "needed",
				type: "uint256",
				internalType: "uint256"
			},
			{
				name: "tokenId",
				type: "uint256",
				internalType: "uint256"
			}
		]
	},
	{
		type: "error",
		name: "ERC1155InvalidApprover",
		inputs: [
			{
				name: "approver",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC1155InvalidArrayLength",
		inputs: [
			{
				name: "idsLength",
				type: "uint256",
				internalType: "uint256"
			},
			{
				name: "valuesLength",
				type: "uint256",
				internalType: "uint256"
			}
		]
	},
	{
		type: "error",
		name: "ERC1155InvalidOperator",
		inputs: [
			{
				name: "operator",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC1155InvalidReceiver",
		inputs: [
			{
				name: "receiver",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC1155InvalidSender",
		inputs: [
			{
				name: "sender",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC1155MissingApprovalForAll",
		inputs: [
			{
				name: "operator",
				type: "address",
				internalType: "address"
			},
			{
				name: "owner",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC1967InvalidImplementation",
		inputs: [
			{
				name: "implementation",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "ERC1967NonPayable",
		inputs: [
		]
	},
	{
		type: "error",
		name: "FailedInnerCall",
		inputs: [
		]
	},
	{
		type: "error",
		name: "InvalidInitialization",
		inputs: [
		]
	},
	{
		type: "error",
		name: "NotInitializing",
		inputs: [
		]
	},
	{
		type: "error",
		name: "OwnableInvalidOwner",
		inputs: [
			{
				name: "owner",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "OwnableUnauthorizedAccount",
		inputs: [
			{
				name: "account",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "UUPSUnauthorizedCallContext",
		inputs: [
		]
	},
	{
		type: "error",
		name: "UUPSUnsupportedProxiableUUID",
		inputs: [
			{
				name: "slot",
				type: "bytes32",
				internalType: "bytes32"
			}
		]
	}
];

var LootBoxInfo$1 = [
	{
		type: "function",
		name: "active",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "baseURI",
		inputs: [
			{
				name: "addr",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
			{
				name: "",
				type: "string",
				internalType: "string"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "canClaim",
		inputs: [
			{
				name: "_addr",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "chain",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "erc1155_implementation",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "erc20_implementation",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "erc721_implementation",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "getMerkleData",
		inputs: [
			{
				name: "idx",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "bytes32",
				internalType: "bytes32"
			},
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "getRemainingOpensForAddress",
		inputs: [
			{
				name: "_addr",
				type: "address",
				internalType: "address"
			},
			{
				name: "merkleProof",
				type: "bytes32[]",
				internalType: "bytes32[]"
			}
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "getRemainingOpensForAddressAndIdx",
		inputs: [
			{
				name: "_addr",
				type: "address",
				internalType: "address"
			},
			{
				name: "merkleProof",
				type: "bytes32[]",
				internalType: "bytes32[]"
			},
			{
				name: "_idx",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "isCreatedContract",
		inputs: [
			{
				name: "addr",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "isEmpty",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "itemAddresses",
		inputs: [
			{
				name: "idx",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "lootboxCreator",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "lootboxManager",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "lootboxRngRouter",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "multicall",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "openAllowed",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "openerReqIds",
		inputs: [
			{
				name: "_addr",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
			{
				name: "",
				type: "uint256[]",
				internalType: "uint256[]"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "opensForAll",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "permanentlyStopped",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "pickedTokens",
		inputs: [
			{
				name: "_addr",
				type: "address",
				internalType: "address"
			},
			{
				name: "idx",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "tuple",
				internalType: "struct ILootBox.PickedToken",
				components: [
					{
						name: "itemContractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "tokenType",
						type: "uint8",
						internalType: "enum ILootBox.ItemType"
					},
					{
						name: "tokenId",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "tokenAmount",
						type: "uint256",
						internalType: "uint256"
					}
				]
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "ptrERC1155",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "ptrERC20",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "ptrERC721",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "reqIdToRequester",
		inputs: [
			{
				name: "reqId",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "totalMerkleRoots",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "event",
		name: "ItemRemoved",
		inputs: [
			{
				name: "addr",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC1155_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenIdsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "tokenAmountsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC20_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenAmountSent",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC721_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenIdsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "ItemsAdded",
		inputs: [
			{
				name: "erc20Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC20[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "tokenAmount",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			},
			{
				name: "erc721Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC721[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIdRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIds",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "uriBase",
						type: "string",
						internalType: "string"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			},
			{
				name: "erc1155Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC1155[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIdRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenAmountFixed",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "amountPickRangeFixed",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIds",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "inputTokenAmounts",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "amountPickRanges",
						type: "tuple[]",
						internalType: "struct ILootBox.Range[]",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "uriBase",
						type: "string",
						internalType: "string"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxActivated",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxClaimed",
		inputs: [
			{
				name: "claimer",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "pickedTokens",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.PickedToken[]",
				components: [
					{
						name: "itemContractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "tokenType",
						type: "uint8",
						internalType: "enum ILootBox.ItemType"
					},
					{
						name: "tokenId",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "tokenAmount",
						type: "uint256",
						internalType: "uint256"
					}
				]
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxDeactivated",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxOpened",
		inputs: [
			{
				name: "requester",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "requestId",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			},
			{
				name: "rngCount",
				type: "uint8",
				indexed: false,
				internalType: "uint8"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxPermanentlyStoped",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootboxCreated",
		inputs: [
			{
				name: "lootbox",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "creator",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "active",
				type: "bool",
				indexed: true,
				internalType: "bool"
			},
			{
				name: "trustedForwarder",
				type: "address",
				indexed: false,
				internalType: "address"
			},
			{
				name: "merkleRoots",
				type: "bytes32[]",
				indexed: false,
				internalType: "bytes32[]"
			},
			{
				name: "opens",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "globalOpens",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "OpensReconfigured",
		inputs: [
			{
				name: "merkleRoots",
				type: "bytes32[]",
				indexed: false,
				internalType: "bytes32[]"
			},
			{
				name: "opens",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "globalOpens",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "RngReceived",
		inputs: [
			{
				name: "requestId",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			},
			{
				name: "requester",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "rngList",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "TrustedForwarderChanged",
		inputs: [
			{
				name: "oldTrustedForwarder",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "newTrustedForwarder",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	}
];

var LootBoxController$1 = [
	{
		type: "function",
		name: "activate",
		inputs: [
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "adjustTrees",
		inputs: [
			{
				name: "_roots",
				type: "bytes32[]",
				internalType: "bytes32[]"
			},
			{
				name: "_opens",
				type: "uint256[]",
				internalType: "uint256[]"
			},
			{
				name: "_globalOpens",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "deactivate",
		inputs: [
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "removeItem",
		inputs: [
			{
				name: "addr",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "stopLootBoxPermanently",
		inputs: [
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "event",
		name: "ItemRemoved",
		inputs: [
			{
				name: "addr",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC1155_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenIdsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "tokenAmountsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC20_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenAmountSent",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC721_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenIdsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "ItemsAdded",
		inputs: [
			{
				name: "erc20Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC20[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "tokenAmount",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			},
			{
				name: "erc721Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC721[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIdRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIds",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "uriBase",
						type: "string",
						internalType: "string"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			},
			{
				name: "erc1155Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC1155[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIdRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenAmountFixed",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "amountPickRangeFixed",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIds",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "inputTokenAmounts",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "amountPickRanges",
						type: "tuple[]",
						internalType: "struct ILootBox.Range[]",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "uriBase",
						type: "string",
						internalType: "string"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxActivated",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxClaimed",
		inputs: [
			{
				name: "claimer",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "pickedTokens",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.PickedToken[]",
				components: [
					{
						name: "itemContractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "tokenType",
						type: "uint8",
						internalType: "enum ILootBox.ItemType"
					},
					{
						name: "tokenId",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "tokenAmount",
						type: "uint256",
						internalType: "uint256"
					}
				]
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxDeactivated",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxOpened",
		inputs: [
			{
				name: "requester",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "requestId",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			},
			{
				name: "rngCount",
				type: "uint8",
				indexed: false,
				internalType: "uint8"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxPermanentlyStoped",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootboxCreated",
		inputs: [
			{
				name: "lootbox",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "creator",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "active",
				type: "bool",
				indexed: true,
				internalType: "bool"
			},
			{
				name: "trustedForwarder",
				type: "address",
				indexed: false,
				internalType: "address"
			},
			{
				name: "merkleRoots",
				type: "bytes32[]",
				indexed: false,
				internalType: "bytes32[]"
			},
			{
				name: "opens",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "globalOpens",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "OpensReconfigured",
		inputs: [
			{
				name: "merkleRoots",
				type: "bytes32[]",
				indexed: false,
				internalType: "bytes32[]"
			},
			{
				name: "opens",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "globalOpens",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "RngReceived",
		inputs: [
			{
				name: "requestId",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			},
			{
				name: "requester",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "rngList",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "TrustedForwarderChanged",
		inputs: [
			{
				name: "oldTrustedForwarder",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "newTrustedForwarder",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	}
];

var LootBoxERC2771$1 = [
	{
		type: "function",
		name: "changeTrustedForwarder",
		inputs: [
			{
				name: "_trustedForwarder",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "isTrustedForwarder",
		inputs: [
			{
				name: "forwarder",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "trustedForwarder",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "event",
		name: "ItemRemoved",
		inputs: [
			{
				name: "addr",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC1155_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenIdsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "tokenAmountsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC20_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenAmountSent",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC721_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenIdsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "ItemsAdded",
		inputs: [
			{
				name: "erc20Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC20[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "tokenAmount",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			},
			{
				name: "erc721Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC721[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIdRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIds",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "uriBase",
						type: "string",
						internalType: "string"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			},
			{
				name: "erc1155Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC1155[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIdRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenAmountFixed",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "amountPickRangeFixed",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIds",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "inputTokenAmounts",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "amountPickRanges",
						type: "tuple[]",
						internalType: "struct ILootBox.Range[]",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "uriBase",
						type: "string",
						internalType: "string"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxActivated",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxClaimed",
		inputs: [
			{
				name: "claimer",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "pickedTokens",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.PickedToken[]",
				components: [
					{
						name: "itemContractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "tokenType",
						type: "uint8",
						internalType: "enum ILootBox.ItemType"
					},
					{
						name: "tokenId",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "tokenAmount",
						type: "uint256",
						internalType: "uint256"
					}
				]
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxDeactivated",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxOpened",
		inputs: [
			{
				name: "requester",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "requestId",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			},
			{
				name: "rngCount",
				type: "uint8",
				indexed: false,
				internalType: "uint8"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxPermanentlyStoped",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootboxCreated",
		inputs: [
			{
				name: "lootbox",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "creator",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "active",
				type: "bool",
				indexed: true,
				internalType: "bool"
			},
			{
				name: "trustedForwarder",
				type: "address",
				indexed: false,
				internalType: "address"
			},
			{
				name: "merkleRoots",
				type: "bytes32[]",
				indexed: false,
				internalType: "bytes32[]"
			},
			{
				name: "opens",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "globalOpens",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "OpensReconfigured",
		inputs: [
			{
				name: "merkleRoots",
				type: "bytes32[]",
				indexed: false,
				internalType: "bytes32[]"
			},
			{
				name: "opens",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "globalOpens",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "RngReceived",
		inputs: [
			{
				name: "requestId",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			},
			{
				name: "requester",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "rngList",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "TrustedForwarderChanged",
		inputs: [
			{
				name: "oldTrustedForwarder",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "newTrustedForwarder",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	}
];

var LootBoxOwnership$1 = [
	{
		type: "function",
		name: "owner",
		inputs: [
		],
		outputs: [
			{
				name: "owner_",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "transferOwnership",
		inputs: [
			{
				name: "_newOwner",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "event",
		name: "OwnershipTransferred",
		inputs: [
			{
				name: "previousOwner",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "newOwner",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	}
];

var LootBoxInteraction$1 = [
	{
		type: "function",
		name: "claimRewards",
		inputs: [
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "claimRewardsPartially",
		inputs: [
			{
				name: "_maxRewardsToClaim",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "openLootBox",
		inputs: [
			{
				name: "merkleProof",
				type: "bytes32[]",
				internalType: "bytes32[]"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "openLootBoxWithIdx",
		inputs: [
			{
				name: "merkleProof",
				type: "bytes32[]",
				internalType: "bytes32[]"
			},
			{
				name: "_idx",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "event",
		name: "ItemRemoved",
		inputs: [
			{
				name: "addr",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC1155_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenIdsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "tokenAmountsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC20_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenAmountSent",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC721_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenIdsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "ItemsAdded",
		inputs: [
			{
				name: "erc20Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC20[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "tokenAmount",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			},
			{
				name: "erc721Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC721[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIdRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIds",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "uriBase",
						type: "string",
						internalType: "string"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			},
			{
				name: "erc1155Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC1155[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIdRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenAmountFixed",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "amountPickRangeFixed",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIds",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "inputTokenAmounts",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "amountPickRanges",
						type: "tuple[]",
						internalType: "struct ILootBox.Range[]",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "uriBase",
						type: "string",
						internalType: "string"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxActivated",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxClaimed",
		inputs: [
			{
				name: "claimer",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "pickedTokens",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.PickedToken[]",
				components: [
					{
						name: "itemContractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "tokenType",
						type: "uint8",
						internalType: "enum ILootBox.ItemType"
					},
					{
						name: "tokenId",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "tokenAmount",
						type: "uint256",
						internalType: "uint256"
					}
				]
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxDeactivated",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxOpened",
		inputs: [
			{
				name: "requester",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "requestId",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			},
			{
				name: "rngCount",
				type: "uint8",
				indexed: false,
				internalType: "uint8"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxPermanentlyStoped",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootboxCreated",
		inputs: [
			{
				name: "lootbox",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "creator",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "active",
				type: "bool",
				indexed: true,
				internalType: "bool"
			},
			{
				name: "trustedForwarder",
				type: "address",
				indexed: false,
				internalType: "address"
			},
			{
				name: "merkleRoots",
				type: "bytes32[]",
				indexed: false,
				internalType: "bytes32[]"
			},
			{
				name: "opens",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "globalOpens",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "OpensReconfigured",
		inputs: [
			{
				name: "merkleRoots",
				type: "bytes32[]",
				indexed: false,
				internalType: "bytes32[]"
			},
			{
				name: "opens",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "globalOpens",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "RngReceived",
		inputs: [
			{
				name: "requestId",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			},
			{
				name: "requester",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "rngList",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "TrustedForwarderChanged",
		inputs: [
			{
				name: "oldTrustedForwarder",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "newTrustedForwarder",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	}
];

var LootBoxManager$1 = [
	{
		type: "constructor",
		inputs: [
			{
				name: "_erc20_impl",
				type: "address",
				internalType: "address"
			},
			{
				name: "_erc721_impl",
				type: "address",
				internalType: "address"
			},
			{
				name: "_erc1155_impl",
				type: "address",
				internalType: "address"
			},
			{
				name: "_multicall",
				type: "address",
				internalType: "address"
			},
			{
				name: "_rngRouter",
				type: "address",
				internalType: "address"
			},
			{
				name: "_tokenCallbackHandler_impl",
				type: "address",
				internalType: "address"
			},
			{
				name: "_ownership_impl",
				type: "address",
				internalType: "address"
			},
			{
				name: "_erc2771_impl",
				type: "address",
				internalType: "address"
			},
			{
				name: "_rngProcessor_impl",
				type: "address",
				internalType: "address"
			},
			{
				name: "_lootBoxInteraction_impl",
				type: "address",
				internalType: "address"
			},
			{
				name: "_lootBoxController_impl",
				type: "address",
				internalType: "address"
			},
			{
				name: "_lootBoxInfo_impl",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "IID_IERC1155",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "bytes4",
				internalType: "bytes4"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "IID_IERC721",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "bytes4",
				internalType: "bytes4"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "createLootbox",
		inputs: [
			{
				name: "_erc20Items",
				type: "tuple[]",
				internalType: "struct ILootBox.Item_ERC20[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "distributions",
						type: "tuple[]",
						internalType: "struct ILootBox.Item_ERC20_Distribution[]",
						components: [
							{
								name: "amount",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "chance",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "tokenAmount",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			},
			{
				name: "_erc721Items",
				type: "tuple[]",
				internalType: "struct ILootBox.Item_ERC721[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIdRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIds",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "uriBase",
						type: "string",
						internalType: "string"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			},
			{
				name: "_erc1155Items",
				type: "tuple[]",
				internalType: "struct ILootBox.Item_ERC1155[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIdRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenAmountFixed",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "amountPickRangeFixed",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIds",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "inputTokenAmounts",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "amountPickRanges",
						type: "tuple[]",
						internalType: "struct ILootBox.Range[]",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "uriBase",
						type: "string",
						internalType: "string"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			},
			{
				name: "_trustedForwarder",
				type: "address",
				internalType: "address"
			},
			{
				name: "_active",
				type: "bool",
				internalType: "bool"
			},
			{
				name: "_roots",
				type: "bytes32[]",
				internalType: "bytes32[]"
			},
			{
				name: "_opens",
				type: "uint256[]",
				internalType: "uint256[]"
			},
			{
				name: "_globalOpens",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "erc1155",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "erc20",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "erc721",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "facets",
		inputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "functionSelectors",
		inputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			},
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "bytes4",
				internalType: "bytes4"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "isERC1155",
		inputs: [
			{
				name: "nftAddress",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "isERC721",
		inputs: [
			{
				name: "nftAddress",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "isValidLootbox",
		inputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "multicall",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "contract LootBoxMulticall"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "owner",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "renounceOwnership",
		inputs: [
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "rngRouter",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "contract LootBoxRngRouter"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "transferOwnership",
		inputs: [
			{
				name: "newOwner",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "userLootboxes",
		inputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			},
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "event",
		name: "ItemRemoved",
		inputs: [
			{
				name: "addr",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC1155_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenIdsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "tokenAmountsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC20_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenAmountSent",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC721_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenIdsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "ItemsAdded",
		inputs: [
			{
				name: "erc20Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC20[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "distributions",
						type: "tuple[]",
						internalType: "struct ILootBox.Item_ERC20_Distribution[]",
						components: [
							{
								name: "amount",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "chance",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "tokenAmount",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			},
			{
				name: "erc721Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC721[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIdRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIds",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "uriBase",
						type: "string",
						internalType: "string"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			},
			{
				name: "erc1155Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC1155[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIdRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenAmountFixed",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "amountPickRangeFixed",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIds",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "inputTokenAmounts",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "amountPickRanges",
						type: "tuple[]",
						internalType: "struct ILootBox.Range[]",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "uriBase",
						type: "string",
						internalType: "string"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxActivated",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxClaimed",
		inputs: [
			{
				name: "claimer",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "pickedTokens",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.PickedToken[]",
				components: [
					{
						name: "itemContractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "tokenType",
						type: "uint8",
						internalType: "enum ILootBox.ItemType"
					},
					{
						name: "tokenId",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "tokenAmount",
						type: "uint256",
						internalType: "uint256"
					}
				]
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxDeactivated",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxOpened",
		inputs: [
			{
				name: "requester",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "requestId",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			},
			{
				name: "rngCount",
				type: "uint8",
				indexed: false,
				internalType: "uint8"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxPermanentlyStoped",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootboxCreated",
		inputs: [
			{
				name: "lootbox",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "creator",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "active",
				type: "bool",
				indexed: true,
				internalType: "bool"
			},
			{
				name: "trustedForwarder",
				type: "address",
				indexed: false,
				internalType: "address"
			},
			{
				name: "merkleRoots",
				type: "bytes32[]",
				indexed: false,
				internalType: "bytes32[]"
			},
			{
				name: "opens",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "globalOpens",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "OpensReconfigured",
		inputs: [
			{
				name: "merkleRoots",
				type: "bytes32[]",
				indexed: false,
				internalType: "bytes32[]"
			},
			{
				name: "opens",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "globalOpens",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "OwnershipTransferred",
		inputs: [
			{
				name: "previousOwner",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "newOwner",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "RngReceived",
		inputs: [
			{
				name: "requestId",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			},
			{
				name: "requester",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "rngList",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "TrustedForwarderChanged",
		inputs: [
			{
				name: "oldTrustedForwarder",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "newTrustedForwarder",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	},
	{
		type: "error",
		name: "OwnableInvalidOwner",
		inputs: [
			{
				name: "owner",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "OwnableUnauthorizedAccount",
		inputs: [
			{
				name: "account",
				type: "address",
				internalType: "address"
			}
		]
	}
];

var LootBoxMulticall$1 = [
	{
		type: "constructor",
		inputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "addTrustedForwarder",
		inputs: [
			{
				name: "forwarder",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "claimMulticall",
		inputs: [
			{
				name: "lbs",
				type: "tuple[]",
				internalType: "struct LootBoxMulticall.LootBoxClaimCall[]",
				components: [
					{
						name: "lb",
						type: "address",
						internalType: "address"
					}
				]
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "claimPartiallyMulticall",
		inputs: [
			{
				name: "lbs",
				type: "tuple[]",
				internalType: "struct LootBoxMulticall.LootBoxClaimCallPartial[]",
				components: [
					{
						name: "lb",
						type: "address",
						internalType: "address"
					},
					{
						name: "maxRewardsToClaim",
						type: "uint256",
						internalType: "uint256"
					}
				]
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "initialize",
		inputs: [
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "initialized",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "isTrustedForwarder",
		inputs: [
			{
				name: "forwarder",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "lootboxManager",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "contract LootBoxManager"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "openMulticall",
		inputs: [
			{
				name: "lbs",
				type: "tuple[]",
				internalType: "struct LootBoxMulticall.LootBoxOpenCall[]",
				components: [
					{
						name: "lb",
						type: "address",
						internalType: "address"
					},
					{
						name: "merkleProof",
						type: "bytes32[]",
						internalType: "bytes32[]"
					}
				]
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "openWithIdxMulticall",
		inputs: [
			{
				name: "lbs",
				type: "tuple[]",
				internalType: "struct LootBoxMulticall.LootBoxOpenCallWithIdx[]",
				components: [
					{
						name: "lb",
						type: "address",
						internalType: "address"
					},
					{
						name: "merkleProof",
						type: "bytes32[]",
						internalType: "bytes32[]"
					},
					{
						name: "idx",
						type: "uint256",
						internalType: "uint256"
					}
				]
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "removeTrustedForwarder",
		inputs: [
			{
				name: "forwarder",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "trustedForwarder",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "event",
		name: "ItemRemoved",
		inputs: [
			{
				name: "addr",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC1155_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenIdsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "tokenAmountsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC20_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenAmountSent",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC721_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenIdsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "ItemsAdded",
		inputs: [
			{
				name: "erc20Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC20[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "tokenAmount",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			},
			{
				name: "erc721Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC721[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIdRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIds",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "uriBase",
						type: "string",
						internalType: "string"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			},
			{
				name: "erc1155Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC1155[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIdRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenAmountFixed",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "amountPickRangeFixed",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIds",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "inputTokenAmounts",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "amountPickRanges",
						type: "tuple[]",
						internalType: "struct ILootBox.Range[]",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "uriBase",
						type: "string",
						internalType: "string"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxActivated",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxClaimed",
		inputs: [
			{
				name: "claimer",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "pickedTokens",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.PickedToken[]",
				components: [
					{
						name: "itemContractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "tokenType",
						type: "uint8",
						internalType: "enum ILootBox.ItemType"
					},
					{
						name: "tokenId",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "tokenAmount",
						type: "uint256",
						internalType: "uint256"
					}
				]
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxDeactivated",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxOpened",
		inputs: [
			{
				name: "requester",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "requestId",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			},
			{
				name: "rngCount",
				type: "uint8",
				indexed: false,
				internalType: "uint8"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxPermanentlyStoped",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootboxCreated",
		inputs: [
			{
				name: "lootbox",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "creator",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "active",
				type: "bool",
				indexed: true,
				internalType: "bool"
			},
			{
				name: "trustedForwarder",
				type: "address",
				indexed: false,
				internalType: "address"
			},
			{
				name: "merkleRoots",
				type: "bytes32[]",
				indexed: false,
				internalType: "bytes32[]"
			},
			{
				name: "opens",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "globalOpens",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "OpensReconfigured",
		inputs: [
			{
				name: "merkleRoots",
				type: "bytes32[]",
				indexed: false,
				internalType: "bytes32[]"
			},
			{
				name: "opens",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "globalOpens",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "RngReceived",
		inputs: [
			{
				name: "requestId",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			},
			{
				name: "requester",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "rngList",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "TrustedForwarderChanged",
		inputs: [
			{
				name: "oldTrustedForwarder",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "newTrustedForwarder",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	}
];

var LootBoxRngRouter$1 = [
	{
		type: "constructor",
		inputs: [
			{
				name: "_supraRouter",
				type: "address",
				internalType: "address"
			},
			{
				name: "_supraClient",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "activateContract",
		inputs: [
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "active",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "chainId",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "deactivateContract",
		inputs: [
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "getRngRequestInfo",
		inputs: [
			{
				name: "requestId",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "info",
				type: "tuple",
				internalType: "struct ILootBox.RngRequest",
				components: [
					{
						name: "lootBox",
						type: "address",
						internalType: "address"
					},
					{
						name: "status",
						type: "uint8",
						internalType: "enum ILootBox.RngRequestStatus"
					},
					{
						name: "requestTimestamp",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "requestId",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "supraNonce",
						type: "uint256",
						internalType: "uint256"
					}
				]
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "getRngRequestStatus",
		inputs: [
			{
				name: "requestId",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "uint8",
				internalType: "enum ILootBox.RngRequestStatus"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "initialize",
		inputs: [
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "initialized",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "bool",
				internalType: "bool"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "lootBoxManager",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "contract LootBoxManager"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "owner",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "renounceOwnership",
		inputs: [
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "requestRng",
		inputs: [
			{
				name: "rngCount",
				type: "uint8",
				internalType: "uint8"
			}
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "routeRng",
		inputs: [
			{
				name: "supraNonce",
				type: "uint256",
				internalType: "uint256"
			},
			{
				name: "_rngs",
				type: "uint256[]",
				internalType: "uint256[]"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "function",
		name: "supraClient",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "supraNonceToRequestId",
		inputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "supraRouter",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "address",
				internalType: "address"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "timeout",
		inputs: [
		],
		outputs: [
			{
				name: "",
				type: "uint256",
				internalType: "uint256"
			}
		],
		stateMutability: "view"
	},
	{
		type: "function",
		name: "transferOwnership",
		inputs: [
			{
				name: "newOwner",
				type: "address",
				internalType: "address"
			}
		],
		outputs: [
		],
		stateMutability: "nonpayable"
	},
	{
		type: "event",
		name: "ItemRemoved",
		inputs: [
			{
				name: "addr",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC1155_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenIdsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "tokenAmountsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC20_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenAmountSent",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "Item_ERC721_Updated",
		inputs: [
			{
				name: "contractAddress",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenReceiver",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "tokenIdsSent",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "ItemsAdded",
		inputs: [
			{
				name: "erc20Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC20[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "tokenAmount",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			},
			{
				name: "erc721Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC721[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIdRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIds",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "uriBase",
						type: "string",
						internalType: "string"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			},
			{
				name: "erc1155Items",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.Item_ERC1155[]",
				components: [
					{
						name: "contractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "pickRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIdRange",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenAmountFixed",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "amountPickRangeFixed",
						type: "tuple",
						internalType: "struct ILootBox.Range",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "inputTokenIds",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "inputTokenAmounts",
						type: "uint256[]",
						internalType: "uint256[]"
					},
					{
						name: "amountPickRanges",
						type: "tuple[]",
						internalType: "struct ILootBox.Range[]",
						components: [
							{
								name: "start",
								type: "uint256",
								internalType: "uint256"
							},
							{
								name: "end",
								type: "uint256",
								internalType: "uint256"
							}
						]
					},
					{
						name: "uriBase",
						type: "string",
						internalType: "string"
					},
					{
						name: "name",
						type: "string",
						internalType: "string"
					},
					{
						name: "symbol",
						type: "string",
						internalType: "string"
					}
				]
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxActivated",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxClaimed",
		inputs: [
			{
				name: "claimer",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "pickedTokens",
				type: "tuple[]",
				indexed: false,
				internalType: "struct ILootBox.PickedToken[]",
				components: [
					{
						name: "itemContractAddress",
						type: "address",
						internalType: "address"
					},
					{
						name: "tokenType",
						type: "uint8",
						internalType: "enum ILootBox.ItemType"
					},
					{
						name: "tokenId",
						type: "uint256",
						internalType: "uint256"
					},
					{
						name: "tokenAmount",
						type: "uint256",
						internalType: "uint256"
					}
				]
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxDeactivated",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxOpened",
		inputs: [
			{
				name: "requester",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "requestId",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			},
			{
				name: "rngCount",
				type: "uint8",
				indexed: false,
				internalType: "uint8"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxPermanentlyStoped",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxRngRouterActivated",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxRngRouterConfigured",
		inputs: [
			{
				name: "lootBoxManager",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "supraRouter",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "supraClient",
				type: "address",
				indexed: false,
				internalType: "address"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootBoxRngRouterDeactivated",
		inputs: [
		],
		anonymous: false
	},
	{
		type: "event",
		name: "LootboxCreated",
		inputs: [
			{
				name: "lootbox",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "creator",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "active",
				type: "bool",
				indexed: true,
				internalType: "bool"
			},
			{
				name: "trustedForwarder",
				type: "address",
				indexed: false,
				internalType: "address"
			},
			{
				name: "merkleRoots",
				type: "bytes32[]",
				indexed: false,
				internalType: "bytes32[]"
			},
			{
				name: "opens",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "globalOpens",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "OpensReconfigured",
		inputs: [
			{
				name: "merkleRoots",
				type: "bytes32[]",
				indexed: false,
				internalType: "bytes32[]"
			},
			{
				name: "opens",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			},
			{
				name: "globalOpens",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "OwnershipTransferred",
		inputs: [
			{
				name: "previousOwner",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "newOwner",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "RngReceived",
		inputs: [
			{
				name: "requestId",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			},
			{
				name: "requester",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "rngList",
				type: "uint256[]",
				indexed: false,
				internalType: "uint256[]"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "RngRequested",
		inputs: [
			{
				name: "requestId",
				type: "uint256",
				indexed: true,
				internalType: "uint256"
			},
			{
				name: "lootBox",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "supraNonce",
				type: "uint256",
				indexed: true,
				internalType: "uint256"
			},
			{
				name: "requestTimestamp",
				type: "uint256",
				indexed: false,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "RngRouted",
		inputs: [
			{
				name: "requestId",
				type: "uint256",
				indexed: true,
				internalType: "uint256"
			},
			{
				name: "lootBox",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "supraNonce",
				type: "uint256",
				indexed: true,
				internalType: "uint256"
			}
		],
		anonymous: false
	},
	{
		type: "event",
		name: "TrustedForwarderChanged",
		inputs: [
			{
				name: "oldTrustedForwarder",
				type: "address",
				indexed: true,
				internalType: "address"
			},
			{
				name: "newTrustedForwarder",
				type: "address",
				indexed: true,
				internalType: "address"
			}
		],
		anonymous: false
	},
	{
		type: "error",
		name: "InvalidLootBox",
		inputs: [
			{
				name: "lootBox",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "LootBoxRngRouterNotActive",
		inputs: [
		]
	},
	{
		type: "error",
		name: "OwnableInvalidOwner",
		inputs: [
			{
				name: "owner",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "OwnableUnauthorizedAccount",
		inputs: [
			{
				name: "account",
				type: "address",
				internalType: "address"
			}
		]
	},
	{
		type: "error",
		name: "RngRequestInvalidStatus",
		inputs: [
			{
				name: "requestId",
				type: "uint256",
				internalType: "uint256"
			},
			{
				name: "status",
				type: "uint8",
				internalType: "enum ILootBox.RngRequestStatus"
			},
			{
				name: "expectedStatus",
				type: "uint8",
				internalType: "enum ILootBox.RngRequestStatus"
			}
		]
	},
	{
		type: "error",
		name: "UnauthorizedCaller",
		inputs: [
			{
				name: "unauthorizedCaller",
				type: "address",
				internalType: "address"
			},
			{
				name: "expectedCaller",
				type: "address",
				internalType: "address"
			}
		]
	}
];

declare enum ChainIdentifier {
    POLYGON_AMOY = "POLYGON_AMOY",
    BASE_SEPOLIA = "BASE_SEPOLIA",
    RONIN_MAINNET = "RONIN_MAINNET",
    RONIN_SAIGON = "RONIN_SAIGON"
}

interface TypedEvent<TArgsArray extends Array<any> = any, TArgsObject = any> extends Event {
    args: TArgsArray & TArgsObject;
}
interface TypedEventFilter<_TEvent extends TypedEvent> extends EventFilter {
}
interface TypedListener<TEvent extends TypedEvent> {
    (...listenerArg: [...__TypechainArgsArray<TEvent>, TEvent]): void;
}
type __TypechainArgsArray<T> = T extends TypedEvent<infer U> ? U : never;
interface OnEvent<TRes> {
    <TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>, listener: TypedListener<TEvent>): TRes;
    (eventName: string, listener: Listener): TRes;
}

declare namespace ILootBox$7 {
    type RangeStruct = {
        start: BigNumberish;
        end: BigNumberish;
    };
    type RangeStructOutput = [BigNumber, BigNumber] & {
        start: BigNumber;
        end: BigNumber;
    };
    type Item_ERC20Struct = {
        contractAddress: string;
        pickRange: ILootBox$7.RangeStruct;
        tokenAmount: BigNumberish;
        name: string;
        symbol: string;
    };
    type Item_ERC20StructOutput = [
        string,
        ILootBox$7.RangeStructOutput,
        BigNumber,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$7.RangeStructOutput;
        tokenAmount: BigNumber;
        name: string;
        symbol: string;
    };
    type Item_ERC721Struct = {
        contractAddress: string;
        pickRange: ILootBox$7.RangeStruct;
        inputTokenIdRange: ILootBox$7.RangeStruct;
        inputTokenIds: BigNumberish[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC721StructOutput = [
        string,
        ILootBox$7.RangeStructOutput,
        ILootBox$7.RangeStructOutput,
        BigNumber[],
        string,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$7.RangeStructOutput;
        inputTokenIdRange: ILootBox$7.RangeStructOutput;
        inputTokenIds: BigNumber[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC1155Struct = {
        contractAddress: string;
        pickRange: ILootBox$7.RangeStruct;
        inputTokenIdRange: ILootBox$7.RangeStruct;
        inputTokenAmountFixed: BigNumberish;
        amountPickRangeFixed: ILootBox$7.RangeStruct;
        inputTokenIds: BigNumberish[];
        inputTokenAmounts: BigNumberish[];
        amountPickRanges: ILootBox$7.RangeStruct[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC1155StructOutput = [
        string,
        ILootBox$7.RangeStructOutput,
        ILootBox$7.RangeStructOutput,
        BigNumber,
        ILootBox$7.RangeStructOutput,
        BigNumber[],
        BigNumber[],
        ILootBox$7.RangeStructOutput[],
        string,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$7.RangeStructOutput;
        inputTokenIdRange: ILootBox$7.RangeStructOutput;
        inputTokenAmountFixed: BigNumber;
        amountPickRangeFixed: ILootBox$7.RangeStructOutput;
        inputTokenIds: BigNumber[];
        inputTokenAmounts: BigNumber[];
        amountPickRanges: ILootBox$7.RangeStructOutput[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type PickedTokenStruct = {
        itemContractAddress: string;
        tokenType: BigNumberish;
        tokenId: BigNumberish;
        tokenAmount: BigNumberish;
    };
    type PickedTokenStructOutput = [
        string,
        number,
        BigNumber,
        BigNumber
    ] & {
        itemContractAddress: string;
        tokenType: number;
        tokenId: BigNumber;
        tokenAmount: BigNumber;
    };
}
interface LootBoxControllerInterface extends utils.Interface {
    functions: {
        "activate()": FunctionFragment;
        "adjustTrees(bytes32[],uint256[],uint256)": FunctionFragment;
        "deactivate()": FunctionFragment;
        "removeItem(address)": FunctionFragment;
        "stopLootBoxPermanently()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "activate" | "adjustTrees" | "deactivate" | "removeItem" | "stopLootBoxPermanently"): FunctionFragment;
    encodeFunctionData(functionFragment: "activate", values?: undefined): string;
    encodeFunctionData(functionFragment: "adjustTrees", values: [BytesLike[], BigNumberish[], BigNumberish]): string;
    encodeFunctionData(functionFragment: "deactivate", values?: undefined): string;
    encodeFunctionData(functionFragment: "removeItem", values: [string]): string;
    encodeFunctionData(functionFragment: "stopLootBoxPermanently", values?: undefined): string;
    decodeFunctionResult(functionFragment: "activate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "adjustTrees", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "deactivate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "removeItem", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stopLootBoxPermanently", data: BytesLike): Result;
    events: {
        "ItemRemoved(address)": EventFragment;
        "Item_ERC1155_Updated(address,address,uint256[],uint256[])": EventFragment;
        "Item_ERC20_Updated(address,address,uint256)": EventFragment;
        "Item_ERC721_Updated(address,address,uint256[])": EventFragment;
        "ItemsAdded((address,(uint256,uint256),uint256,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256[],string,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256,(uint256,uint256),uint256[],uint256[],(uint256,uint256)[],string,string,string)[])": EventFragment;
        "LootBoxActivated()": EventFragment;
        "LootBoxClaimed(address,(address,uint8,uint256,uint256)[])": EventFragment;
        "LootBoxDeactivated()": EventFragment;
        "LootBoxOpened(address,uint256,uint8)": EventFragment;
        "LootBoxPermanentlyStoped()": EventFragment;
        "LootboxCreated(address,address,bool,address,bytes32[],uint256[],uint256)": EventFragment;
        "OpensReconfigured(bytes32[],uint256[],uint256)": EventFragment;
        "RngReceived(uint256,address,uint256[])": EventFragment;
        "TrustedForwarderChanged(address,address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "ItemRemoved"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC1155_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC20_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC721_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ItemsAdded"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxActivated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxClaimed"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxDeactivated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxOpened"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxPermanentlyStoped"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootboxCreated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OpensReconfigured"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RngReceived"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TrustedForwarderChanged"): EventFragment;
}
interface ItemRemovedEventObject$7 {
    addr: string;
}
type ItemRemovedEvent$7 = TypedEvent<[string], ItemRemovedEventObject$7>;
type ItemRemovedEventFilter$7 = TypedEventFilter<ItemRemovedEvent$7>;
interface Item_ERC1155_UpdatedEventObject$7 {
    contractAddress: string;
    tokenReceiver: string;
    tokenIdsSent: BigNumber[];
    tokenAmountsSent: BigNumber[];
}
type Item_ERC1155_UpdatedEvent$7 = TypedEvent<[
    string,
    string,
    BigNumber[],
    BigNumber[]
], Item_ERC1155_UpdatedEventObject$7>;
type Item_ERC1155_UpdatedEventFilter$7 = TypedEventFilter<Item_ERC1155_UpdatedEvent$7>;
interface Item_ERC20_UpdatedEventObject$7 {
    contractAddress: string;
    tokenReceiver: string;
    tokenAmountSent: BigNumber;
}
type Item_ERC20_UpdatedEvent$7 = TypedEvent<[
    string,
    string,
    BigNumber
], Item_ERC20_UpdatedEventObject$7>;
type Item_ERC20_UpdatedEventFilter$7 = TypedEventFilter<Item_ERC20_UpdatedEvent$7>;
interface Item_ERC721_UpdatedEventObject$7 {
    contractAddress: string;
    tokenReceiver: string;
    tokenIdsSent: BigNumber[];
}
type Item_ERC721_UpdatedEvent$7 = TypedEvent<[
    string,
    string,
    BigNumber[]
], Item_ERC721_UpdatedEventObject$7>;
type Item_ERC721_UpdatedEventFilter$7 = TypedEventFilter<Item_ERC721_UpdatedEvent$7>;
interface ItemsAddedEventObject$7 {
    erc20Items: ILootBox$7.Item_ERC20StructOutput[];
    erc721Items: ILootBox$7.Item_ERC721StructOutput[];
    erc1155Items: ILootBox$7.Item_ERC1155StructOutput[];
}
type ItemsAddedEvent$7 = TypedEvent<[
    ILootBox$7.Item_ERC20StructOutput[],
    ILootBox$7.Item_ERC721StructOutput[],
    ILootBox$7.Item_ERC1155StructOutput[]
], ItemsAddedEventObject$7>;
type ItemsAddedEventFilter$7 = TypedEventFilter<ItemsAddedEvent$7>;
interface LootBoxActivatedEventObject$7 {
}
type LootBoxActivatedEvent$7 = TypedEvent<[], LootBoxActivatedEventObject$7>;
type LootBoxActivatedEventFilter$7 = TypedEventFilter<LootBoxActivatedEvent$7>;
interface LootBoxClaimedEventObject$7 {
    claimer: string;
    pickedTokens: ILootBox$7.PickedTokenStructOutput[];
}
type LootBoxClaimedEvent$7 = TypedEvent<[
    string,
    ILootBox$7.PickedTokenStructOutput[]
], LootBoxClaimedEventObject$7>;
type LootBoxClaimedEventFilter$7 = TypedEventFilter<LootBoxClaimedEvent$7>;
interface LootBoxDeactivatedEventObject$7 {
}
type LootBoxDeactivatedEvent$7 = TypedEvent<[
], LootBoxDeactivatedEventObject$7>;
type LootBoxDeactivatedEventFilter$7 = TypedEventFilter<LootBoxDeactivatedEvent$7>;
interface LootBoxOpenedEventObject$7 {
    requester: string;
    requestId: BigNumber;
    rngCount: number;
}
type LootBoxOpenedEvent$7 = TypedEvent<[
    string,
    BigNumber,
    number
], LootBoxOpenedEventObject$7>;
type LootBoxOpenedEventFilter$7 = TypedEventFilter<LootBoxOpenedEvent$7>;
interface LootBoxPermanentlyStopedEventObject$7 {
}
type LootBoxPermanentlyStopedEvent$7 = TypedEvent<[
], LootBoxPermanentlyStopedEventObject$7>;
type LootBoxPermanentlyStopedEventFilter$7 = TypedEventFilter<LootBoxPermanentlyStopedEvent$7>;
interface LootboxCreatedEventObject$7 {
    lootbox: string;
    creator: string;
    active: boolean;
    trustedForwarder: string;
    merkleRoots: string[];
    opens: BigNumber[];
    globalOpens: BigNumber;
}
type LootboxCreatedEvent$7 = TypedEvent<[
    string,
    string,
    boolean,
    string,
    string[],
    BigNumber[],
    BigNumber
], LootboxCreatedEventObject$7>;
type LootboxCreatedEventFilter$7 = TypedEventFilter<LootboxCreatedEvent$7>;
interface OpensReconfiguredEventObject$7 {
    merkleRoots: string[];
    opens: BigNumber[];
    globalOpens: BigNumber;
}
type OpensReconfiguredEvent$7 = TypedEvent<[
    string[],
    BigNumber[],
    BigNumber
], OpensReconfiguredEventObject$7>;
type OpensReconfiguredEventFilter$7 = TypedEventFilter<OpensReconfiguredEvent$7>;
interface RngReceivedEventObject$7 {
    requestId: BigNumber;
    requester: string;
    rngList: BigNumber[];
}
type RngReceivedEvent$7 = TypedEvent<[
    BigNumber,
    string,
    BigNumber[]
], RngReceivedEventObject$7>;
type RngReceivedEventFilter$7 = TypedEventFilter<RngReceivedEvent$7>;
interface TrustedForwarderChangedEventObject$7 {
    oldTrustedForwarder: string;
    newTrustedForwarder: string;
}
type TrustedForwarderChangedEvent$7 = TypedEvent<[
    string,
    string
], TrustedForwarderChangedEventObject$7>;
type TrustedForwarderChangedEventFilter$7 = TypedEventFilter<TrustedForwarderChangedEvent$7>;
interface LootBoxController extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: LootBoxControllerInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        activate(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        adjustTrees(_roots: BytesLike[], _opens: BigNumberish[], _globalOpens: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        deactivate(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        removeItem(addr: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        stopLootBoxPermanently(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
    };
    activate(overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    adjustTrees(_roots: BytesLike[], _opens: BigNumberish[], _globalOpens: BigNumberish, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    deactivate(overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    removeItem(addr: string, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    stopLootBoxPermanently(overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    callStatic: {
        activate(overrides?: CallOverrides): Promise<void>;
        adjustTrees(_roots: BytesLike[], _opens: BigNumberish[], _globalOpens: BigNumberish, overrides?: CallOverrides): Promise<void>;
        deactivate(overrides?: CallOverrides): Promise<void>;
        removeItem(addr: string, overrides?: CallOverrides): Promise<void>;
        stopLootBoxPermanently(overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "ItemRemoved(address)"(addr?: string | null): ItemRemovedEventFilter$7;
        ItemRemoved(addr?: string | null): ItemRemovedEventFilter$7;
        "Item_ERC1155_Updated(address,address,uint256[],uint256[])"(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null, tokenAmountsSent?: null): Item_ERC1155_UpdatedEventFilter$7;
        Item_ERC1155_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null, tokenAmountsSent?: null): Item_ERC1155_UpdatedEventFilter$7;
        "Item_ERC20_Updated(address,address,uint256)"(contractAddress?: string | null, tokenReceiver?: string | null, tokenAmountSent?: null): Item_ERC20_UpdatedEventFilter$7;
        Item_ERC20_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenAmountSent?: null): Item_ERC20_UpdatedEventFilter$7;
        "Item_ERC721_Updated(address,address,uint256[])"(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null): Item_ERC721_UpdatedEventFilter$7;
        Item_ERC721_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null): Item_ERC721_UpdatedEventFilter$7;
        "ItemsAdded((address,(uint256,uint256),uint256,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256[],string,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256,(uint256,uint256),uint256[],uint256[],(uint256,uint256)[],string,string,string)[])"(erc20Items?: null, erc721Items?: null, erc1155Items?: null): ItemsAddedEventFilter$7;
        ItemsAdded(erc20Items?: null, erc721Items?: null, erc1155Items?: null): ItemsAddedEventFilter$7;
        "LootBoxActivated()"(): LootBoxActivatedEventFilter$7;
        LootBoxActivated(): LootBoxActivatedEventFilter$7;
        "LootBoxClaimed(address,(address,uint8,uint256,uint256)[])"(claimer?: string | null, pickedTokens?: null): LootBoxClaimedEventFilter$7;
        LootBoxClaimed(claimer?: string | null, pickedTokens?: null): LootBoxClaimedEventFilter$7;
        "LootBoxDeactivated()"(): LootBoxDeactivatedEventFilter$7;
        LootBoxDeactivated(): LootBoxDeactivatedEventFilter$7;
        "LootBoxOpened(address,uint256,uint8)"(requester?: string | null, requestId?: null, rngCount?: null): LootBoxOpenedEventFilter$7;
        LootBoxOpened(requester?: string | null, requestId?: null, rngCount?: null): LootBoxOpenedEventFilter$7;
        "LootBoxPermanentlyStoped()"(): LootBoxPermanentlyStopedEventFilter$7;
        LootBoxPermanentlyStoped(): LootBoxPermanentlyStopedEventFilter$7;
        "LootboxCreated(address,address,bool,address,bytes32[],uint256[],uint256)"(lootbox?: string | null, creator?: string | null, active?: boolean | null, trustedForwarder?: null, merkleRoots?: null, opens?: null, globalOpens?: null): LootboxCreatedEventFilter$7;
        LootboxCreated(lootbox?: string | null, creator?: string | null, active?: boolean | null, trustedForwarder?: null, merkleRoots?: null, opens?: null, globalOpens?: null): LootboxCreatedEventFilter$7;
        "OpensReconfigured(bytes32[],uint256[],uint256)"(merkleRoots?: null, opens?: null, globalOpens?: null): OpensReconfiguredEventFilter$7;
        OpensReconfigured(merkleRoots?: null, opens?: null, globalOpens?: null): OpensReconfiguredEventFilter$7;
        "RngReceived(uint256,address,uint256[])"(requestId?: null, requester?: string | null, rngList?: null): RngReceivedEventFilter$7;
        RngReceived(requestId?: null, requester?: string | null, rngList?: null): RngReceivedEventFilter$7;
        "TrustedForwarderChanged(address,address)"(oldTrustedForwarder?: string | null, newTrustedForwarder?: string | null): TrustedForwarderChangedEventFilter$7;
        TrustedForwarderChanged(oldTrustedForwarder?: string | null, newTrustedForwarder?: string | null): TrustedForwarderChangedEventFilter$7;
    };
    estimateGas: {
        activate(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        adjustTrees(_roots: BytesLike[], _opens: BigNumberish[], _globalOpens: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        deactivate(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        removeItem(addr: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        stopLootBoxPermanently(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        activate(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        adjustTrees(_roots: BytesLike[], _opens: BigNumberish[], _globalOpens: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        deactivate(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        removeItem(addr: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        stopLootBoxPermanently(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
    };
}

declare namespace ILootBox$6 {
    type RangeStruct = {
        start: BigNumberish;
        end: BigNumberish;
    };
    type RangeStructOutput = [BigNumber, BigNumber] & {
        start: BigNumber;
        end: BigNumber;
    };
    type Item_ERC20Struct = {
        contractAddress: string;
        pickRange: ILootBox$6.RangeStruct;
        tokenAmount: BigNumberish;
        name: string;
        symbol: string;
    };
    type Item_ERC20StructOutput = [
        string,
        ILootBox$6.RangeStructOutput,
        BigNumber,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$6.RangeStructOutput;
        tokenAmount: BigNumber;
        name: string;
        symbol: string;
    };
    type Item_ERC721Struct = {
        contractAddress: string;
        pickRange: ILootBox$6.RangeStruct;
        inputTokenIdRange: ILootBox$6.RangeStruct;
        inputTokenIds: BigNumberish[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC721StructOutput = [
        string,
        ILootBox$6.RangeStructOutput,
        ILootBox$6.RangeStructOutput,
        BigNumber[],
        string,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$6.RangeStructOutput;
        inputTokenIdRange: ILootBox$6.RangeStructOutput;
        inputTokenIds: BigNumber[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC1155Struct = {
        contractAddress: string;
        pickRange: ILootBox$6.RangeStruct;
        inputTokenIdRange: ILootBox$6.RangeStruct;
        inputTokenAmountFixed: BigNumberish;
        amountPickRangeFixed: ILootBox$6.RangeStruct;
        inputTokenIds: BigNumberish[];
        inputTokenAmounts: BigNumberish[];
        amountPickRanges: ILootBox$6.RangeStruct[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC1155StructOutput = [
        string,
        ILootBox$6.RangeStructOutput,
        ILootBox$6.RangeStructOutput,
        BigNumber,
        ILootBox$6.RangeStructOutput,
        BigNumber[],
        BigNumber[],
        ILootBox$6.RangeStructOutput[],
        string,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$6.RangeStructOutput;
        inputTokenIdRange: ILootBox$6.RangeStructOutput;
        inputTokenAmountFixed: BigNumber;
        amountPickRangeFixed: ILootBox$6.RangeStructOutput;
        inputTokenIds: BigNumber[];
        inputTokenAmounts: BigNumber[];
        amountPickRanges: ILootBox$6.RangeStructOutput[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type PickedTokenStruct = {
        itemContractAddress: string;
        tokenType: BigNumberish;
        tokenId: BigNumberish;
        tokenAmount: BigNumberish;
    };
    type PickedTokenStructOutput = [
        string,
        number,
        BigNumber,
        BigNumber
    ] & {
        itemContractAddress: string;
        tokenType: number;
        tokenId: BigNumber;
        tokenAmount: BigNumber;
    };
}
interface LootBoxERC2771Interface extends utils.Interface {
    functions: {
        "changeTrustedForwarder(address)": FunctionFragment;
        "isTrustedForwarder(address)": FunctionFragment;
        "trustedForwarder()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "changeTrustedForwarder" | "isTrustedForwarder" | "trustedForwarder"): FunctionFragment;
    encodeFunctionData(functionFragment: "changeTrustedForwarder", values: [string]): string;
    encodeFunctionData(functionFragment: "isTrustedForwarder", values: [string]): string;
    encodeFunctionData(functionFragment: "trustedForwarder", values?: undefined): string;
    decodeFunctionResult(functionFragment: "changeTrustedForwarder", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isTrustedForwarder", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "trustedForwarder", data: BytesLike): Result;
    events: {
        "ItemRemoved(address)": EventFragment;
        "Item_ERC1155_Updated(address,address,uint256[],uint256[])": EventFragment;
        "Item_ERC20_Updated(address,address,uint256)": EventFragment;
        "Item_ERC721_Updated(address,address,uint256[])": EventFragment;
        "ItemsAdded((address,(uint256,uint256),uint256,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256[],string,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256,(uint256,uint256),uint256[],uint256[],(uint256,uint256)[],string,string,string)[])": EventFragment;
        "LootBoxActivated()": EventFragment;
        "LootBoxClaimed(address,(address,uint8,uint256,uint256)[])": EventFragment;
        "LootBoxDeactivated()": EventFragment;
        "LootBoxOpened(address,uint256,uint8)": EventFragment;
        "LootBoxPermanentlyStoped()": EventFragment;
        "LootboxCreated(address,address,bool,address,bytes32[],uint256[],uint256)": EventFragment;
        "OpensReconfigured(bytes32[],uint256[],uint256)": EventFragment;
        "RngReceived(uint256,address,uint256[])": EventFragment;
        "TrustedForwarderChanged(address,address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "ItemRemoved"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC1155_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC20_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC721_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ItemsAdded"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxActivated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxClaimed"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxDeactivated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxOpened"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxPermanentlyStoped"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootboxCreated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OpensReconfigured"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RngReceived"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TrustedForwarderChanged"): EventFragment;
}
interface ItemRemovedEventObject$6 {
    addr: string;
}
type ItemRemovedEvent$6 = TypedEvent<[string], ItemRemovedEventObject$6>;
type ItemRemovedEventFilter$6 = TypedEventFilter<ItemRemovedEvent$6>;
interface Item_ERC1155_UpdatedEventObject$6 {
    contractAddress: string;
    tokenReceiver: string;
    tokenIdsSent: BigNumber[];
    tokenAmountsSent: BigNumber[];
}
type Item_ERC1155_UpdatedEvent$6 = TypedEvent<[
    string,
    string,
    BigNumber[],
    BigNumber[]
], Item_ERC1155_UpdatedEventObject$6>;
type Item_ERC1155_UpdatedEventFilter$6 = TypedEventFilter<Item_ERC1155_UpdatedEvent$6>;
interface Item_ERC20_UpdatedEventObject$6 {
    contractAddress: string;
    tokenReceiver: string;
    tokenAmountSent: BigNumber;
}
type Item_ERC20_UpdatedEvent$6 = TypedEvent<[
    string,
    string,
    BigNumber
], Item_ERC20_UpdatedEventObject$6>;
type Item_ERC20_UpdatedEventFilter$6 = TypedEventFilter<Item_ERC20_UpdatedEvent$6>;
interface Item_ERC721_UpdatedEventObject$6 {
    contractAddress: string;
    tokenReceiver: string;
    tokenIdsSent: BigNumber[];
}
type Item_ERC721_UpdatedEvent$6 = TypedEvent<[
    string,
    string,
    BigNumber[]
], Item_ERC721_UpdatedEventObject$6>;
type Item_ERC721_UpdatedEventFilter$6 = TypedEventFilter<Item_ERC721_UpdatedEvent$6>;
interface ItemsAddedEventObject$6 {
    erc20Items: ILootBox$6.Item_ERC20StructOutput[];
    erc721Items: ILootBox$6.Item_ERC721StructOutput[];
    erc1155Items: ILootBox$6.Item_ERC1155StructOutput[];
}
type ItemsAddedEvent$6 = TypedEvent<[
    ILootBox$6.Item_ERC20StructOutput[],
    ILootBox$6.Item_ERC721StructOutput[],
    ILootBox$6.Item_ERC1155StructOutput[]
], ItemsAddedEventObject$6>;
type ItemsAddedEventFilter$6 = TypedEventFilter<ItemsAddedEvent$6>;
interface LootBoxActivatedEventObject$6 {
}
type LootBoxActivatedEvent$6 = TypedEvent<[], LootBoxActivatedEventObject$6>;
type LootBoxActivatedEventFilter$6 = TypedEventFilter<LootBoxActivatedEvent$6>;
interface LootBoxClaimedEventObject$6 {
    claimer: string;
    pickedTokens: ILootBox$6.PickedTokenStructOutput[];
}
type LootBoxClaimedEvent$6 = TypedEvent<[
    string,
    ILootBox$6.PickedTokenStructOutput[]
], LootBoxClaimedEventObject$6>;
type LootBoxClaimedEventFilter$6 = TypedEventFilter<LootBoxClaimedEvent$6>;
interface LootBoxDeactivatedEventObject$6 {
}
type LootBoxDeactivatedEvent$6 = TypedEvent<[
], LootBoxDeactivatedEventObject$6>;
type LootBoxDeactivatedEventFilter$6 = TypedEventFilter<LootBoxDeactivatedEvent$6>;
interface LootBoxOpenedEventObject$6 {
    requester: string;
    requestId: BigNumber;
    rngCount: number;
}
type LootBoxOpenedEvent$6 = TypedEvent<[
    string,
    BigNumber,
    number
], LootBoxOpenedEventObject$6>;
type LootBoxOpenedEventFilter$6 = TypedEventFilter<LootBoxOpenedEvent$6>;
interface LootBoxPermanentlyStopedEventObject$6 {
}
type LootBoxPermanentlyStopedEvent$6 = TypedEvent<[
], LootBoxPermanentlyStopedEventObject$6>;
type LootBoxPermanentlyStopedEventFilter$6 = TypedEventFilter<LootBoxPermanentlyStopedEvent$6>;
interface LootboxCreatedEventObject$6 {
    lootbox: string;
    creator: string;
    active: boolean;
    trustedForwarder: string;
    merkleRoots: string[];
    opens: BigNumber[];
    globalOpens: BigNumber;
}
type LootboxCreatedEvent$6 = TypedEvent<[
    string,
    string,
    boolean,
    string,
    string[],
    BigNumber[],
    BigNumber
], LootboxCreatedEventObject$6>;
type LootboxCreatedEventFilter$6 = TypedEventFilter<LootboxCreatedEvent$6>;
interface OpensReconfiguredEventObject$6 {
    merkleRoots: string[];
    opens: BigNumber[];
    globalOpens: BigNumber;
}
type OpensReconfiguredEvent$6 = TypedEvent<[
    string[],
    BigNumber[],
    BigNumber
], OpensReconfiguredEventObject$6>;
type OpensReconfiguredEventFilter$6 = TypedEventFilter<OpensReconfiguredEvent$6>;
interface RngReceivedEventObject$6 {
    requestId: BigNumber;
    requester: string;
    rngList: BigNumber[];
}
type RngReceivedEvent$6 = TypedEvent<[
    BigNumber,
    string,
    BigNumber[]
], RngReceivedEventObject$6>;
type RngReceivedEventFilter$6 = TypedEventFilter<RngReceivedEvent$6>;
interface TrustedForwarderChangedEventObject$6 {
    oldTrustedForwarder: string;
    newTrustedForwarder: string;
}
type TrustedForwarderChangedEvent$6 = TypedEvent<[
    string,
    string
], TrustedForwarderChangedEventObject$6>;
type TrustedForwarderChangedEventFilter$6 = TypedEventFilter<TrustedForwarderChangedEvent$6>;
interface LootBoxERC2771 extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: LootBoxERC2771Interface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        changeTrustedForwarder(_trustedForwarder: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<[boolean]>;
        trustedForwarder(overrides?: CallOverrides): Promise<[string]>;
    };
    changeTrustedForwarder(_trustedForwarder: string, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<boolean>;
    trustedForwarder(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        changeTrustedForwarder(_trustedForwarder: string, overrides?: CallOverrides): Promise<void>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<boolean>;
        trustedForwarder(overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        "ItemRemoved(address)"(addr?: string | null): ItemRemovedEventFilter$6;
        ItemRemoved(addr?: string | null): ItemRemovedEventFilter$6;
        "Item_ERC1155_Updated(address,address,uint256[],uint256[])"(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null, tokenAmountsSent?: null): Item_ERC1155_UpdatedEventFilter$6;
        Item_ERC1155_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null, tokenAmountsSent?: null): Item_ERC1155_UpdatedEventFilter$6;
        "Item_ERC20_Updated(address,address,uint256)"(contractAddress?: string | null, tokenReceiver?: string | null, tokenAmountSent?: null): Item_ERC20_UpdatedEventFilter$6;
        Item_ERC20_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenAmountSent?: null): Item_ERC20_UpdatedEventFilter$6;
        "Item_ERC721_Updated(address,address,uint256[])"(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null): Item_ERC721_UpdatedEventFilter$6;
        Item_ERC721_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null): Item_ERC721_UpdatedEventFilter$6;
        "ItemsAdded((address,(uint256,uint256),uint256,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256[],string,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256,(uint256,uint256),uint256[],uint256[],(uint256,uint256)[],string,string,string)[])"(erc20Items?: null, erc721Items?: null, erc1155Items?: null): ItemsAddedEventFilter$6;
        ItemsAdded(erc20Items?: null, erc721Items?: null, erc1155Items?: null): ItemsAddedEventFilter$6;
        "LootBoxActivated()"(): LootBoxActivatedEventFilter$6;
        LootBoxActivated(): LootBoxActivatedEventFilter$6;
        "LootBoxClaimed(address,(address,uint8,uint256,uint256)[])"(claimer?: string | null, pickedTokens?: null): LootBoxClaimedEventFilter$6;
        LootBoxClaimed(claimer?: string | null, pickedTokens?: null): LootBoxClaimedEventFilter$6;
        "LootBoxDeactivated()"(): LootBoxDeactivatedEventFilter$6;
        LootBoxDeactivated(): LootBoxDeactivatedEventFilter$6;
        "LootBoxOpened(address,uint256,uint8)"(requester?: string | null, requestId?: null, rngCount?: null): LootBoxOpenedEventFilter$6;
        LootBoxOpened(requester?: string | null, requestId?: null, rngCount?: null): LootBoxOpenedEventFilter$6;
        "LootBoxPermanentlyStoped()"(): LootBoxPermanentlyStopedEventFilter$6;
        LootBoxPermanentlyStoped(): LootBoxPermanentlyStopedEventFilter$6;
        "LootboxCreated(address,address,bool,address,bytes32[],uint256[],uint256)"(lootbox?: string | null, creator?: string | null, active?: boolean | null, trustedForwarder?: null, merkleRoots?: null, opens?: null, globalOpens?: null): LootboxCreatedEventFilter$6;
        LootboxCreated(lootbox?: string | null, creator?: string | null, active?: boolean | null, trustedForwarder?: null, merkleRoots?: null, opens?: null, globalOpens?: null): LootboxCreatedEventFilter$6;
        "OpensReconfigured(bytes32[],uint256[],uint256)"(merkleRoots?: null, opens?: null, globalOpens?: null): OpensReconfiguredEventFilter$6;
        OpensReconfigured(merkleRoots?: null, opens?: null, globalOpens?: null): OpensReconfiguredEventFilter$6;
        "RngReceived(uint256,address,uint256[])"(requestId?: null, requester?: string | null, rngList?: null): RngReceivedEventFilter$6;
        RngReceived(requestId?: null, requester?: string | null, rngList?: null): RngReceivedEventFilter$6;
        "TrustedForwarderChanged(address,address)"(oldTrustedForwarder?: string | null, newTrustedForwarder?: string | null): TrustedForwarderChangedEventFilter$6;
        TrustedForwarderChanged(oldTrustedForwarder?: string | null, newTrustedForwarder?: string | null): TrustedForwarderChangedEventFilter$6;
    };
    estimateGas: {
        changeTrustedForwarder(_trustedForwarder: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<BigNumber>;
        trustedForwarder(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        changeTrustedForwarder(_trustedForwarder: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        trustedForwarder(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}

declare namespace ILootBox$5 {
    type PickedTokenStruct = {
        itemContractAddress: string;
        tokenType: BigNumberish;
        tokenId: BigNumberish;
        tokenAmount: BigNumberish;
    };
    type PickedTokenStructOutput = [
        string,
        number,
        BigNumber,
        BigNumber
    ] & {
        itemContractAddress: string;
        tokenType: number;
        tokenId: BigNumber;
        tokenAmount: BigNumber;
    };
    type RangeStruct = {
        start: BigNumberish;
        end: BigNumberish;
    };
    type RangeStructOutput = [BigNumber, BigNumber] & {
        start: BigNumber;
        end: BigNumber;
    };
    type Item_ERC20Struct = {
        contractAddress: string;
        pickRange: ILootBox$5.RangeStruct;
        tokenAmount: BigNumberish;
        name: string;
        symbol: string;
    };
    type Item_ERC20StructOutput = [
        string,
        ILootBox$5.RangeStructOutput,
        BigNumber,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$5.RangeStructOutput;
        tokenAmount: BigNumber;
        name: string;
        symbol: string;
    };
    type Item_ERC721Struct = {
        contractAddress: string;
        pickRange: ILootBox$5.RangeStruct;
        inputTokenIdRange: ILootBox$5.RangeStruct;
        inputTokenIds: BigNumberish[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC721StructOutput = [
        string,
        ILootBox$5.RangeStructOutput,
        ILootBox$5.RangeStructOutput,
        BigNumber[],
        string,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$5.RangeStructOutput;
        inputTokenIdRange: ILootBox$5.RangeStructOutput;
        inputTokenIds: BigNumber[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC1155Struct = {
        contractAddress: string;
        pickRange: ILootBox$5.RangeStruct;
        inputTokenIdRange: ILootBox$5.RangeStruct;
        inputTokenAmountFixed: BigNumberish;
        amountPickRangeFixed: ILootBox$5.RangeStruct;
        inputTokenIds: BigNumberish[];
        inputTokenAmounts: BigNumberish[];
        amountPickRanges: ILootBox$5.RangeStruct[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC1155StructOutput = [
        string,
        ILootBox$5.RangeStructOutput,
        ILootBox$5.RangeStructOutput,
        BigNumber,
        ILootBox$5.RangeStructOutput,
        BigNumber[],
        BigNumber[],
        ILootBox$5.RangeStructOutput[],
        string,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$5.RangeStructOutput;
        inputTokenIdRange: ILootBox$5.RangeStructOutput;
        inputTokenAmountFixed: BigNumber;
        amountPickRangeFixed: ILootBox$5.RangeStructOutput;
        inputTokenIds: BigNumber[];
        inputTokenAmounts: BigNumber[];
        amountPickRanges: ILootBox$5.RangeStructOutput[];
        uriBase: string;
        name: string;
        symbol: string;
    };
}
interface LootBoxInfoInterface extends utils.Interface {
    functions: {
        "active()": FunctionFragment;
        "baseURI(address)": FunctionFragment;
        "canClaim(address)": FunctionFragment;
        "chain()": FunctionFragment;
        "erc1155_implementation()": FunctionFragment;
        "erc20_implementation()": FunctionFragment;
        "erc721_implementation()": FunctionFragment;
        "getMerkleData(uint256)": FunctionFragment;
        "getRemainingOpensForAddress(address,bytes32[])": FunctionFragment;
        "getRemainingOpensForAddressAndIdx(address,bytes32[],uint256)": FunctionFragment;
        "isCreatedContract(address)": FunctionFragment;
        "isEmpty()": FunctionFragment;
        "itemAddresses(uint256)": FunctionFragment;
        "lootboxCreator()": FunctionFragment;
        "lootboxManager()": FunctionFragment;
        "lootboxRngRouter()": FunctionFragment;
        "multicall()": FunctionFragment;
        "openAllowed()": FunctionFragment;
        "openerReqIds(address)": FunctionFragment;
        "opensForAll()": FunctionFragment;
        "permanentlyStopped()": FunctionFragment;
        "pickedTokens(address,uint256)": FunctionFragment;
        "ptrERC1155()": FunctionFragment;
        "ptrERC20()": FunctionFragment;
        "ptrERC721()": FunctionFragment;
        "reqIdToRequester(uint256)": FunctionFragment;
        "totalMerkleRoots()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "active" | "baseURI" | "canClaim" | "chain" | "erc1155_implementation" | "erc20_implementation" | "erc721_implementation" | "getMerkleData" | "getRemainingOpensForAddress" | "getRemainingOpensForAddressAndIdx" | "isCreatedContract" | "isEmpty" | "itemAddresses" | "lootboxCreator" | "lootboxManager" | "lootboxRngRouter" | "multicall" | "openAllowed" | "openerReqIds" | "opensForAll" | "permanentlyStopped" | "pickedTokens" | "ptrERC1155" | "ptrERC20" | "ptrERC721" | "reqIdToRequester" | "totalMerkleRoots"): FunctionFragment;
    encodeFunctionData(functionFragment: "active", values?: undefined): string;
    encodeFunctionData(functionFragment: "baseURI", values: [string]): string;
    encodeFunctionData(functionFragment: "canClaim", values: [string]): string;
    encodeFunctionData(functionFragment: "chain", values?: undefined): string;
    encodeFunctionData(functionFragment: "erc1155_implementation", values?: undefined): string;
    encodeFunctionData(functionFragment: "erc20_implementation", values?: undefined): string;
    encodeFunctionData(functionFragment: "erc721_implementation", values?: undefined): string;
    encodeFunctionData(functionFragment: "getMerkleData", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "getRemainingOpensForAddress", values: [string, BytesLike[]]): string;
    encodeFunctionData(functionFragment: "getRemainingOpensForAddressAndIdx", values: [string, BytesLike[], BigNumberish]): string;
    encodeFunctionData(functionFragment: "isCreatedContract", values: [string]): string;
    encodeFunctionData(functionFragment: "isEmpty", values?: undefined): string;
    encodeFunctionData(functionFragment: "itemAddresses", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "lootboxCreator", values?: undefined): string;
    encodeFunctionData(functionFragment: "lootboxManager", values?: undefined): string;
    encodeFunctionData(functionFragment: "lootboxRngRouter", values?: undefined): string;
    encodeFunctionData(functionFragment: "multicall", values?: undefined): string;
    encodeFunctionData(functionFragment: "openAllowed", values?: undefined): string;
    encodeFunctionData(functionFragment: "openerReqIds", values: [string]): string;
    encodeFunctionData(functionFragment: "opensForAll", values?: undefined): string;
    encodeFunctionData(functionFragment: "permanentlyStopped", values?: undefined): string;
    encodeFunctionData(functionFragment: "pickedTokens", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "ptrERC1155", values?: undefined): string;
    encodeFunctionData(functionFragment: "ptrERC20", values?: undefined): string;
    encodeFunctionData(functionFragment: "ptrERC721", values?: undefined): string;
    encodeFunctionData(functionFragment: "reqIdToRequester", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "totalMerkleRoots", values?: undefined): string;
    decodeFunctionResult(functionFragment: "active", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "baseURI", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "canClaim", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "chain", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "erc1155_implementation", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "erc20_implementation", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "erc721_implementation", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getMerkleData", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRemainingOpensForAddress", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRemainingOpensForAddressAndIdx", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isCreatedContract", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isEmpty", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "itemAddresses", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lootboxCreator", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lootboxManager", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lootboxRngRouter", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "openAllowed", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "openerReqIds", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "opensForAll", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "permanentlyStopped", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pickedTokens", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "ptrERC1155", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "ptrERC20", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "ptrERC721", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "reqIdToRequester", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalMerkleRoots", data: BytesLike): Result;
    events: {
        "ItemRemoved(address)": EventFragment;
        "Item_ERC1155_Updated(address,address,uint256[],uint256[])": EventFragment;
        "Item_ERC20_Updated(address,address,uint256)": EventFragment;
        "Item_ERC721_Updated(address,address,uint256[])": EventFragment;
        "ItemsAdded((address,(uint256,uint256),uint256,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256[],string,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256,(uint256,uint256),uint256[],uint256[],(uint256,uint256)[],string,string,string)[])": EventFragment;
        "LootBoxActivated()": EventFragment;
        "LootBoxClaimed(address,(address,uint8,uint256,uint256)[])": EventFragment;
        "LootBoxDeactivated()": EventFragment;
        "LootBoxOpened(address,uint256,uint8)": EventFragment;
        "LootBoxPermanentlyStoped()": EventFragment;
        "LootboxCreated(address,address,bool,address,bytes32[],uint256[],uint256)": EventFragment;
        "OpensReconfigured(bytes32[],uint256[],uint256)": EventFragment;
        "RngReceived(uint256,address,uint256[])": EventFragment;
        "TrustedForwarderChanged(address,address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "ItemRemoved"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC1155_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC20_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC721_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ItemsAdded"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxActivated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxClaimed"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxDeactivated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxOpened"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxPermanentlyStoped"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootboxCreated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OpensReconfigured"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RngReceived"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TrustedForwarderChanged"): EventFragment;
}
interface ItemRemovedEventObject$5 {
    addr: string;
}
type ItemRemovedEvent$5 = TypedEvent<[string], ItemRemovedEventObject$5>;
type ItemRemovedEventFilter$5 = TypedEventFilter<ItemRemovedEvent$5>;
interface Item_ERC1155_UpdatedEventObject$5 {
    contractAddress: string;
    tokenReceiver: string;
    tokenIdsSent: BigNumber[];
    tokenAmountsSent: BigNumber[];
}
type Item_ERC1155_UpdatedEvent$5 = TypedEvent<[
    string,
    string,
    BigNumber[],
    BigNumber[]
], Item_ERC1155_UpdatedEventObject$5>;
type Item_ERC1155_UpdatedEventFilter$5 = TypedEventFilter<Item_ERC1155_UpdatedEvent$5>;
interface Item_ERC20_UpdatedEventObject$5 {
    contractAddress: string;
    tokenReceiver: string;
    tokenAmountSent: BigNumber;
}
type Item_ERC20_UpdatedEvent$5 = TypedEvent<[
    string,
    string,
    BigNumber
], Item_ERC20_UpdatedEventObject$5>;
type Item_ERC20_UpdatedEventFilter$5 = TypedEventFilter<Item_ERC20_UpdatedEvent$5>;
interface Item_ERC721_UpdatedEventObject$5 {
    contractAddress: string;
    tokenReceiver: string;
    tokenIdsSent: BigNumber[];
}
type Item_ERC721_UpdatedEvent$5 = TypedEvent<[
    string,
    string,
    BigNumber[]
], Item_ERC721_UpdatedEventObject$5>;
type Item_ERC721_UpdatedEventFilter$5 = TypedEventFilter<Item_ERC721_UpdatedEvent$5>;
interface ItemsAddedEventObject$5 {
    erc20Items: ILootBox$5.Item_ERC20StructOutput[];
    erc721Items: ILootBox$5.Item_ERC721StructOutput[];
    erc1155Items: ILootBox$5.Item_ERC1155StructOutput[];
}
type ItemsAddedEvent$5 = TypedEvent<[
    ILootBox$5.Item_ERC20StructOutput[],
    ILootBox$5.Item_ERC721StructOutput[],
    ILootBox$5.Item_ERC1155StructOutput[]
], ItemsAddedEventObject$5>;
type ItemsAddedEventFilter$5 = TypedEventFilter<ItemsAddedEvent$5>;
interface LootBoxActivatedEventObject$5 {
}
type LootBoxActivatedEvent$5 = TypedEvent<[], LootBoxActivatedEventObject$5>;
type LootBoxActivatedEventFilter$5 = TypedEventFilter<LootBoxActivatedEvent$5>;
interface LootBoxClaimedEventObject$5 {
    claimer: string;
    pickedTokens: ILootBox$5.PickedTokenStructOutput[];
}
type LootBoxClaimedEvent$5 = TypedEvent<[
    string,
    ILootBox$5.PickedTokenStructOutput[]
], LootBoxClaimedEventObject$5>;
type LootBoxClaimedEventFilter$5 = TypedEventFilter<LootBoxClaimedEvent$5>;
interface LootBoxDeactivatedEventObject$5 {
}
type LootBoxDeactivatedEvent$5 = TypedEvent<[
], LootBoxDeactivatedEventObject$5>;
type LootBoxDeactivatedEventFilter$5 = TypedEventFilter<LootBoxDeactivatedEvent$5>;
interface LootBoxOpenedEventObject$5 {
    requester: string;
    requestId: BigNumber;
    rngCount: number;
}
type LootBoxOpenedEvent$5 = TypedEvent<[
    string,
    BigNumber,
    number
], LootBoxOpenedEventObject$5>;
type LootBoxOpenedEventFilter$5 = TypedEventFilter<LootBoxOpenedEvent$5>;
interface LootBoxPermanentlyStopedEventObject$5 {
}
type LootBoxPermanentlyStopedEvent$5 = TypedEvent<[
], LootBoxPermanentlyStopedEventObject$5>;
type LootBoxPermanentlyStopedEventFilter$5 = TypedEventFilter<LootBoxPermanentlyStopedEvent$5>;
interface LootboxCreatedEventObject$5 {
    lootbox: string;
    creator: string;
    active: boolean;
    trustedForwarder: string;
    merkleRoots: string[];
    opens: BigNumber[];
    globalOpens: BigNumber;
}
type LootboxCreatedEvent$5 = TypedEvent<[
    string,
    string,
    boolean,
    string,
    string[],
    BigNumber[],
    BigNumber
], LootboxCreatedEventObject$5>;
type LootboxCreatedEventFilter$5 = TypedEventFilter<LootboxCreatedEvent$5>;
interface OpensReconfiguredEventObject$5 {
    merkleRoots: string[];
    opens: BigNumber[];
    globalOpens: BigNumber;
}
type OpensReconfiguredEvent$5 = TypedEvent<[
    string[],
    BigNumber[],
    BigNumber
], OpensReconfiguredEventObject$5>;
type OpensReconfiguredEventFilter$5 = TypedEventFilter<OpensReconfiguredEvent$5>;
interface RngReceivedEventObject$5 {
    requestId: BigNumber;
    requester: string;
    rngList: BigNumber[];
}
type RngReceivedEvent$5 = TypedEvent<[
    BigNumber,
    string,
    BigNumber[]
], RngReceivedEventObject$5>;
type RngReceivedEventFilter$5 = TypedEventFilter<RngReceivedEvent$5>;
interface TrustedForwarderChangedEventObject$5 {
    oldTrustedForwarder: string;
    newTrustedForwarder: string;
}
type TrustedForwarderChangedEvent$5 = TypedEvent<[
    string,
    string
], TrustedForwarderChangedEventObject$5>;
type TrustedForwarderChangedEventFilter$5 = TypedEventFilter<TrustedForwarderChangedEvent$5>;
interface LootBoxInfo extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: LootBoxInfoInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        active(overrides?: CallOverrides): Promise<[boolean]>;
        baseURI(addr: string, overrides?: CallOverrides): Promise<[string]>;
        canClaim(_addr: string, overrides?: CallOverrides): Promise<[boolean]>;
        chain(overrides?: CallOverrides): Promise<[BigNumber]>;
        erc1155_implementation(overrides?: CallOverrides): Promise<[string]>;
        erc20_implementation(overrides?: CallOverrides): Promise<[string]>;
        erc721_implementation(overrides?: CallOverrides): Promise<[string]>;
        getMerkleData(idx: BigNumberish, overrides?: CallOverrides): Promise<[string, BigNumber]>;
        getRemainingOpensForAddress(_addr: string, merkleProof: BytesLike[], overrides?: CallOverrides): Promise<[BigNumber]>;
        getRemainingOpensForAddressAndIdx(_addr: string, merkleProof: BytesLike[], _idx: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>;
        isCreatedContract(addr: string, overrides?: CallOverrides): Promise<[boolean]>;
        isEmpty(overrides?: CallOverrides): Promise<[boolean]>;
        itemAddresses(idx: BigNumberish, overrides?: CallOverrides): Promise<[string]>;
        lootboxCreator(overrides?: CallOverrides): Promise<[string]>;
        lootboxManager(overrides?: CallOverrides): Promise<[string]>;
        lootboxRngRouter(overrides?: CallOverrides): Promise<[string]>;
        multicall(overrides?: CallOverrides): Promise<[string]>;
        openAllowed(overrides?: CallOverrides): Promise<[boolean]>;
        openerReqIds(_addr: string, overrides?: CallOverrides): Promise<[BigNumber[]]>;
        opensForAll(overrides?: CallOverrides): Promise<[BigNumber]>;
        permanentlyStopped(overrides?: CallOverrides): Promise<[boolean]>;
        pickedTokens(_addr: string, idx: BigNumberish, overrides?: CallOverrides): Promise<[ILootBox$5.PickedTokenStructOutput]>;
        ptrERC1155(overrides?: CallOverrides): Promise<[BigNumber]>;
        ptrERC20(overrides?: CallOverrides): Promise<[BigNumber]>;
        ptrERC721(overrides?: CallOverrides): Promise<[BigNumber]>;
        reqIdToRequester(reqId: BigNumberish, overrides?: CallOverrides): Promise<[string]>;
        totalMerkleRoots(overrides?: CallOverrides): Promise<[BigNumber]>;
    };
    active(overrides?: CallOverrides): Promise<boolean>;
    baseURI(addr: string, overrides?: CallOverrides): Promise<string>;
    canClaim(_addr: string, overrides?: CallOverrides): Promise<boolean>;
    chain(overrides?: CallOverrides): Promise<BigNumber>;
    erc1155_implementation(overrides?: CallOverrides): Promise<string>;
    erc20_implementation(overrides?: CallOverrides): Promise<string>;
    erc721_implementation(overrides?: CallOverrides): Promise<string>;
    getMerkleData(idx: BigNumberish, overrides?: CallOverrides): Promise<[string, BigNumber]>;
    getRemainingOpensForAddress(_addr: string, merkleProof: BytesLike[], overrides?: CallOverrides): Promise<BigNumber>;
    getRemainingOpensForAddressAndIdx(_addr: string, merkleProof: BytesLike[], _idx: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    isCreatedContract(addr: string, overrides?: CallOverrides): Promise<boolean>;
    isEmpty(overrides?: CallOverrides): Promise<boolean>;
    itemAddresses(idx: BigNumberish, overrides?: CallOverrides): Promise<string>;
    lootboxCreator(overrides?: CallOverrides): Promise<string>;
    lootboxManager(overrides?: CallOverrides): Promise<string>;
    lootboxRngRouter(overrides?: CallOverrides): Promise<string>;
    multicall(overrides?: CallOverrides): Promise<string>;
    openAllowed(overrides?: CallOverrides): Promise<boolean>;
    openerReqIds(_addr: string, overrides?: CallOverrides): Promise<BigNumber[]>;
    opensForAll(overrides?: CallOverrides): Promise<BigNumber>;
    permanentlyStopped(overrides?: CallOverrides): Promise<boolean>;
    pickedTokens(_addr: string, idx: BigNumberish, overrides?: CallOverrides): Promise<ILootBox$5.PickedTokenStructOutput>;
    ptrERC1155(overrides?: CallOverrides): Promise<BigNumber>;
    ptrERC20(overrides?: CallOverrides): Promise<BigNumber>;
    ptrERC721(overrides?: CallOverrides): Promise<BigNumber>;
    reqIdToRequester(reqId: BigNumberish, overrides?: CallOverrides): Promise<string>;
    totalMerkleRoots(overrides?: CallOverrides): Promise<BigNumber>;
    callStatic: {
        active(overrides?: CallOverrides): Promise<boolean>;
        baseURI(addr: string, overrides?: CallOverrides): Promise<string>;
        canClaim(_addr: string, overrides?: CallOverrides): Promise<boolean>;
        chain(overrides?: CallOverrides): Promise<BigNumber>;
        erc1155_implementation(overrides?: CallOverrides): Promise<string>;
        erc20_implementation(overrides?: CallOverrides): Promise<string>;
        erc721_implementation(overrides?: CallOverrides): Promise<string>;
        getMerkleData(idx: BigNumberish, overrides?: CallOverrides): Promise<[string, BigNumber]>;
        getRemainingOpensForAddress(_addr: string, merkleProof: BytesLike[], overrides?: CallOverrides): Promise<BigNumber>;
        getRemainingOpensForAddressAndIdx(_addr: string, merkleProof: BytesLike[], _idx: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        isCreatedContract(addr: string, overrides?: CallOverrides): Promise<boolean>;
        isEmpty(overrides?: CallOverrides): Promise<boolean>;
        itemAddresses(idx: BigNumberish, overrides?: CallOverrides): Promise<string>;
        lootboxCreator(overrides?: CallOverrides): Promise<string>;
        lootboxManager(overrides?: CallOverrides): Promise<string>;
        lootboxRngRouter(overrides?: CallOverrides): Promise<string>;
        multicall(overrides?: CallOverrides): Promise<string>;
        openAllowed(overrides?: CallOverrides): Promise<boolean>;
        openerReqIds(_addr: string, overrides?: CallOverrides): Promise<BigNumber[]>;
        opensForAll(overrides?: CallOverrides): Promise<BigNumber>;
        permanentlyStopped(overrides?: CallOverrides): Promise<boolean>;
        pickedTokens(_addr: string, idx: BigNumberish, overrides?: CallOverrides): Promise<ILootBox$5.PickedTokenStructOutput>;
        ptrERC1155(overrides?: CallOverrides): Promise<BigNumber>;
        ptrERC20(overrides?: CallOverrides): Promise<BigNumber>;
        ptrERC721(overrides?: CallOverrides): Promise<BigNumber>;
        reqIdToRequester(reqId: BigNumberish, overrides?: CallOverrides): Promise<string>;
        totalMerkleRoots(overrides?: CallOverrides): Promise<BigNumber>;
    };
    filters: {
        "ItemRemoved(address)"(addr?: string | null): ItemRemovedEventFilter$5;
        ItemRemoved(addr?: string | null): ItemRemovedEventFilter$5;
        "Item_ERC1155_Updated(address,address,uint256[],uint256[])"(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null, tokenAmountsSent?: null): Item_ERC1155_UpdatedEventFilter$5;
        Item_ERC1155_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null, tokenAmountsSent?: null): Item_ERC1155_UpdatedEventFilter$5;
        "Item_ERC20_Updated(address,address,uint256)"(contractAddress?: string | null, tokenReceiver?: string | null, tokenAmountSent?: null): Item_ERC20_UpdatedEventFilter$5;
        Item_ERC20_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenAmountSent?: null): Item_ERC20_UpdatedEventFilter$5;
        "Item_ERC721_Updated(address,address,uint256[])"(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null): Item_ERC721_UpdatedEventFilter$5;
        Item_ERC721_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null): Item_ERC721_UpdatedEventFilter$5;
        "ItemsAdded((address,(uint256,uint256),uint256,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256[],string,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256,(uint256,uint256),uint256[],uint256[],(uint256,uint256)[],string,string,string)[])"(erc20Items?: null, erc721Items?: null, erc1155Items?: null): ItemsAddedEventFilter$5;
        ItemsAdded(erc20Items?: null, erc721Items?: null, erc1155Items?: null): ItemsAddedEventFilter$5;
        "LootBoxActivated()"(): LootBoxActivatedEventFilter$5;
        LootBoxActivated(): LootBoxActivatedEventFilter$5;
        "LootBoxClaimed(address,(address,uint8,uint256,uint256)[])"(claimer?: string | null, pickedTokens?: null): LootBoxClaimedEventFilter$5;
        LootBoxClaimed(claimer?: string | null, pickedTokens?: null): LootBoxClaimedEventFilter$5;
        "LootBoxDeactivated()"(): LootBoxDeactivatedEventFilter$5;
        LootBoxDeactivated(): LootBoxDeactivatedEventFilter$5;
        "LootBoxOpened(address,uint256,uint8)"(requester?: string | null, requestId?: null, rngCount?: null): LootBoxOpenedEventFilter$5;
        LootBoxOpened(requester?: string | null, requestId?: null, rngCount?: null): LootBoxOpenedEventFilter$5;
        "LootBoxPermanentlyStoped()"(): LootBoxPermanentlyStopedEventFilter$5;
        LootBoxPermanentlyStoped(): LootBoxPermanentlyStopedEventFilter$5;
        "LootboxCreated(address,address,bool,address,bytes32[],uint256[],uint256)"(lootbox?: string | null, creator?: string | null, active?: boolean | null, trustedForwarder?: null, merkleRoots?: null, opens?: null, globalOpens?: null): LootboxCreatedEventFilter$5;
        LootboxCreated(lootbox?: string | null, creator?: string | null, active?: boolean | null, trustedForwarder?: null, merkleRoots?: null, opens?: null, globalOpens?: null): LootboxCreatedEventFilter$5;
        "OpensReconfigured(bytes32[],uint256[],uint256)"(merkleRoots?: null, opens?: null, globalOpens?: null): OpensReconfiguredEventFilter$5;
        OpensReconfigured(merkleRoots?: null, opens?: null, globalOpens?: null): OpensReconfiguredEventFilter$5;
        "RngReceived(uint256,address,uint256[])"(requestId?: null, requester?: string | null, rngList?: null): RngReceivedEventFilter$5;
        RngReceived(requestId?: null, requester?: string | null, rngList?: null): RngReceivedEventFilter$5;
        "TrustedForwarderChanged(address,address)"(oldTrustedForwarder?: string | null, newTrustedForwarder?: string | null): TrustedForwarderChangedEventFilter$5;
        TrustedForwarderChanged(oldTrustedForwarder?: string | null, newTrustedForwarder?: string | null): TrustedForwarderChangedEventFilter$5;
    };
    estimateGas: {
        active(overrides?: CallOverrides): Promise<BigNumber>;
        baseURI(addr: string, overrides?: CallOverrides): Promise<BigNumber>;
        canClaim(_addr: string, overrides?: CallOverrides): Promise<BigNumber>;
        chain(overrides?: CallOverrides): Promise<BigNumber>;
        erc1155_implementation(overrides?: CallOverrides): Promise<BigNumber>;
        erc20_implementation(overrides?: CallOverrides): Promise<BigNumber>;
        erc721_implementation(overrides?: CallOverrides): Promise<BigNumber>;
        getMerkleData(idx: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getRemainingOpensForAddress(_addr: string, merkleProof: BytesLike[], overrides?: CallOverrides): Promise<BigNumber>;
        getRemainingOpensForAddressAndIdx(_addr: string, merkleProof: BytesLike[], _idx: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        isCreatedContract(addr: string, overrides?: CallOverrides): Promise<BigNumber>;
        isEmpty(overrides?: CallOverrides): Promise<BigNumber>;
        itemAddresses(idx: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        lootboxCreator(overrides?: CallOverrides): Promise<BigNumber>;
        lootboxManager(overrides?: CallOverrides): Promise<BigNumber>;
        lootboxRngRouter(overrides?: CallOverrides): Promise<BigNumber>;
        multicall(overrides?: CallOverrides): Promise<BigNumber>;
        openAllowed(overrides?: CallOverrides): Promise<BigNumber>;
        openerReqIds(_addr: string, overrides?: CallOverrides): Promise<BigNumber>;
        opensForAll(overrides?: CallOverrides): Promise<BigNumber>;
        permanentlyStopped(overrides?: CallOverrides): Promise<BigNumber>;
        pickedTokens(_addr: string, idx: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        ptrERC1155(overrides?: CallOverrides): Promise<BigNumber>;
        ptrERC20(overrides?: CallOverrides): Promise<BigNumber>;
        ptrERC721(overrides?: CallOverrides): Promise<BigNumber>;
        reqIdToRequester(reqId: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        totalMerkleRoots(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        active(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        baseURI(addr: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        canClaim(_addr: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        chain(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        erc1155_implementation(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        erc20_implementation(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        erc721_implementation(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getMerkleData(idx: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRemainingOpensForAddress(_addr: string, merkleProof: BytesLike[], overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRemainingOpensForAddressAndIdx(_addr: string, merkleProof: BytesLike[], _idx: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isCreatedContract(addr: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isEmpty(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        itemAddresses(idx: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lootboxCreator(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lootboxManager(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lootboxRngRouter(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        multicall(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        openAllowed(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        openerReqIds(_addr: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        opensForAll(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        permanentlyStopped(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pickedTokens(_addr: string, idx: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        ptrERC1155(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        ptrERC20(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        ptrERC721(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        reqIdToRequester(reqId: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalMerkleRoots(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}

declare namespace ILootBox$4 {
    type RangeStruct = {
        start: BigNumberish;
        end: BigNumberish;
    };
    type RangeStructOutput = [BigNumber, BigNumber] & {
        start: BigNumber;
        end: BigNumber;
    };
    type Item_ERC20Struct = {
        contractAddress: string;
        pickRange: ILootBox$4.RangeStruct;
        tokenAmount: BigNumberish;
        name: string;
        symbol: string;
    };
    type Item_ERC20StructOutput = [
        string,
        ILootBox$4.RangeStructOutput,
        BigNumber,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$4.RangeStructOutput;
        tokenAmount: BigNumber;
        name: string;
        symbol: string;
    };
    type Item_ERC721Struct = {
        contractAddress: string;
        pickRange: ILootBox$4.RangeStruct;
        inputTokenIdRange: ILootBox$4.RangeStruct;
        inputTokenIds: BigNumberish[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC721StructOutput = [
        string,
        ILootBox$4.RangeStructOutput,
        ILootBox$4.RangeStructOutput,
        BigNumber[],
        string,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$4.RangeStructOutput;
        inputTokenIdRange: ILootBox$4.RangeStructOutput;
        inputTokenIds: BigNumber[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC1155Struct = {
        contractAddress: string;
        pickRange: ILootBox$4.RangeStruct;
        inputTokenIdRange: ILootBox$4.RangeStruct;
        inputTokenAmountFixed: BigNumberish;
        amountPickRangeFixed: ILootBox$4.RangeStruct;
        inputTokenIds: BigNumberish[];
        inputTokenAmounts: BigNumberish[];
        amountPickRanges: ILootBox$4.RangeStruct[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC1155StructOutput = [
        string,
        ILootBox$4.RangeStructOutput,
        ILootBox$4.RangeStructOutput,
        BigNumber,
        ILootBox$4.RangeStructOutput,
        BigNumber[],
        BigNumber[],
        ILootBox$4.RangeStructOutput[],
        string,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$4.RangeStructOutput;
        inputTokenIdRange: ILootBox$4.RangeStructOutput;
        inputTokenAmountFixed: BigNumber;
        amountPickRangeFixed: ILootBox$4.RangeStructOutput;
        inputTokenIds: BigNumber[];
        inputTokenAmounts: BigNumber[];
        amountPickRanges: ILootBox$4.RangeStructOutput[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type PickedTokenStruct = {
        itemContractAddress: string;
        tokenType: BigNumberish;
        tokenId: BigNumberish;
        tokenAmount: BigNumberish;
    };
    type PickedTokenStructOutput = [
        string,
        number,
        BigNumber,
        BigNumber
    ] & {
        itemContractAddress: string;
        tokenType: number;
        tokenId: BigNumber;
        tokenAmount: BigNumber;
    };
}
interface LootBoxInteractionInterface extends utils.Interface {
    functions: {
        "claimRewards()": FunctionFragment;
        "claimRewardsPartially(uint256)": FunctionFragment;
        "openLootBox(bytes32[])": FunctionFragment;
        "openLootBoxWithIdx(bytes32[],uint256)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "claimRewards" | "claimRewardsPartially" | "openLootBox" | "openLootBoxWithIdx"): FunctionFragment;
    encodeFunctionData(functionFragment: "claimRewards", values?: undefined): string;
    encodeFunctionData(functionFragment: "claimRewardsPartially", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "openLootBox", values: [BytesLike[]]): string;
    encodeFunctionData(functionFragment: "openLootBoxWithIdx", values: [BytesLike[], BigNumberish]): string;
    decodeFunctionResult(functionFragment: "claimRewards", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "claimRewardsPartially", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "openLootBox", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "openLootBoxWithIdx", data: BytesLike): Result;
    events: {
        "ItemRemoved(address)": EventFragment;
        "Item_ERC1155_Updated(address,address,uint256[],uint256[])": EventFragment;
        "Item_ERC20_Updated(address,address,uint256)": EventFragment;
        "Item_ERC721_Updated(address,address,uint256[])": EventFragment;
        "ItemsAdded((address,(uint256,uint256),uint256,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256[],string,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256,(uint256,uint256),uint256[],uint256[],(uint256,uint256)[],string,string,string)[])": EventFragment;
        "LootBoxActivated()": EventFragment;
        "LootBoxClaimed(address,(address,uint8,uint256,uint256)[])": EventFragment;
        "LootBoxDeactivated()": EventFragment;
        "LootBoxOpened(address,uint256,uint8)": EventFragment;
        "LootBoxPermanentlyStoped()": EventFragment;
        "LootboxCreated(address,address,bool,address,bytes32[],uint256[],uint256)": EventFragment;
        "OpensReconfigured(bytes32[],uint256[],uint256)": EventFragment;
        "RngReceived(uint256,address,uint256[])": EventFragment;
        "TrustedForwarderChanged(address,address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "ItemRemoved"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC1155_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC20_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC721_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ItemsAdded"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxActivated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxClaimed"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxDeactivated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxOpened"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxPermanentlyStoped"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootboxCreated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OpensReconfigured"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RngReceived"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TrustedForwarderChanged"): EventFragment;
}
interface ItemRemovedEventObject$4 {
    addr: string;
}
type ItemRemovedEvent$4 = TypedEvent<[string], ItemRemovedEventObject$4>;
type ItemRemovedEventFilter$4 = TypedEventFilter<ItemRemovedEvent$4>;
interface Item_ERC1155_UpdatedEventObject$4 {
    contractAddress: string;
    tokenReceiver: string;
    tokenIdsSent: BigNumber[];
    tokenAmountsSent: BigNumber[];
}
type Item_ERC1155_UpdatedEvent$4 = TypedEvent<[
    string,
    string,
    BigNumber[],
    BigNumber[]
], Item_ERC1155_UpdatedEventObject$4>;
type Item_ERC1155_UpdatedEventFilter$4 = TypedEventFilter<Item_ERC1155_UpdatedEvent$4>;
interface Item_ERC20_UpdatedEventObject$4 {
    contractAddress: string;
    tokenReceiver: string;
    tokenAmountSent: BigNumber;
}
type Item_ERC20_UpdatedEvent$4 = TypedEvent<[
    string,
    string,
    BigNumber
], Item_ERC20_UpdatedEventObject$4>;
type Item_ERC20_UpdatedEventFilter$4 = TypedEventFilter<Item_ERC20_UpdatedEvent$4>;
interface Item_ERC721_UpdatedEventObject$4 {
    contractAddress: string;
    tokenReceiver: string;
    tokenIdsSent: BigNumber[];
}
type Item_ERC721_UpdatedEvent$4 = TypedEvent<[
    string,
    string,
    BigNumber[]
], Item_ERC721_UpdatedEventObject$4>;
type Item_ERC721_UpdatedEventFilter$4 = TypedEventFilter<Item_ERC721_UpdatedEvent$4>;
interface ItemsAddedEventObject$4 {
    erc20Items: ILootBox$4.Item_ERC20StructOutput[];
    erc721Items: ILootBox$4.Item_ERC721StructOutput[];
    erc1155Items: ILootBox$4.Item_ERC1155StructOutput[];
}
type ItemsAddedEvent$4 = TypedEvent<[
    ILootBox$4.Item_ERC20StructOutput[],
    ILootBox$4.Item_ERC721StructOutput[],
    ILootBox$4.Item_ERC1155StructOutput[]
], ItemsAddedEventObject$4>;
type ItemsAddedEventFilter$4 = TypedEventFilter<ItemsAddedEvent$4>;
interface LootBoxActivatedEventObject$4 {
}
type LootBoxActivatedEvent$4 = TypedEvent<[], LootBoxActivatedEventObject$4>;
type LootBoxActivatedEventFilter$4 = TypedEventFilter<LootBoxActivatedEvent$4>;
interface LootBoxClaimedEventObject$4 {
    claimer: string;
    pickedTokens: ILootBox$4.PickedTokenStructOutput[];
}
type LootBoxClaimedEvent$4 = TypedEvent<[
    string,
    ILootBox$4.PickedTokenStructOutput[]
], LootBoxClaimedEventObject$4>;
type LootBoxClaimedEventFilter$4 = TypedEventFilter<LootBoxClaimedEvent$4>;
interface LootBoxDeactivatedEventObject$4 {
}
type LootBoxDeactivatedEvent$4 = TypedEvent<[
], LootBoxDeactivatedEventObject$4>;
type LootBoxDeactivatedEventFilter$4 = TypedEventFilter<LootBoxDeactivatedEvent$4>;
interface LootBoxOpenedEventObject$4 {
    requester: string;
    requestId: BigNumber;
    rngCount: number;
}
type LootBoxOpenedEvent$4 = TypedEvent<[
    string,
    BigNumber,
    number
], LootBoxOpenedEventObject$4>;
type LootBoxOpenedEventFilter$4 = TypedEventFilter<LootBoxOpenedEvent$4>;
interface LootBoxPermanentlyStopedEventObject$4 {
}
type LootBoxPermanentlyStopedEvent$4 = TypedEvent<[
], LootBoxPermanentlyStopedEventObject$4>;
type LootBoxPermanentlyStopedEventFilter$4 = TypedEventFilter<LootBoxPermanentlyStopedEvent$4>;
interface LootboxCreatedEventObject$4 {
    lootbox: string;
    creator: string;
    active: boolean;
    trustedForwarder: string;
    merkleRoots: string[];
    opens: BigNumber[];
    globalOpens: BigNumber;
}
type LootboxCreatedEvent$4 = TypedEvent<[
    string,
    string,
    boolean,
    string,
    string[],
    BigNumber[],
    BigNumber
], LootboxCreatedEventObject$4>;
type LootboxCreatedEventFilter$4 = TypedEventFilter<LootboxCreatedEvent$4>;
interface OpensReconfiguredEventObject$4 {
    merkleRoots: string[];
    opens: BigNumber[];
    globalOpens: BigNumber;
}
type OpensReconfiguredEvent$4 = TypedEvent<[
    string[],
    BigNumber[],
    BigNumber
], OpensReconfiguredEventObject$4>;
type OpensReconfiguredEventFilter$4 = TypedEventFilter<OpensReconfiguredEvent$4>;
interface RngReceivedEventObject$4 {
    requestId: BigNumber;
    requester: string;
    rngList: BigNumber[];
}
type RngReceivedEvent$4 = TypedEvent<[
    BigNumber,
    string,
    BigNumber[]
], RngReceivedEventObject$4>;
type RngReceivedEventFilter$4 = TypedEventFilter<RngReceivedEvent$4>;
interface TrustedForwarderChangedEventObject$4 {
    oldTrustedForwarder: string;
    newTrustedForwarder: string;
}
type TrustedForwarderChangedEvent$4 = TypedEvent<[
    string,
    string
], TrustedForwarderChangedEventObject$4>;
type TrustedForwarderChangedEventFilter$4 = TypedEventFilter<TrustedForwarderChangedEvent$4>;
interface LootBoxInteraction extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: LootBoxInteractionInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        claimRewards(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        claimRewardsPartially(_maxRewardsToClaim: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        openLootBox(merkleProof: BytesLike[], overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        openLootBoxWithIdx(merkleProof: BytesLike[], _idx: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
    };
    claimRewards(overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    claimRewardsPartially(_maxRewardsToClaim: BigNumberish, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    openLootBox(merkleProof: BytesLike[], overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    openLootBoxWithIdx(merkleProof: BytesLike[], _idx: BigNumberish, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    callStatic: {
        claimRewards(overrides?: CallOverrides): Promise<void>;
        claimRewardsPartially(_maxRewardsToClaim: BigNumberish, overrides?: CallOverrides): Promise<void>;
        openLootBox(merkleProof: BytesLike[], overrides?: CallOverrides): Promise<void>;
        openLootBoxWithIdx(merkleProof: BytesLike[], _idx: BigNumberish, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "ItemRemoved(address)"(addr?: string | null): ItemRemovedEventFilter$4;
        ItemRemoved(addr?: string | null): ItemRemovedEventFilter$4;
        "Item_ERC1155_Updated(address,address,uint256[],uint256[])"(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null, tokenAmountsSent?: null): Item_ERC1155_UpdatedEventFilter$4;
        Item_ERC1155_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null, tokenAmountsSent?: null): Item_ERC1155_UpdatedEventFilter$4;
        "Item_ERC20_Updated(address,address,uint256)"(contractAddress?: string | null, tokenReceiver?: string | null, tokenAmountSent?: null): Item_ERC20_UpdatedEventFilter$4;
        Item_ERC20_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenAmountSent?: null): Item_ERC20_UpdatedEventFilter$4;
        "Item_ERC721_Updated(address,address,uint256[])"(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null): Item_ERC721_UpdatedEventFilter$4;
        Item_ERC721_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null): Item_ERC721_UpdatedEventFilter$4;
        "ItemsAdded((address,(uint256,uint256),uint256,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256[],string,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256,(uint256,uint256),uint256[],uint256[],(uint256,uint256)[],string,string,string)[])"(erc20Items?: null, erc721Items?: null, erc1155Items?: null): ItemsAddedEventFilter$4;
        ItemsAdded(erc20Items?: null, erc721Items?: null, erc1155Items?: null): ItemsAddedEventFilter$4;
        "LootBoxActivated()"(): LootBoxActivatedEventFilter$4;
        LootBoxActivated(): LootBoxActivatedEventFilter$4;
        "LootBoxClaimed(address,(address,uint8,uint256,uint256)[])"(claimer?: string | null, pickedTokens?: null): LootBoxClaimedEventFilter$4;
        LootBoxClaimed(claimer?: string | null, pickedTokens?: null): LootBoxClaimedEventFilter$4;
        "LootBoxDeactivated()"(): LootBoxDeactivatedEventFilter$4;
        LootBoxDeactivated(): LootBoxDeactivatedEventFilter$4;
        "LootBoxOpened(address,uint256,uint8)"(requester?: string | null, requestId?: null, rngCount?: null): LootBoxOpenedEventFilter$4;
        LootBoxOpened(requester?: string | null, requestId?: null, rngCount?: null): LootBoxOpenedEventFilter$4;
        "LootBoxPermanentlyStoped()"(): LootBoxPermanentlyStopedEventFilter$4;
        LootBoxPermanentlyStoped(): LootBoxPermanentlyStopedEventFilter$4;
        "LootboxCreated(address,address,bool,address,bytes32[],uint256[],uint256)"(lootbox?: string | null, creator?: string | null, active?: boolean | null, trustedForwarder?: null, merkleRoots?: null, opens?: null, globalOpens?: null): LootboxCreatedEventFilter$4;
        LootboxCreated(lootbox?: string | null, creator?: string | null, active?: boolean | null, trustedForwarder?: null, merkleRoots?: null, opens?: null, globalOpens?: null): LootboxCreatedEventFilter$4;
        "OpensReconfigured(bytes32[],uint256[],uint256)"(merkleRoots?: null, opens?: null, globalOpens?: null): OpensReconfiguredEventFilter$4;
        OpensReconfigured(merkleRoots?: null, opens?: null, globalOpens?: null): OpensReconfiguredEventFilter$4;
        "RngReceived(uint256,address,uint256[])"(requestId?: null, requester?: string | null, rngList?: null): RngReceivedEventFilter$4;
        RngReceived(requestId?: null, requester?: string | null, rngList?: null): RngReceivedEventFilter$4;
        "TrustedForwarderChanged(address,address)"(oldTrustedForwarder?: string | null, newTrustedForwarder?: string | null): TrustedForwarderChangedEventFilter$4;
        TrustedForwarderChanged(oldTrustedForwarder?: string | null, newTrustedForwarder?: string | null): TrustedForwarderChangedEventFilter$4;
    };
    estimateGas: {
        claimRewards(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        claimRewardsPartially(_maxRewardsToClaim: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        openLootBox(merkleProof: BytesLike[], overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        openLootBoxWithIdx(merkleProof: BytesLike[], _idx: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        claimRewards(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        claimRewardsPartially(_maxRewardsToClaim: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        openLootBox(merkleProof: BytesLike[], overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        openLootBoxWithIdx(merkleProof: BytesLike[], _idx: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
    };
}

interface LootBoxOwnershipInterface extends utils.Interface {
    functions: {
        "owner()": FunctionFragment;
        "transferOwnership(address)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "owner" | "transferOwnership"): FunctionFragment;
    encodeFunctionData(functionFragment: "owner", values?: undefined): string;
    encodeFunctionData(functionFragment: "transferOwnership", values: [string]): string;
    decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transferOwnership", data: BytesLike): Result;
    events: {
        "OwnershipTransferred(address,address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
}
interface OwnershipTransferredEventObject$5 {
    previousOwner: string;
    newOwner: string;
}
type OwnershipTransferredEvent$5 = TypedEvent<[
    string,
    string
], OwnershipTransferredEventObject$5>;
type OwnershipTransferredEventFilter$5 = TypedEventFilter<OwnershipTransferredEvent$5>;
interface LootBoxOwnership extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: LootBoxOwnershipInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        owner(overrides?: CallOverrides): Promise<[string] & {
            owner_: string;
        }>;
        transferOwnership(_newOwner: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
    };
    owner(overrides?: CallOverrides): Promise<string>;
    transferOwnership(_newOwner: string, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    callStatic: {
        owner(overrides?: CallOverrides): Promise<string>;
        transferOwnership(_newOwner: string, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "OwnershipTransferred(address,address)"(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter$5;
        OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter$5;
    };
    estimateGas: {
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(_newOwner: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transferOwnership(_newOwner: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
    };
}

type index$2_LootBoxController = LootBoxController;
type index$2_LootBoxERC2771 = LootBoxERC2771;
type index$2_LootBoxInfo = LootBoxInfo;
type index$2_LootBoxInteraction = LootBoxInteraction;
type index$2_LootBoxOwnership = LootBoxOwnership;
declare namespace index$2 {
  export type { index$2_LootBoxController as LootBoxController, index$2_LootBoxERC2771 as LootBoxERC2771, index$2_LootBoxInfo as LootBoxInfo, index$2_LootBoxInteraction as LootBoxInteraction, index$2_LootBoxOwnership as LootBoxOwnership };
}

interface ERC1155Interface extends utils.Interface {
    functions: {
        "UPGRADE_INTERFACE_VERSION()": FunctionFragment;
        "balanceOf(address,uint256)": FunctionFragment;
        "balanceOfBatch(address[],uint256[])": FunctionFragment;
        "baseURI()": FunctionFragment;
        "exists(uint256)": FunctionFragment;
        "initialize(string,string,string,address,address,address)": FunctionFragment;
        "isApprovedForAll(address,address)": FunctionFragment;
        "isTrustedForwarder(address)": FunctionFragment;
        "lootboxAddress()": FunctionFragment;
        "lootboxMint(address,uint256,uint256)": FunctionFragment;
        "mintNFT(address,uint256,uint256)": FunctionFragment;
        "name()": FunctionFragment;
        "owner()": FunctionFragment;
        "proxiableUUID()": FunctionFragment;
        "renounceOwnership()": FunctionFragment;
        "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": FunctionFragment;
        "safeTransferFrom(address,address,uint256,uint256,bytes)": FunctionFragment;
        "setApprovalForAll(address,bool)": FunctionFragment;
        "supportsInterface(bytes4)": FunctionFragment;
        "symbol()": FunctionFragment;
        "tf()": FunctionFragment;
        "totalSupply()": FunctionFragment;
        "totalSupply(uint256)": FunctionFragment;
        "transferOwnership(address)": FunctionFragment;
        "trustedForwarder()": FunctionFragment;
        "upgradeToAndCall(address,bytes)": FunctionFragment;
        "uri(uint256)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "UPGRADE_INTERFACE_VERSION" | "balanceOf" | "balanceOfBatch" | "baseURI" | "exists" | "initialize" | "isApprovedForAll" | "isTrustedForwarder" | "lootboxAddress" | "lootboxMint" | "mintNFT" | "name" | "owner" | "proxiableUUID" | "renounceOwnership" | "safeBatchTransferFrom" | "safeTransferFrom" | "setApprovalForAll" | "supportsInterface" | "symbol" | "tf" | "totalSupply()" | "totalSupply(uint256)" | "transferOwnership" | "trustedForwarder" | "upgradeToAndCall" | "uri"): FunctionFragment;
    encodeFunctionData(functionFragment: "UPGRADE_INTERFACE_VERSION", values?: undefined): string;
    encodeFunctionData(functionFragment: "balanceOf", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "balanceOfBatch", values: [string[], BigNumberish[]]): string;
    encodeFunctionData(functionFragment: "baseURI", values?: undefined): string;
    encodeFunctionData(functionFragment: "exists", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "initialize", values: [string, string, string, string, string, string]): string;
    encodeFunctionData(functionFragment: "isApprovedForAll", values: [string, string]): string;
    encodeFunctionData(functionFragment: "isTrustedForwarder", values: [string]): string;
    encodeFunctionData(functionFragment: "lootboxAddress", values?: undefined): string;
    encodeFunctionData(functionFragment: "lootboxMint", values: [string, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "mintNFT", values: [string, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "name", values?: undefined): string;
    encodeFunctionData(functionFragment: "owner", values?: undefined): string;
    encodeFunctionData(functionFragment: "proxiableUUID", values?: undefined): string;
    encodeFunctionData(functionFragment: "renounceOwnership", values?: undefined): string;
    encodeFunctionData(functionFragment: "safeBatchTransferFrom", values: [string, string, BigNumberish[], BigNumberish[], BytesLike]): string;
    encodeFunctionData(functionFragment: "safeTransferFrom", values: [string, string, BigNumberish, BigNumberish, BytesLike]): string;
    encodeFunctionData(functionFragment: "setApprovalForAll", values: [string, boolean]): string;
    encodeFunctionData(functionFragment: "supportsInterface", values: [BytesLike]): string;
    encodeFunctionData(functionFragment: "symbol", values?: undefined): string;
    encodeFunctionData(functionFragment: "tf", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalSupply()", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalSupply(uint256)", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "transferOwnership", values: [string]): string;
    encodeFunctionData(functionFragment: "trustedForwarder", values?: undefined): string;
    encodeFunctionData(functionFragment: "upgradeToAndCall", values: [string, BytesLike]): string;
    encodeFunctionData(functionFragment: "uri", values: [BigNumberish]): string;
    decodeFunctionResult(functionFragment: "UPGRADE_INTERFACE_VERSION", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "balanceOfBatch", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "baseURI", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "exists", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isApprovedForAll", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isTrustedForwarder", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lootboxAddress", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lootboxMint", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "mintNFT", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "name", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "proxiableUUID", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "renounceOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "safeBatchTransferFrom", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "safeTransferFrom", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setApprovalForAll", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "supportsInterface", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "tf", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalSupply()", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalSupply(uint256)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transferOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "trustedForwarder", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "upgradeToAndCall", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "uri", data: BytesLike): Result;
    events: {
        "ApprovalForAll(address,address,bool)": EventFragment;
        "Initialized(uint64)": EventFragment;
        "OwnershipTransferred(address,address)": EventFragment;
        "TransferBatch(address,address,address,uint256[],uint256[])": EventFragment;
        "TransferSingle(address,address,address,uint256,uint256)": EventFragment;
        "URI(string,uint256)": EventFragment;
        "Upgraded(address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TransferBatch"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TransferSingle"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "URI"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment;
}
interface ApprovalForAllEventObject$1 {
    account: string;
    operator: string;
    approved: boolean;
}
type ApprovalForAllEvent$1 = TypedEvent<[
    string,
    string,
    boolean
], ApprovalForAllEventObject$1>;
type ApprovalForAllEventFilter$1 = TypedEventFilter<ApprovalForAllEvent$1>;
interface InitializedEventObject$2 {
    version: BigNumber;
}
type InitializedEvent$2 = TypedEvent<[BigNumber], InitializedEventObject$2>;
type InitializedEventFilter$2 = TypedEventFilter<InitializedEvent$2>;
interface OwnershipTransferredEventObject$4 {
    previousOwner: string;
    newOwner: string;
}
type OwnershipTransferredEvent$4 = TypedEvent<[
    string,
    string
], OwnershipTransferredEventObject$4>;
type OwnershipTransferredEventFilter$4 = TypedEventFilter<OwnershipTransferredEvent$4>;
interface TransferBatchEventObject {
    operator: string;
    from: string;
    to: string;
    ids: BigNumber[];
    values: BigNumber[];
}
type TransferBatchEvent = TypedEvent<[
    string,
    string,
    string,
    BigNumber[],
    BigNumber[]
], TransferBatchEventObject>;
type TransferBatchEventFilter = TypedEventFilter<TransferBatchEvent>;
interface TransferSingleEventObject {
    operator: string;
    from: string;
    to: string;
    id: BigNumber;
    value: BigNumber;
}
type TransferSingleEvent = TypedEvent<[
    string,
    string,
    string,
    BigNumber,
    BigNumber
], TransferSingleEventObject>;
type TransferSingleEventFilter = TypedEventFilter<TransferSingleEvent>;
interface URIEventObject {
    value: string;
    id: BigNumber;
}
type URIEvent = TypedEvent<[string, BigNumber], URIEventObject>;
type URIEventFilter = TypedEventFilter<URIEvent>;
interface UpgradedEventObject$2 {
    implementation: string;
}
type UpgradedEvent$2 = TypedEvent<[string], UpgradedEventObject$2>;
type UpgradedEventFilter$2 = TypedEventFilter<UpgradedEvent$2>;
interface ERC1155 extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: ERC1155Interface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise<[string]>;
        balanceOf(account: string, id: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>;
        balanceOfBatch(accounts: string[], ids: BigNumberish[], overrides?: CallOverrides): Promise<[BigNumber[]]>;
        baseURI(overrides?: CallOverrides): Promise<[string]>;
        exists(id: BigNumberish, overrides?: CallOverrides): Promise<[boolean]>;
        initialize(_name: string, _symbol: string, _baseuri: string, _lootboxAddress: string, _owner: string, _tf: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        isApprovedForAll(account: string, operator: string, overrides?: CallOverrides): Promise<[boolean]>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<[boolean]>;
        lootboxAddress(overrides?: CallOverrides): Promise<[string]>;
        lootboxMint(account: string, _tokenId: BigNumberish, amount: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        mintNFT(account: string, _tokenId: BigNumberish, amount: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        name(overrides?: CallOverrides): Promise<[string]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        proxiableUUID(overrides?: CallOverrides): Promise<[string]>;
        renounceOwnership(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        safeBatchTransferFrom(from: string, to: string, ids: BigNumberish[], values: BigNumberish[], data: BytesLike, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        safeTransferFrom(from: string, to: string, id: BigNumberish, value: BigNumberish, data: BytesLike, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        setApprovalForAll(operator: string, approved: boolean, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<[boolean]>;
        symbol(overrides?: CallOverrides): Promise<[string]>;
        tf(overrides?: CallOverrides): Promise<[string]>;
        "totalSupply()"(overrides?: CallOverrides): Promise<[BigNumber]>;
        "totalSupply(uint256)"(id: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>;
        transferOwnership(newOwner: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        trustedForwarder(overrides?: CallOverrides): Promise<[string]>;
        upgradeToAndCall(newImplementation: string, data: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        uri(_tokenId: BigNumberish, overrides?: CallOverrides): Promise<[string]>;
    };
    UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise<string>;
    balanceOf(account: string, id: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    balanceOfBatch(accounts: string[], ids: BigNumberish[], overrides?: CallOverrides): Promise<BigNumber[]>;
    baseURI(overrides?: CallOverrides): Promise<string>;
    exists(id: BigNumberish, overrides?: CallOverrides): Promise<boolean>;
    initialize(_name: string, _symbol: string, _baseuri: string, _lootboxAddress: string, _owner: string, _tf: string, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    isApprovedForAll(account: string, operator: string, overrides?: CallOverrides): Promise<boolean>;
    isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<boolean>;
    lootboxAddress(overrides?: CallOverrides): Promise<string>;
    lootboxMint(account: string, _tokenId: BigNumberish, amount: BigNumberish, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    mintNFT(account: string, _tokenId: BigNumberish, amount: BigNumberish, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    name(overrides?: CallOverrides): Promise<string>;
    owner(overrides?: CallOverrides): Promise<string>;
    proxiableUUID(overrides?: CallOverrides): Promise<string>;
    renounceOwnership(overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    safeBatchTransferFrom(from: string, to: string, ids: BigNumberish[], values: BigNumberish[], data: BytesLike, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    safeTransferFrom(from: string, to: string, id: BigNumberish, value: BigNumberish, data: BytesLike, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    setApprovalForAll(operator: string, approved: boolean, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<boolean>;
    symbol(overrides?: CallOverrides): Promise<string>;
    tf(overrides?: CallOverrides): Promise<string>;
    "totalSupply()"(overrides?: CallOverrides): Promise<BigNumber>;
    "totalSupply(uint256)"(id: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    transferOwnership(newOwner: string, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    trustedForwarder(overrides?: CallOverrides): Promise<string>;
    upgradeToAndCall(newImplementation: string, data: BytesLike, overrides?: PayableOverrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    uri(_tokenId: BigNumberish, overrides?: CallOverrides): Promise<string>;
    callStatic: {
        UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise<string>;
        balanceOf(account: string, id: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        balanceOfBatch(accounts: string[], ids: BigNumberish[], overrides?: CallOverrides): Promise<BigNumber[]>;
        baseURI(overrides?: CallOverrides): Promise<string>;
        exists(id: BigNumberish, overrides?: CallOverrides): Promise<boolean>;
        initialize(_name: string, _symbol: string, _baseuri: string, _lootboxAddress: string, _owner: string, _tf: string, overrides?: CallOverrides): Promise<void>;
        isApprovedForAll(account: string, operator: string, overrides?: CallOverrides): Promise<boolean>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<boolean>;
        lootboxAddress(overrides?: CallOverrides): Promise<string>;
        lootboxMint(account: string, _tokenId: BigNumberish, amount: BigNumberish, overrides?: CallOverrides): Promise<void>;
        mintNFT(account: string, _tokenId: BigNumberish, amount: BigNumberish, overrides?: CallOverrides): Promise<void>;
        name(overrides?: CallOverrides): Promise<string>;
        owner(overrides?: CallOverrides): Promise<string>;
        proxiableUUID(overrides?: CallOverrides): Promise<string>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        safeBatchTransferFrom(from: string, to: string, ids: BigNumberish[], values: BigNumberish[], data: BytesLike, overrides?: CallOverrides): Promise<void>;
        safeTransferFrom(from: string, to: string, id: BigNumberish, value: BigNumberish, data: BytesLike, overrides?: CallOverrides): Promise<void>;
        setApprovalForAll(operator: string, approved: boolean, overrides?: CallOverrides): Promise<void>;
        supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<boolean>;
        symbol(overrides?: CallOverrides): Promise<string>;
        tf(overrides?: CallOverrides): Promise<string>;
        "totalSupply()"(overrides?: CallOverrides): Promise<BigNumber>;
        "totalSupply(uint256)"(id: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(newOwner: string, overrides?: CallOverrides): Promise<void>;
        trustedForwarder(overrides?: CallOverrides): Promise<string>;
        upgradeToAndCall(newImplementation: string, data: BytesLike, overrides?: CallOverrides): Promise<void>;
        uri(_tokenId: BigNumberish, overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        "ApprovalForAll(address,address,bool)"(account?: string | null, operator?: string | null, approved?: null): ApprovalForAllEventFilter$1;
        ApprovalForAll(account?: string | null, operator?: string | null, approved?: null): ApprovalForAllEventFilter$1;
        "Initialized(uint64)"(version?: null): InitializedEventFilter$2;
        Initialized(version?: null): InitializedEventFilter$2;
        "OwnershipTransferred(address,address)"(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter$4;
        OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter$4;
        "TransferBatch(address,address,address,uint256[],uint256[])"(operator?: string | null, from?: string | null, to?: string | null, ids?: null, values?: null): TransferBatchEventFilter;
        TransferBatch(operator?: string | null, from?: string | null, to?: string | null, ids?: null, values?: null): TransferBatchEventFilter;
        "TransferSingle(address,address,address,uint256,uint256)"(operator?: string | null, from?: string | null, to?: string | null, id?: null, value?: null): TransferSingleEventFilter;
        TransferSingle(operator?: string | null, from?: string | null, to?: string | null, id?: null, value?: null): TransferSingleEventFilter;
        "URI(string,uint256)"(value?: null, id?: BigNumberish | null): URIEventFilter;
        URI(value?: null, id?: BigNumberish | null): URIEventFilter;
        "Upgraded(address)"(implementation?: string | null): UpgradedEventFilter$2;
        Upgraded(implementation?: string | null): UpgradedEventFilter$2;
    };
    estimateGas: {
        UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise<BigNumber>;
        balanceOf(account: string, id: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        balanceOfBatch(accounts: string[], ids: BigNumberish[], overrides?: CallOverrides): Promise<BigNumber>;
        baseURI(overrides?: CallOverrides): Promise<BigNumber>;
        exists(id: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_name: string, _symbol: string, _baseuri: string, _lootboxAddress: string, _owner: string, _tf: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        isApprovedForAll(account: string, operator: string, overrides?: CallOverrides): Promise<BigNumber>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<BigNumber>;
        lootboxAddress(overrides?: CallOverrides): Promise<BigNumber>;
        lootboxMint(account: string, _tokenId: BigNumberish, amount: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        mintNFT(account: string, _tokenId: BigNumberish, amount: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        proxiableUUID(overrides?: CallOverrides): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        safeBatchTransferFrom(from: string, to: string, ids: BigNumberish[], values: BigNumberish[], data: BytesLike, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        safeTransferFrom(from: string, to: string, id: BigNumberish, value: BigNumberish, data: BytesLike, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        setApprovalForAll(operator: string, approved: boolean, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
        symbol(overrides?: CallOverrides): Promise<BigNumber>;
        tf(overrides?: CallOverrides): Promise<BigNumber>;
        "totalSupply()"(overrides?: CallOverrides): Promise<BigNumber>;
        "totalSupply(uint256)"(id: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(newOwner: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        trustedForwarder(overrides?: CallOverrides): Promise<BigNumber>;
        upgradeToAndCall(newImplementation: string, data: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<BigNumber>;
        uri(_tokenId: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        balanceOf(account: string, id: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        balanceOfBatch(accounts: string[], ids: BigNumberish[], overrides?: CallOverrides): Promise<PopulatedTransaction>;
        baseURI(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        exists(id: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(_name: string, _symbol: string, _baseuri: string, _lootboxAddress: string, _owner: string, _tf: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        isApprovedForAll(account: string, operator: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lootboxAddress(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lootboxMint(account: string, _tokenId: BigNumberish, amount: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        mintNFT(account: string, _tokenId: BigNumberish, amount: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        name(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        proxiableUUID(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        safeBatchTransferFrom(from: string, to: string, ids: BigNumberish[], values: BigNumberish[], data: BytesLike, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        safeTransferFrom(from: string, to: string, id: BigNumberish, value: BigNumberish, data: BytesLike, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        setApprovalForAll(operator: string, approved: boolean, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        symbol(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        tf(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        "totalSupply()"(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        "totalSupply(uint256)"(id: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        trustedForwarder(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        upgradeToAndCall(newImplementation: string, data: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        uri(_tokenId: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}

interface ERC20Interface extends utils.Interface {
    functions: {
        "UPGRADE_INTERFACE_VERSION()": FunctionFragment;
        "allowance(address,address)": FunctionFragment;
        "approve(address,uint256)": FunctionFragment;
        "balanceOf(address)": FunctionFragment;
        "decimals()": FunctionFragment;
        "initialize(string,string,address,address,address)": FunctionFragment;
        "isTrustedForwarder(address)": FunctionFragment;
        "lootboxAddress()": FunctionFragment;
        "lootboxMint(address,uint256)": FunctionFragment;
        "mint(address,uint256)": FunctionFragment;
        "name()": FunctionFragment;
        "owner()": FunctionFragment;
        "proxiableUUID()": FunctionFragment;
        "renounceOwnership()": FunctionFragment;
        "symbol()": FunctionFragment;
        "totalSupply()": FunctionFragment;
        "transfer(address,uint256)": FunctionFragment;
        "transferFrom(address,address,uint256)": FunctionFragment;
        "transferOwnership(address)": FunctionFragment;
        "trustedForwarder()": FunctionFragment;
        "upgradeToAndCall(address,bytes)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "UPGRADE_INTERFACE_VERSION" | "allowance" | "approve" | "balanceOf" | "decimals" | "initialize" | "isTrustedForwarder" | "lootboxAddress" | "lootboxMint" | "mint" | "name" | "owner" | "proxiableUUID" | "renounceOwnership" | "symbol" | "totalSupply" | "transfer" | "transferFrom" | "transferOwnership" | "trustedForwarder" | "upgradeToAndCall"): FunctionFragment;
    encodeFunctionData(functionFragment: "UPGRADE_INTERFACE_VERSION", values?: undefined): string;
    encodeFunctionData(functionFragment: "allowance", values: [string, string]): string;
    encodeFunctionData(functionFragment: "approve", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "balanceOf", values: [string]): string;
    encodeFunctionData(functionFragment: "decimals", values?: undefined): string;
    encodeFunctionData(functionFragment: "initialize", values: [string, string, string, string, string]): string;
    encodeFunctionData(functionFragment: "isTrustedForwarder", values: [string]): string;
    encodeFunctionData(functionFragment: "lootboxAddress", values?: undefined): string;
    encodeFunctionData(functionFragment: "lootboxMint", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "mint", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "name", values?: undefined): string;
    encodeFunctionData(functionFragment: "owner", values?: undefined): string;
    encodeFunctionData(functionFragment: "proxiableUUID", values?: undefined): string;
    encodeFunctionData(functionFragment: "renounceOwnership", values?: undefined): string;
    encodeFunctionData(functionFragment: "symbol", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalSupply", values?: undefined): string;
    encodeFunctionData(functionFragment: "transfer", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "transferFrom", values: [string, string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "transferOwnership", values: [string]): string;
    encodeFunctionData(functionFragment: "trustedForwarder", values?: undefined): string;
    encodeFunctionData(functionFragment: "upgradeToAndCall", values: [string, BytesLike]): string;
    decodeFunctionResult(functionFragment: "UPGRADE_INTERFACE_VERSION", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isTrustedForwarder", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lootboxAddress", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lootboxMint", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "name", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "proxiableUUID", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "renounceOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalSupply", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transferFrom", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transferOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "trustedForwarder", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "upgradeToAndCall", data: BytesLike): Result;
    events: {
        "Approval(address,address,uint256)": EventFragment;
        "Initialized(uint64)": EventFragment;
        "OwnershipTransferred(address,address)": EventFragment;
        "Transfer(address,address,uint256)": EventFragment;
        "Upgraded(address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment;
}
interface ApprovalEventObject$1 {
    owner: string;
    spender: string;
    value: BigNumber;
}
type ApprovalEvent$1 = TypedEvent<[
    string,
    string,
    BigNumber
], ApprovalEventObject$1>;
type ApprovalEventFilter$1 = TypedEventFilter<ApprovalEvent$1>;
interface InitializedEventObject$1 {
    version: BigNumber;
}
type InitializedEvent$1 = TypedEvent<[BigNumber], InitializedEventObject$1>;
type InitializedEventFilter$1 = TypedEventFilter<InitializedEvent$1>;
interface OwnershipTransferredEventObject$3 {
    previousOwner: string;
    newOwner: string;
}
type OwnershipTransferredEvent$3 = TypedEvent<[
    string,
    string
], OwnershipTransferredEventObject$3>;
type OwnershipTransferredEventFilter$3 = TypedEventFilter<OwnershipTransferredEvent$3>;
interface TransferEventObject$1 {
    from: string;
    to: string;
    value: BigNumber;
}
type TransferEvent$1 = TypedEvent<[
    string,
    string,
    BigNumber
], TransferEventObject$1>;
type TransferEventFilter$1 = TypedEventFilter<TransferEvent$1>;
interface UpgradedEventObject$1 {
    implementation: string;
}
type UpgradedEvent$1 = TypedEvent<[string], UpgradedEventObject$1>;
type UpgradedEventFilter$1 = TypedEventFilter<UpgradedEvent$1>;
interface ERC20 extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: ERC20Interface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise<[string]>;
        allowance(owner: string, spender: string, overrides?: CallOverrides): Promise<[BigNumber]>;
        approve(spender: string, value: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>;
        decimals(overrides?: CallOverrides): Promise<[number]>;
        initialize(_name: string, _symbol: string, _lootboxAddress: string, _owner: string, _tf: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<[boolean]>;
        lootboxAddress(overrides?: CallOverrides): Promise<[string]>;
        lootboxMint(to: string, amount: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        mint(to: string, amount: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        name(overrides?: CallOverrides): Promise<[string]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        proxiableUUID(overrides?: CallOverrides): Promise<[string]>;
        renounceOwnership(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        symbol(overrides?: CallOverrides): Promise<[string]>;
        totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>;
        transfer(to: string, value: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        transferFrom(from: string, to: string, value: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        transferOwnership(newOwner: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        trustedForwarder(overrides?: CallOverrides): Promise<[string]>;
        upgradeToAndCall(newImplementation: string, data: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<ContractTransaction>;
    };
    UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise<string>;
    allowance(owner: string, spender: string, overrides?: CallOverrides): Promise<BigNumber>;
    approve(spender: string, value: BigNumberish, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    balanceOf(account: string, overrides?: CallOverrides): Promise<BigNumber>;
    decimals(overrides?: CallOverrides): Promise<number>;
    initialize(_name: string, _symbol: string, _lootboxAddress: string, _owner: string, _tf: string, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<boolean>;
    lootboxAddress(overrides?: CallOverrides): Promise<string>;
    lootboxMint(to: string, amount: BigNumberish, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    mint(to: string, amount: BigNumberish, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    name(overrides?: CallOverrides): Promise<string>;
    owner(overrides?: CallOverrides): Promise<string>;
    proxiableUUID(overrides?: CallOverrides): Promise<string>;
    renounceOwnership(overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    symbol(overrides?: CallOverrides): Promise<string>;
    totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
    transfer(to: string, value: BigNumberish, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    transferFrom(from: string, to: string, value: BigNumberish, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    transferOwnership(newOwner: string, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    trustedForwarder(overrides?: CallOverrides): Promise<string>;
    upgradeToAndCall(newImplementation: string, data: BytesLike, overrides?: PayableOverrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    callStatic: {
        UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise<string>;
        allowance(owner: string, spender: string, overrides?: CallOverrides): Promise<BigNumber>;
        approve(spender: string, value: BigNumberish, overrides?: CallOverrides): Promise<boolean>;
        balanceOf(account: string, overrides?: CallOverrides): Promise<BigNumber>;
        decimals(overrides?: CallOverrides): Promise<number>;
        initialize(_name: string, _symbol: string, _lootboxAddress: string, _owner: string, _tf: string, overrides?: CallOverrides): Promise<void>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<boolean>;
        lootboxAddress(overrides?: CallOverrides): Promise<string>;
        lootboxMint(to: string, amount: BigNumberish, overrides?: CallOverrides): Promise<void>;
        mint(to: string, amount: BigNumberish, overrides?: CallOverrides): Promise<void>;
        name(overrides?: CallOverrides): Promise<string>;
        owner(overrides?: CallOverrides): Promise<string>;
        proxiableUUID(overrides?: CallOverrides): Promise<string>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        symbol(overrides?: CallOverrides): Promise<string>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        transfer(to: string, value: BigNumberish, overrides?: CallOverrides): Promise<boolean>;
        transferFrom(from: string, to: string, value: BigNumberish, overrides?: CallOverrides): Promise<boolean>;
        transferOwnership(newOwner: string, overrides?: CallOverrides): Promise<void>;
        trustedForwarder(overrides?: CallOverrides): Promise<string>;
        upgradeToAndCall(newImplementation: string, data: BytesLike, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "Approval(address,address,uint256)"(owner?: string | null, spender?: string | null, value?: null): ApprovalEventFilter$1;
        Approval(owner?: string | null, spender?: string | null, value?: null): ApprovalEventFilter$1;
        "Initialized(uint64)"(version?: null): InitializedEventFilter$1;
        Initialized(version?: null): InitializedEventFilter$1;
        "OwnershipTransferred(address,address)"(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter$3;
        OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter$3;
        "Transfer(address,address,uint256)"(from?: string | null, to?: string | null, value?: null): TransferEventFilter$1;
        Transfer(from?: string | null, to?: string | null, value?: null): TransferEventFilter$1;
        "Upgraded(address)"(implementation?: string | null): UpgradedEventFilter$1;
        Upgraded(implementation?: string | null): UpgradedEventFilter$1;
    };
    estimateGas: {
        UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise<BigNumber>;
        allowance(owner: string, spender: string, overrides?: CallOverrides): Promise<BigNumber>;
        approve(spender: string, value: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        balanceOf(account: string, overrides?: CallOverrides): Promise<BigNumber>;
        decimals(overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_name: string, _symbol: string, _lootboxAddress: string, _owner: string, _tf: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<BigNumber>;
        lootboxAddress(overrides?: CallOverrides): Promise<BigNumber>;
        lootboxMint(to: string, amount: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        mint(to: string, amount: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        proxiableUUID(overrides?: CallOverrides): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        symbol(overrides?: CallOverrides): Promise<BigNumber>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        transfer(to: string, value: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        transferFrom(from: string, to: string, value: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        transferOwnership(newOwner: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        trustedForwarder(overrides?: CallOverrides): Promise<BigNumber>;
        upgradeToAndCall(newImplementation: string, data: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        allowance(owner: string, spender: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        approve(spender: string, value: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        balanceOf(account: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        decimals(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(_name: string, _symbol: string, _lootboxAddress: string, _owner: string, _tf: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lootboxAddress(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lootboxMint(to: string, amount: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        mint(to: string, amount: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        name(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        proxiableUUID(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        symbol(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalSupply(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transfer(to: string, value: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        transferFrom(from: string, to: string, value: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        trustedForwarder(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        upgradeToAndCall(newImplementation: string, data: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
    };
}

interface ERC721Interface extends utils.Interface {
    functions: {
        "UPGRADE_INTERFACE_VERSION()": FunctionFragment;
        "approve(address,uint256)": FunctionFragment;
        "balanceOf(address)": FunctionFragment;
        "baseURI()": FunctionFragment;
        "getApproved(uint256)": FunctionFragment;
        "initialize(string,string,string,address,uint256,uint256,uint256[],address,address)": FunctionFragment;
        "isApprovedForAll(address,address)": FunctionFragment;
        "isTokenIdDisallowed(uint256)": FunctionFragment;
        "isTrustedForwarder(address)": FunctionFragment;
        "lootboxAddress()": FunctionFragment;
        "lootboxMint(address,uint256)": FunctionFragment;
        "mintNFT(address,uint256)": FunctionFragment;
        "name()": FunctionFragment;
        "owner()": FunctionFragment;
        "ownerOf(uint256)": FunctionFragment;
        "proxiableUUID()": FunctionFragment;
        "renounceOwnership()": FunctionFragment;
        "safeTransferFrom(address,address,uint256)": FunctionFragment;
        "safeTransferFrom(address,address,uint256,bytes)": FunctionFragment;
        "setApprovalForAll(address,bool)": FunctionFragment;
        "supportsInterface(bytes4)": FunctionFragment;
        "symbol()": FunctionFragment;
        "tokenURI(uint256)": FunctionFragment;
        "transferFrom(address,address,uint256)": FunctionFragment;
        "transferOwnership(address)": FunctionFragment;
        "trustedForwarder()": FunctionFragment;
        "upgradeToAndCall(address,bytes)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "UPGRADE_INTERFACE_VERSION" | "approve" | "balanceOf" | "baseURI" | "getApproved" | "initialize" | "isApprovedForAll" | "isTokenIdDisallowed" | "isTrustedForwarder" | "lootboxAddress" | "lootboxMint" | "mintNFT" | "name" | "owner" | "ownerOf" | "proxiableUUID" | "renounceOwnership" | "safeTransferFrom(address,address,uint256)" | "safeTransferFrom(address,address,uint256,bytes)" | "setApprovalForAll" | "supportsInterface" | "symbol" | "tokenURI" | "transferFrom" | "transferOwnership" | "trustedForwarder" | "upgradeToAndCall"): FunctionFragment;
    encodeFunctionData(functionFragment: "UPGRADE_INTERFACE_VERSION", values?: undefined): string;
    encodeFunctionData(functionFragment: "approve", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "balanceOf", values: [string]): string;
    encodeFunctionData(functionFragment: "baseURI", values?: undefined): string;
    encodeFunctionData(functionFragment: "getApproved", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "initialize", values: [
        string,
        string,
        string,
        string,
        BigNumberish,
        BigNumberish,
        BigNumberish[],
        string,
        string
    ]): string;
    encodeFunctionData(functionFragment: "isApprovedForAll", values: [string, string]): string;
    encodeFunctionData(functionFragment: "isTokenIdDisallowed", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "isTrustedForwarder", values: [string]): string;
    encodeFunctionData(functionFragment: "lootboxAddress", values?: undefined): string;
    encodeFunctionData(functionFragment: "lootboxMint", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "mintNFT", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "name", values?: undefined): string;
    encodeFunctionData(functionFragment: "owner", values?: undefined): string;
    encodeFunctionData(functionFragment: "ownerOf", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "proxiableUUID", values?: undefined): string;
    encodeFunctionData(functionFragment: "renounceOwnership", values?: undefined): string;
    encodeFunctionData(functionFragment: "safeTransferFrom(address,address,uint256)", values: [string, string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "safeTransferFrom(address,address,uint256,bytes)", values: [string, string, BigNumberish, BytesLike]): string;
    encodeFunctionData(functionFragment: "setApprovalForAll", values: [string, boolean]): string;
    encodeFunctionData(functionFragment: "supportsInterface", values: [BytesLike]): string;
    encodeFunctionData(functionFragment: "symbol", values?: undefined): string;
    encodeFunctionData(functionFragment: "tokenURI", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "transferFrom", values: [string, string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "transferOwnership", values: [string]): string;
    encodeFunctionData(functionFragment: "trustedForwarder", values?: undefined): string;
    encodeFunctionData(functionFragment: "upgradeToAndCall", values: [string, BytesLike]): string;
    decodeFunctionResult(functionFragment: "UPGRADE_INTERFACE_VERSION", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "baseURI", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getApproved", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isApprovedForAll", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isTokenIdDisallowed", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isTrustedForwarder", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lootboxAddress", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lootboxMint", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "mintNFT", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "name", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "proxiableUUID", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "renounceOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "safeTransferFrom(address,address,uint256)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "safeTransferFrom(address,address,uint256,bytes)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setApprovalForAll", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "supportsInterface", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transferFrom", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transferOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "trustedForwarder", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "upgradeToAndCall", data: BytesLike): Result;
    events: {
        "Approval(address,address,uint256)": EventFragment;
        "ApprovalForAll(address,address,bool)": EventFragment;
        "Initialized(uint64)": EventFragment;
        "OwnershipTransferred(address,address)": EventFragment;
        "Transfer(address,address,uint256)": EventFragment;
        "Upgraded(address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment;
}
interface ApprovalEventObject {
    owner: string;
    approved: string;
    tokenId: BigNumber;
}
type ApprovalEvent = TypedEvent<[
    string,
    string,
    BigNumber
], ApprovalEventObject>;
type ApprovalEventFilter = TypedEventFilter<ApprovalEvent>;
interface ApprovalForAllEventObject {
    owner: string;
    operator: string;
    approved: boolean;
}
type ApprovalForAllEvent = TypedEvent<[
    string,
    string,
    boolean
], ApprovalForAllEventObject>;
type ApprovalForAllEventFilter = TypedEventFilter<ApprovalForAllEvent>;
interface InitializedEventObject {
    version: BigNumber;
}
type InitializedEvent = TypedEvent<[BigNumber], InitializedEventObject>;
type InitializedEventFilter = TypedEventFilter<InitializedEvent>;
interface OwnershipTransferredEventObject$2 {
    previousOwner: string;
    newOwner: string;
}
type OwnershipTransferredEvent$2 = TypedEvent<[
    string,
    string
], OwnershipTransferredEventObject$2>;
type OwnershipTransferredEventFilter$2 = TypedEventFilter<OwnershipTransferredEvent$2>;
interface TransferEventObject {
    from: string;
    to: string;
    tokenId: BigNumber;
}
type TransferEvent = TypedEvent<[
    string,
    string,
    BigNumber
], TransferEventObject>;
type TransferEventFilter = TypedEventFilter<TransferEvent>;
interface UpgradedEventObject {
    implementation: string;
}
type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>;
type UpgradedEventFilter = TypedEventFilter<UpgradedEvent>;
interface ERC721 extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: ERC721Interface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise<[string]>;
        approve(to: string, tokenId: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        balanceOf(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>;
        baseURI(overrides?: CallOverrides): Promise<[string]>;
        getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise<[string]>;
        initialize(_name: string, _symbol: string, baseuri: string, _lootboxAddress: string, _disallowedTokenIdStart: BigNumberish, _disallowedTokenIdEnd: BigNumberish, _disallowedTokenIds: BigNumberish[], _owner: string, _tf: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise<[boolean]>;
        isTokenIdDisallowed(_tokenId: BigNumberish, overrides?: CallOverrides): Promise<[boolean]>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<[boolean]>;
        lootboxAddress(overrides?: CallOverrides): Promise<[string]>;
        lootboxMint(_to: string, _tokenId: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        mintNFT(_to: string, _tokenId: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        name(overrides?: CallOverrides): Promise<[string]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise<[string]>;
        proxiableUUID(overrides?: CallOverrides): Promise<[string]>;
        renounceOwnership(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        "safeTransferFrom(address,address,uint256)"(from: string, to: string, tokenId: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        "safeTransferFrom(address,address,uint256,bytes)"(from: string, to: string, tokenId: BigNumberish, data: BytesLike, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        setApprovalForAll(operator: string, approved: boolean, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<[boolean]>;
        symbol(overrides?: CallOverrides): Promise<[string]>;
        tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise<[string]>;
        transferFrom(from: string, to: string, tokenId: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        transferOwnership(newOwner: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        trustedForwarder(overrides?: CallOverrides): Promise<[string]>;
        upgradeToAndCall(newImplementation: string, data: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<ContractTransaction>;
    };
    UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise<string>;
    approve(to: string, tokenId: BigNumberish, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    balanceOf(owner: string, overrides?: CallOverrides): Promise<BigNumber>;
    baseURI(overrides?: CallOverrides): Promise<string>;
    getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise<string>;
    initialize(_name: string, _symbol: string, baseuri: string, _lootboxAddress: string, _disallowedTokenIdStart: BigNumberish, _disallowedTokenIdEnd: BigNumberish, _disallowedTokenIds: BigNumberish[], _owner: string, _tf: string, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise<boolean>;
    isTokenIdDisallowed(_tokenId: BigNumberish, overrides?: CallOverrides): Promise<boolean>;
    isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<boolean>;
    lootboxAddress(overrides?: CallOverrides): Promise<string>;
    lootboxMint(_to: string, _tokenId: BigNumberish, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    mintNFT(_to: string, _tokenId: BigNumberish, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    name(overrides?: CallOverrides): Promise<string>;
    owner(overrides?: CallOverrides): Promise<string>;
    ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise<string>;
    proxiableUUID(overrides?: CallOverrides): Promise<string>;
    renounceOwnership(overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    "safeTransferFrom(address,address,uint256)"(from: string, to: string, tokenId: BigNumberish, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    "safeTransferFrom(address,address,uint256,bytes)"(from: string, to: string, tokenId: BigNumberish, data: BytesLike, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    setApprovalForAll(operator: string, approved: boolean, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<boolean>;
    symbol(overrides?: CallOverrides): Promise<string>;
    tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise<string>;
    transferFrom(from: string, to: string, tokenId: BigNumberish, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    transferOwnership(newOwner: string, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    trustedForwarder(overrides?: CallOverrides): Promise<string>;
    upgradeToAndCall(newImplementation: string, data: BytesLike, overrides?: PayableOverrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    callStatic: {
        UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise<string>;
        approve(to: string, tokenId: BigNumberish, overrides?: CallOverrides): Promise<void>;
        balanceOf(owner: string, overrides?: CallOverrides): Promise<BigNumber>;
        baseURI(overrides?: CallOverrides): Promise<string>;
        getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise<string>;
        initialize(_name: string, _symbol: string, baseuri: string, _lootboxAddress: string, _disallowedTokenIdStart: BigNumberish, _disallowedTokenIdEnd: BigNumberish, _disallowedTokenIds: BigNumberish[], _owner: string, _tf: string, overrides?: CallOverrides): Promise<void>;
        isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise<boolean>;
        isTokenIdDisallowed(_tokenId: BigNumberish, overrides?: CallOverrides): Promise<boolean>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<boolean>;
        lootboxAddress(overrides?: CallOverrides): Promise<string>;
        lootboxMint(_to: string, _tokenId: BigNumberish, overrides?: CallOverrides): Promise<void>;
        mintNFT(_to: string, _tokenId: BigNumberish, overrides?: CallOverrides): Promise<void>;
        name(overrides?: CallOverrides): Promise<string>;
        owner(overrides?: CallOverrides): Promise<string>;
        ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise<string>;
        proxiableUUID(overrides?: CallOverrides): Promise<string>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        "safeTransferFrom(address,address,uint256)"(from: string, to: string, tokenId: BigNumberish, overrides?: CallOverrides): Promise<void>;
        "safeTransferFrom(address,address,uint256,bytes)"(from: string, to: string, tokenId: BigNumberish, data: BytesLike, overrides?: CallOverrides): Promise<void>;
        setApprovalForAll(operator: string, approved: boolean, overrides?: CallOverrides): Promise<void>;
        supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<boolean>;
        symbol(overrides?: CallOverrides): Promise<string>;
        tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise<string>;
        transferFrom(from: string, to: string, tokenId: BigNumberish, overrides?: CallOverrides): Promise<void>;
        transferOwnership(newOwner: string, overrides?: CallOverrides): Promise<void>;
        trustedForwarder(overrides?: CallOverrides): Promise<string>;
        upgradeToAndCall(newImplementation: string, data: BytesLike, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "Approval(address,address,uint256)"(owner?: string | null, approved?: string | null, tokenId?: BigNumberish | null): ApprovalEventFilter;
        Approval(owner?: string | null, approved?: string | null, tokenId?: BigNumberish | null): ApprovalEventFilter;
        "ApprovalForAll(address,address,bool)"(owner?: string | null, operator?: string | null, approved?: null): ApprovalForAllEventFilter;
        ApprovalForAll(owner?: string | null, operator?: string | null, approved?: null): ApprovalForAllEventFilter;
        "Initialized(uint64)"(version?: null): InitializedEventFilter;
        Initialized(version?: null): InitializedEventFilter;
        "OwnershipTransferred(address,address)"(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter$2;
        OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter$2;
        "Transfer(address,address,uint256)"(from?: string | null, to?: string | null, tokenId?: BigNumberish | null): TransferEventFilter;
        Transfer(from?: string | null, to?: string | null, tokenId?: BigNumberish | null): TransferEventFilter;
        "Upgraded(address)"(implementation?: string | null): UpgradedEventFilter;
        Upgraded(implementation?: string | null): UpgradedEventFilter;
    };
    estimateGas: {
        UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise<BigNumber>;
        approve(to: string, tokenId: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        balanceOf(owner: string, overrides?: CallOverrides): Promise<BigNumber>;
        baseURI(overrides?: CallOverrides): Promise<BigNumber>;
        getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_name: string, _symbol: string, baseuri: string, _lootboxAddress: string, _disallowedTokenIdStart: BigNumberish, _disallowedTokenIdEnd: BigNumberish, _disallowedTokenIds: BigNumberish[], _owner: string, _tf: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise<BigNumber>;
        isTokenIdDisallowed(_tokenId: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<BigNumber>;
        lootboxAddress(overrides?: CallOverrides): Promise<BigNumber>;
        lootboxMint(_to: string, _tokenId: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        mintNFT(_to: string, _tokenId: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        proxiableUUID(overrides?: CallOverrides): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        "safeTransferFrom(address,address,uint256)"(from: string, to: string, tokenId: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        "safeTransferFrom(address,address,uint256,bytes)"(from: string, to: string, tokenId: BigNumberish, data: BytesLike, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        setApprovalForAll(operator: string, approved: boolean, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
        symbol(overrides?: CallOverrides): Promise<BigNumber>;
        tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        transferFrom(from: string, to: string, tokenId: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        transferOwnership(newOwner: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        trustedForwarder(overrides?: CallOverrides): Promise<BigNumber>;
        upgradeToAndCall(newImplementation: string, data: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        UPGRADE_INTERFACE_VERSION(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        approve(to: string, tokenId: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        balanceOf(owner: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        baseURI(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(_name: string, _symbol: string, baseuri: string, _lootboxAddress: string, _disallowedTokenIdStart: BigNumberish, _disallowedTokenIdEnd: BigNumberish, _disallowedTokenIds: BigNumberish[], _owner: string, _tf: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isTokenIdDisallowed(_tokenId: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lootboxAddress(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lootboxMint(_to: string, _tokenId: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        mintNFT(_to: string, _tokenId: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        name(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        proxiableUUID(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        "safeTransferFrom(address,address,uint256)"(from: string, to: string, tokenId: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        "safeTransferFrom(address,address,uint256,bytes)"(from: string, to: string, tokenId: BigNumberish, data: BytesLike, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        setApprovalForAll(operator: string, approved: boolean, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        symbol(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transferFrom(from: string, to: string, tokenId: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        trustedForwarder(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        upgradeToAndCall(newImplementation: string, data: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
    };
}

interface ILootBoxInterface extends utils.Interface {
    functions: {};
    events: {
        "ItemRemoved(address)": EventFragment;
        "Item_ERC1155_Updated(address,address,uint256[],uint256[])": EventFragment;
        "Item_ERC20_Updated(address,address,uint256)": EventFragment;
        "Item_ERC721_Updated(address,address,uint256[])": EventFragment;
        "ItemsAdded((address,(uint256,uint256)[],(uint256,uint256),uint256,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256[],string,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256,(uint256,uint256),uint256[],uint256[],(uint256,uint256)[],string,string,string)[])": EventFragment;
        "LootBoxActivated()": EventFragment;
        "LootBoxClaimed(address,(address,uint8,uint256,uint256)[])": EventFragment;
        "LootBoxDeactivated()": EventFragment;
        "LootBoxOpened(address,uint256,uint8)": EventFragment;
        "LootBoxPermanentlyStoped()": EventFragment;
        "LootboxCreated(address,address,bool,address,bytes32[],uint256[],uint256)": EventFragment;
        "OpensReconfigured(bytes32[],uint256[],uint256)": EventFragment;
        "RngReceived(uint256,address,uint256[])": EventFragment;
        "TrustedForwarderChanged(address,address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "ItemRemoved"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC1155_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC20_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC721_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ItemsAdded"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxActivated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxClaimed"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxDeactivated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxOpened"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxPermanentlyStoped"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootboxCreated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OpensReconfigured"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RngReceived"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TrustedForwarderChanged"): EventFragment;
}
interface ItemRemovedEventObject$3 {
    addr: string;
}
type ItemRemovedEvent$3 = TypedEvent<[string], ItemRemovedEventObject$3>;
type ItemRemovedEventFilter$3 = TypedEventFilter<ItemRemovedEvent$3>;
interface Item_ERC1155_UpdatedEventObject$3 {
    contractAddress: string;
    tokenReceiver: string;
    tokenIdsSent: BigNumber[];
    tokenAmountsSent: BigNumber[];
}
type Item_ERC1155_UpdatedEvent$3 = TypedEvent<[
    string,
    string,
    BigNumber[],
    BigNumber[]
], Item_ERC1155_UpdatedEventObject$3>;
type Item_ERC1155_UpdatedEventFilter$3 = TypedEventFilter<Item_ERC1155_UpdatedEvent$3>;
interface Item_ERC20_UpdatedEventObject$3 {
    contractAddress: string;
    tokenReceiver: string;
    tokenAmountSent: BigNumber;
}
type Item_ERC20_UpdatedEvent$3 = TypedEvent<[
    string,
    string,
    BigNumber
], Item_ERC20_UpdatedEventObject$3>;
type Item_ERC20_UpdatedEventFilter$3 = TypedEventFilter<Item_ERC20_UpdatedEvent$3>;
interface Item_ERC721_UpdatedEventObject$3 {
    contractAddress: string;
    tokenReceiver: string;
    tokenIdsSent: BigNumber[];
}
type Item_ERC721_UpdatedEvent$3 = TypedEvent<[
    string,
    string,
    BigNumber[]
], Item_ERC721_UpdatedEventObject$3>;
type Item_ERC721_UpdatedEventFilter$3 = TypedEventFilter<Item_ERC721_UpdatedEvent$3>;
interface ItemsAddedEventObject$3 {
    erc20Items: ILootBox$3.Item_ERC20StructOutput[];
    erc721Items: ILootBox$3.Item_ERC721StructOutput[];
    erc1155Items: ILootBox$3.Item_ERC1155StructOutput[];
}
type ItemsAddedEvent$3 = TypedEvent<[
    ILootBox$3.Item_ERC20StructOutput[],
    ILootBox$3.Item_ERC721StructOutput[],
    ILootBox$3.Item_ERC1155StructOutput[]
], ItemsAddedEventObject$3>;
type ItemsAddedEventFilter$3 = TypedEventFilter<ItemsAddedEvent$3>;
interface LootBoxActivatedEventObject$3 {
}
type LootBoxActivatedEvent$3 = TypedEvent<[], LootBoxActivatedEventObject$3>;
type LootBoxActivatedEventFilter$3 = TypedEventFilter<LootBoxActivatedEvent$3>;
interface LootBoxClaimedEventObject$3 {
    claimer: string;
    pickedTokens: ILootBox$3.PickedTokenStructOutput[];
}
type LootBoxClaimedEvent$3 = TypedEvent<[
    string,
    ILootBox$3.PickedTokenStructOutput[]
], LootBoxClaimedEventObject$3>;
type LootBoxClaimedEventFilter$3 = TypedEventFilter<LootBoxClaimedEvent$3>;
interface LootBoxDeactivatedEventObject$3 {
}
type LootBoxDeactivatedEvent$3 = TypedEvent<[
], LootBoxDeactivatedEventObject$3>;
type LootBoxDeactivatedEventFilter$3 = TypedEventFilter<LootBoxDeactivatedEvent$3>;
interface LootBoxOpenedEventObject$3 {
    requester: string;
    requestId: BigNumber;
    rngCount: number;
}
type LootBoxOpenedEvent$3 = TypedEvent<[
    string,
    BigNumber,
    number
], LootBoxOpenedEventObject$3>;
type LootBoxOpenedEventFilter$3 = TypedEventFilter<LootBoxOpenedEvent$3>;
interface LootBoxPermanentlyStopedEventObject$3 {
}
type LootBoxPermanentlyStopedEvent$3 = TypedEvent<[
], LootBoxPermanentlyStopedEventObject$3>;
type LootBoxPermanentlyStopedEventFilter$3 = TypedEventFilter<LootBoxPermanentlyStopedEvent$3>;
interface LootboxCreatedEventObject$3 {
    lootbox: string;
    creator: string;
    active: boolean;
    trustedForwarder: string;
    merkleRoots: string[];
    opens: BigNumber[];
    globalOpens: BigNumber;
}
type LootboxCreatedEvent$3 = TypedEvent<[
    string,
    string,
    boolean,
    string,
    string[],
    BigNumber[],
    BigNumber
], LootboxCreatedEventObject$3>;
type LootboxCreatedEventFilter$3 = TypedEventFilter<LootboxCreatedEvent$3>;
interface OpensReconfiguredEventObject$3 {
    merkleRoots: string[];
    opens: BigNumber[];
    globalOpens: BigNumber;
}
type OpensReconfiguredEvent$3 = TypedEvent<[
    string[],
    BigNumber[],
    BigNumber
], OpensReconfiguredEventObject$3>;
type OpensReconfiguredEventFilter$3 = TypedEventFilter<OpensReconfiguredEvent$3>;
interface RngReceivedEventObject$3 {
    requestId: BigNumber;
    requester: string;
    rngList: BigNumber[];
}
type RngReceivedEvent$3 = TypedEvent<[
    BigNumber,
    string,
    BigNumber[]
], RngReceivedEventObject$3>;
type RngReceivedEventFilter$3 = TypedEventFilter<RngReceivedEvent$3>;
interface TrustedForwarderChangedEventObject$3 {
    oldTrustedForwarder: string;
    newTrustedForwarder: string;
}
type TrustedForwarderChangedEvent$3 = TypedEvent<[
    string,
    string
], TrustedForwarderChangedEventObject$3>;
type TrustedForwarderChangedEventFilter$3 = TypedEventFilter<TrustedForwarderChangedEvent$3>;
declare namespace ILootBox$3 {
    type Item_ERC20_DistributionStruct = {
        amount: BigNumberish;
        chance: BigNumberish;
    };
    type Item_ERC20_DistributionStructOutput = [BigNumber, BigNumber] & {
        amount: BigNumber;
        chance: BigNumber;
    };
    type RangeStruct = {
        start: BigNumberish;
        end: BigNumberish;
    };
    type RangeStructOutput = [BigNumber, BigNumber] & {
        start: BigNumber;
        end: BigNumber;
    };
    type Item_ERC20Struct = {
        contractAddress: string;
        distributions: ILootBox$3.Item_ERC20_DistributionStruct[];
        pickRange: ILootBox$3.RangeStruct;
        tokenAmount: BigNumberish;
        name: string;
        symbol: string;
    };
    type Item_ERC20StructOutput = [
        string,
        ILootBox$3.Item_ERC20_DistributionStructOutput[],
        ILootBox$3.RangeStructOutput,
        BigNumber,
        string,
        string
    ] & {
        contractAddress: string;
        distributions: ILootBox$3.Item_ERC20_DistributionStructOutput[];
        pickRange: ILootBox$3.RangeStructOutput;
        tokenAmount: BigNumber;
        name: string;
        symbol: string;
    };
    type Item_ERC721Struct = {
        contractAddress: string;
        pickRange: ILootBox$3.RangeStruct;
        inputTokenIdRange: ILootBox$3.RangeStruct;
        inputTokenIds: BigNumberish[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC721StructOutput = [
        string,
        ILootBox$3.RangeStructOutput,
        ILootBox$3.RangeStructOutput,
        BigNumber[],
        string,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$3.RangeStructOutput;
        inputTokenIdRange: ILootBox$3.RangeStructOutput;
        inputTokenIds: BigNumber[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC1155Struct = {
        contractAddress: string;
        pickRange: ILootBox$3.RangeStruct;
        inputTokenIdRange: ILootBox$3.RangeStruct;
        inputTokenAmountFixed: BigNumberish;
        amountPickRangeFixed: ILootBox$3.RangeStruct;
        inputTokenIds: BigNumberish[];
        inputTokenAmounts: BigNumberish[];
        amountPickRanges: ILootBox$3.RangeStruct[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC1155StructOutput = [
        string,
        ILootBox$3.RangeStructOutput,
        ILootBox$3.RangeStructOutput,
        BigNumber,
        ILootBox$3.RangeStructOutput,
        BigNumber[],
        BigNumber[],
        ILootBox$3.RangeStructOutput[],
        string,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$3.RangeStructOutput;
        inputTokenIdRange: ILootBox$3.RangeStructOutput;
        inputTokenAmountFixed: BigNumber;
        amountPickRangeFixed: ILootBox$3.RangeStructOutput;
        inputTokenIds: BigNumber[];
        inputTokenAmounts: BigNumber[];
        amountPickRanges: ILootBox$3.RangeStructOutput[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type PickedTokenStruct = {
        itemContractAddress: string;
        tokenType: BigNumberish;
        tokenId: BigNumberish;
        tokenAmount: BigNumberish;
    };
    type PickedTokenStructOutput = [
        string,
        number,
        BigNumber,
        BigNumber
    ] & {
        itemContractAddress: string;
        tokenType: number;
        tokenId: BigNumber;
        tokenAmount: BigNumber;
    };
}
interface ILootBox$3 extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: ILootBoxInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {};
    callStatic: {};
    filters: {
        "ItemRemoved(address)"(addr?: string | null): ItemRemovedEventFilter$3;
        ItemRemoved(addr?: string | null): ItemRemovedEventFilter$3;
        "Item_ERC1155_Updated(address,address,uint256[],uint256[])"(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null, tokenAmountsSent?: null): Item_ERC1155_UpdatedEventFilter$3;
        Item_ERC1155_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null, tokenAmountsSent?: null): Item_ERC1155_UpdatedEventFilter$3;
        "Item_ERC20_Updated(address,address,uint256)"(contractAddress?: string | null, tokenReceiver?: string | null, tokenAmountSent?: null): Item_ERC20_UpdatedEventFilter$3;
        Item_ERC20_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenAmountSent?: null): Item_ERC20_UpdatedEventFilter$3;
        "Item_ERC721_Updated(address,address,uint256[])"(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null): Item_ERC721_UpdatedEventFilter$3;
        Item_ERC721_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null): Item_ERC721_UpdatedEventFilter$3;
        "ItemsAdded((address,(uint256,uint256)[],(uint256,uint256),uint256,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256[],string,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256,(uint256,uint256),uint256[],uint256[],(uint256,uint256)[],string,string,string)[])"(erc20Items?: null, erc721Items?: null, erc1155Items?: null): ItemsAddedEventFilter$3;
        ItemsAdded(erc20Items?: null, erc721Items?: null, erc1155Items?: null): ItemsAddedEventFilter$3;
        "LootBoxActivated()"(): LootBoxActivatedEventFilter$3;
        LootBoxActivated(): LootBoxActivatedEventFilter$3;
        "LootBoxClaimed(address,(address,uint8,uint256,uint256)[])"(claimer?: string | null, pickedTokens?: null): LootBoxClaimedEventFilter$3;
        LootBoxClaimed(claimer?: string | null, pickedTokens?: null): LootBoxClaimedEventFilter$3;
        "LootBoxDeactivated()"(): LootBoxDeactivatedEventFilter$3;
        LootBoxDeactivated(): LootBoxDeactivatedEventFilter$3;
        "LootBoxOpened(address,uint256,uint8)"(requester?: string | null, requestId?: null, rngCount?: null): LootBoxOpenedEventFilter$3;
        LootBoxOpened(requester?: string | null, requestId?: null, rngCount?: null): LootBoxOpenedEventFilter$3;
        "LootBoxPermanentlyStoped()"(): LootBoxPermanentlyStopedEventFilter$3;
        LootBoxPermanentlyStoped(): LootBoxPermanentlyStopedEventFilter$3;
        "LootboxCreated(address,address,bool,address,bytes32[],uint256[],uint256)"(lootbox?: string | null, creator?: string | null, active?: boolean | null, trustedForwarder?: null, merkleRoots?: null, opens?: null, globalOpens?: null): LootboxCreatedEventFilter$3;
        LootboxCreated(lootbox?: string | null, creator?: string | null, active?: boolean | null, trustedForwarder?: null, merkleRoots?: null, opens?: null, globalOpens?: null): LootboxCreatedEventFilter$3;
        "OpensReconfigured(bytes32[],uint256[],uint256)"(merkleRoots?: null, opens?: null, globalOpens?: null): OpensReconfiguredEventFilter$3;
        OpensReconfigured(merkleRoots?: null, opens?: null, globalOpens?: null): OpensReconfiguredEventFilter$3;
        "RngReceived(uint256,address,uint256[])"(requestId?: null, requester?: string | null, rngList?: null): RngReceivedEventFilter$3;
        RngReceived(requestId?: null, requester?: string | null, rngList?: null): RngReceivedEventFilter$3;
        "TrustedForwarderChanged(address,address)"(oldTrustedForwarder?: string | null, newTrustedForwarder?: string | null): TrustedForwarderChangedEventFilter$3;
        TrustedForwarderChanged(oldTrustedForwarder?: string | null, newTrustedForwarder?: string | null): TrustedForwarderChangedEventFilter$3;
    };
    estimateGas: {};
    populateTransaction: {};
}

declare namespace ILootBox$2 {
    type Item_ERC20_DistributionStruct = {
        amount: BigNumberish;
        chance: BigNumberish;
    };
    type Item_ERC20_DistributionStructOutput = [BigNumber, BigNumber] & {
        amount: BigNumber;
        chance: BigNumber;
    };
    type RangeStruct = {
        start: BigNumberish;
        end: BigNumberish;
    };
    type RangeStructOutput = [BigNumber, BigNumber] & {
        start: BigNumber;
        end: BigNumber;
    };
    type Item_ERC20Struct = {
        contractAddress: string;
        distributions: ILootBox$2.Item_ERC20_DistributionStruct[];
        pickRange: ILootBox$2.RangeStruct;
        tokenAmount: BigNumberish;
        name: string;
        symbol: string;
    };
    type Item_ERC20StructOutput = [
        string,
        ILootBox$2.Item_ERC20_DistributionStructOutput[],
        ILootBox$2.RangeStructOutput,
        BigNumber,
        string,
        string
    ] & {
        contractAddress: string;
        distributions: ILootBox$2.Item_ERC20_DistributionStructOutput[];
        pickRange: ILootBox$2.RangeStructOutput;
        tokenAmount: BigNumber;
        name: string;
        symbol: string;
    };
    type Item_ERC721Struct = {
        contractAddress: string;
        pickRange: ILootBox$2.RangeStruct;
        inputTokenIdRange: ILootBox$2.RangeStruct;
        inputTokenIds: BigNumberish[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC721StructOutput = [
        string,
        ILootBox$2.RangeStructOutput,
        ILootBox$2.RangeStructOutput,
        BigNumber[],
        string,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$2.RangeStructOutput;
        inputTokenIdRange: ILootBox$2.RangeStructOutput;
        inputTokenIds: BigNumber[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC1155Struct = {
        contractAddress: string;
        pickRange: ILootBox$2.RangeStruct;
        inputTokenIdRange: ILootBox$2.RangeStruct;
        inputTokenAmountFixed: BigNumberish;
        amountPickRangeFixed: ILootBox$2.RangeStruct;
        inputTokenIds: BigNumberish[];
        inputTokenAmounts: BigNumberish[];
        amountPickRanges: ILootBox$2.RangeStruct[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC1155StructOutput = [
        string,
        ILootBox$2.RangeStructOutput,
        ILootBox$2.RangeStructOutput,
        BigNumber,
        ILootBox$2.RangeStructOutput,
        BigNumber[],
        BigNumber[],
        ILootBox$2.RangeStructOutput[],
        string,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$2.RangeStructOutput;
        inputTokenIdRange: ILootBox$2.RangeStructOutput;
        inputTokenAmountFixed: BigNumber;
        amountPickRangeFixed: ILootBox$2.RangeStructOutput;
        inputTokenIds: BigNumber[];
        inputTokenAmounts: BigNumber[];
        amountPickRanges: ILootBox$2.RangeStructOutput[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type PickedTokenStruct = {
        itemContractAddress: string;
        tokenType: BigNumberish;
        tokenId: BigNumberish;
        tokenAmount: BigNumberish;
    };
    type PickedTokenStructOutput = [
        string,
        number,
        BigNumber,
        BigNumber
    ] & {
        itemContractAddress: string;
        tokenType: number;
        tokenId: BigNumber;
        tokenAmount: BigNumber;
    };
}
interface LootBoxManagerInterface extends utils.Interface {
    functions: {
        "IID_IERC1155()": FunctionFragment;
        "IID_IERC721()": FunctionFragment;
        "createLootbox((address,(uint256,uint256)[],(uint256,uint256),uint256,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256[],string,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256,(uint256,uint256),uint256[],uint256[],(uint256,uint256)[],string,string,string)[],address,bool,bytes32[],uint256[],uint256)": FunctionFragment;
        "erc1155()": FunctionFragment;
        "erc20()": FunctionFragment;
        "erc721()": FunctionFragment;
        "facets(uint256)": FunctionFragment;
        "functionSelectors(uint256,uint256)": FunctionFragment;
        "isERC1155(address)": FunctionFragment;
        "isERC721(address)": FunctionFragment;
        "isValidLootbox(address)": FunctionFragment;
        "multicall()": FunctionFragment;
        "owner()": FunctionFragment;
        "renounceOwnership()": FunctionFragment;
        "rngRouter()": FunctionFragment;
        "transferOwnership(address)": FunctionFragment;
        "userLootboxes(address,uint256)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "IID_IERC1155" | "IID_IERC721" | "createLootbox" | "erc1155" | "erc20" | "erc721" | "facets" | "functionSelectors" | "isERC1155" | "isERC721" | "isValidLootbox" | "multicall" | "owner" | "renounceOwnership" | "rngRouter" | "transferOwnership" | "userLootboxes"): FunctionFragment;
    encodeFunctionData(functionFragment: "IID_IERC1155", values?: undefined): string;
    encodeFunctionData(functionFragment: "IID_IERC721", values?: undefined): string;
    encodeFunctionData(functionFragment: "createLootbox", values: [
        ILootBox$2.Item_ERC20Struct[],
        ILootBox$2.Item_ERC721Struct[],
        ILootBox$2.Item_ERC1155Struct[],
        string,
        boolean,
        BytesLike[],
        BigNumberish[],
        BigNumberish
    ]): string;
    encodeFunctionData(functionFragment: "erc1155", values?: undefined): string;
    encodeFunctionData(functionFragment: "erc20", values?: undefined): string;
    encodeFunctionData(functionFragment: "erc721", values?: undefined): string;
    encodeFunctionData(functionFragment: "facets", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "functionSelectors", values: [BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "isERC1155", values: [string]): string;
    encodeFunctionData(functionFragment: "isERC721", values: [string]): string;
    encodeFunctionData(functionFragment: "isValidLootbox", values: [string]): string;
    encodeFunctionData(functionFragment: "multicall", values?: undefined): string;
    encodeFunctionData(functionFragment: "owner", values?: undefined): string;
    encodeFunctionData(functionFragment: "renounceOwnership", values?: undefined): string;
    encodeFunctionData(functionFragment: "rngRouter", values?: undefined): string;
    encodeFunctionData(functionFragment: "transferOwnership", values: [string]): string;
    encodeFunctionData(functionFragment: "userLootboxes", values: [string, BigNumberish]): string;
    decodeFunctionResult(functionFragment: "IID_IERC1155", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "IID_IERC721", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "createLootbox", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "erc1155", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "erc20", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "erc721", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "facets", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "functionSelectors", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isERC1155", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isERC721", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isValidLootbox", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "renounceOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rngRouter", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transferOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "userLootboxes", data: BytesLike): Result;
    events: {
        "ItemRemoved(address)": EventFragment;
        "Item_ERC1155_Updated(address,address,uint256[],uint256[])": EventFragment;
        "Item_ERC20_Updated(address,address,uint256)": EventFragment;
        "Item_ERC721_Updated(address,address,uint256[])": EventFragment;
        "ItemsAdded((address,(uint256,uint256)[],(uint256,uint256),uint256,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256[],string,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256,(uint256,uint256),uint256[],uint256[],(uint256,uint256)[],string,string,string)[])": EventFragment;
        "LootBoxActivated()": EventFragment;
        "LootBoxClaimed(address,(address,uint8,uint256,uint256)[])": EventFragment;
        "LootBoxDeactivated()": EventFragment;
        "LootBoxOpened(address,uint256,uint8)": EventFragment;
        "LootBoxPermanentlyStoped()": EventFragment;
        "LootboxCreated(address,address,bool,address,bytes32[],uint256[],uint256)": EventFragment;
        "OpensReconfigured(bytes32[],uint256[],uint256)": EventFragment;
        "OwnershipTransferred(address,address)": EventFragment;
        "RngReceived(uint256,address,uint256[])": EventFragment;
        "TrustedForwarderChanged(address,address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "ItemRemoved"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC1155_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC20_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC721_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ItemsAdded"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxActivated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxClaimed"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxDeactivated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxOpened"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxPermanentlyStoped"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootboxCreated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OpensReconfigured"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RngReceived"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TrustedForwarderChanged"): EventFragment;
}
interface ItemRemovedEventObject$2 {
    addr: string;
}
type ItemRemovedEvent$2 = TypedEvent<[string], ItemRemovedEventObject$2>;
type ItemRemovedEventFilter$2 = TypedEventFilter<ItemRemovedEvent$2>;
interface Item_ERC1155_UpdatedEventObject$2 {
    contractAddress: string;
    tokenReceiver: string;
    tokenIdsSent: BigNumber[];
    tokenAmountsSent: BigNumber[];
}
type Item_ERC1155_UpdatedEvent$2 = TypedEvent<[
    string,
    string,
    BigNumber[],
    BigNumber[]
], Item_ERC1155_UpdatedEventObject$2>;
type Item_ERC1155_UpdatedEventFilter$2 = TypedEventFilter<Item_ERC1155_UpdatedEvent$2>;
interface Item_ERC20_UpdatedEventObject$2 {
    contractAddress: string;
    tokenReceiver: string;
    tokenAmountSent: BigNumber;
}
type Item_ERC20_UpdatedEvent$2 = TypedEvent<[
    string,
    string,
    BigNumber
], Item_ERC20_UpdatedEventObject$2>;
type Item_ERC20_UpdatedEventFilter$2 = TypedEventFilter<Item_ERC20_UpdatedEvent$2>;
interface Item_ERC721_UpdatedEventObject$2 {
    contractAddress: string;
    tokenReceiver: string;
    tokenIdsSent: BigNumber[];
}
type Item_ERC721_UpdatedEvent$2 = TypedEvent<[
    string,
    string,
    BigNumber[]
], Item_ERC721_UpdatedEventObject$2>;
type Item_ERC721_UpdatedEventFilter$2 = TypedEventFilter<Item_ERC721_UpdatedEvent$2>;
interface ItemsAddedEventObject$2 {
    erc20Items: ILootBox$2.Item_ERC20StructOutput[];
    erc721Items: ILootBox$2.Item_ERC721StructOutput[];
    erc1155Items: ILootBox$2.Item_ERC1155StructOutput[];
}
type ItemsAddedEvent$2 = TypedEvent<[
    ILootBox$2.Item_ERC20StructOutput[],
    ILootBox$2.Item_ERC721StructOutput[],
    ILootBox$2.Item_ERC1155StructOutput[]
], ItemsAddedEventObject$2>;
type ItemsAddedEventFilter$2 = TypedEventFilter<ItemsAddedEvent$2>;
interface LootBoxActivatedEventObject$2 {
}
type LootBoxActivatedEvent$2 = TypedEvent<[], LootBoxActivatedEventObject$2>;
type LootBoxActivatedEventFilter$2 = TypedEventFilter<LootBoxActivatedEvent$2>;
interface LootBoxClaimedEventObject$2 {
    claimer: string;
    pickedTokens: ILootBox$2.PickedTokenStructOutput[];
}
type LootBoxClaimedEvent$2 = TypedEvent<[
    string,
    ILootBox$2.PickedTokenStructOutput[]
], LootBoxClaimedEventObject$2>;
type LootBoxClaimedEventFilter$2 = TypedEventFilter<LootBoxClaimedEvent$2>;
interface LootBoxDeactivatedEventObject$2 {
}
type LootBoxDeactivatedEvent$2 = TypedEvent<[
], LootBoxDeactivatedEventObject$2>;
type LootBoxDeactivatedEventFilter$2 = TypedEventFilter<LootBoxDeactivatedEvent$2>;
interface LootBoxOpenedEventObject$2 {
    requester: string;
    requestId: BigNumber;
    rngCount: number;
}
type LootBoxOpenedEvent$2 = TypedEvent<[
    string,
    BigNumber,
    number
], LootBoxOpenedEventObject$2>;
type LootBoxOpenedEventFilter$2 = TypedEventFilter<LootBoxOpenedEvent$2>;
interface LootBoxPermanentlyStopedEventObject$2 {
}
type LootBoxPermanentlyStopedEvent$2 = TypedEvent<[
], LootBoxPermanentlyStopedEventObject$2>;
type LootBoxPermanentlyStopedEventFilter$2 = TypedEventFilter<LootBoxPermanentlyStopedEvent$2>;
interface LootboxCreatedEventObject$2 {
    lootbox: string;
    creator: string;
    active: boolean;
    trustedForwarder: string;
    merkleRoots: string[];
    opens: BigNumber[];
    globalOpens: BigNumber;
}
type LootboxCreatedEvent$2 = TypedEvent<[
    string,
    string,
    boolean,
    string,
    string[],
    BigNumber[],
    BigNumber
], LootboxCreatedEventObject$2>;
type LootboxCreatedEventFilter$2 = TypedEventFilter<LootboxCreatedEvent$2>;
interface OpensReconfiguredEventObject$2 {
    merkleRoots: string[];
    opens: BigNumber[];
    globalOpens: BigNumber;
}
type OpensReconfiguredEvent$2 = TypedEvent<[
    string[],
    BigNumber[],
    BigNumber
], OpensReconfiguredEventObject$2>;
type OpensReconfiguredEventFilter$2 = TypedEventFilter<OpensReconfiguredEvent$2>;
interface OwnershipTransferredEventObject$1 {
    previousOwner: string;
    newOwner: string;
}
type OwnershipTransferredEvent$1 = TypedEvent<[
    string,
    string
], OwnershipTransferredEventObject$1>;
type OwnershipTransferredEventFilter$1 = TypedEventFilter<OwnershipTransferredEvent$1>;
interface RngReceivedEventObject$2 {
    requestId: BigNumber;
    requester: string;
    rngList: BigNumber[];
}
type RngReceivedEvent$2 = TypedEvent<[
    BigNumber,
    string,
    BigNumber[]
], RngReceivedEventObject$2>;
type RngReceivedEventFilter$2 = TypedEventFilter<RngReceivedEvent$2>;
interface TrustedForwarderChangedEventObject$2 {
    oldTrustedForwarder: string;
    newTrustedForwarder: string;
}
type TrustedForwarderChangedEvent$2 = TypedEvent<[
    string,
    string
], TrustedForwarderChangedEventObject$2>;
type TrustedForwarderChangedEventFilter$2 = TypedEventFilter<TrustedForwarderChangedEvent$2>;
interface LootBoxManager extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: LootBoxManagerInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        IID_IERC1155(overrides?: CallOverrides): Promise<[string]>;
        IID_IERC721(overrides?: CallOverrides): Promise<[string]>;
        createLootbox(_erc20Items: ILootBox$2.Item_ERC20Struct[], _erc721Items: ILootBox$2.Item_ERC721Struct[], _erc1155Items: ILootBox$2.Item_ERC1155Struct[], _trustedForwarder: string, _active: boolean, _roots: BytesLike[], _opens: BigNumberish[], _globalOpens: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        erc1155(overrides?: CallOverrides): Promise<[string]>;
        erc20(overrides?: CallOverrides): Promise<[string]>;
        erc721(overrides?: CallOverrides): Promise<[string]>;
        facets(arg0: BigNumberish, overrides?: CallOverrides): Promise<[string]>;
        functionSelectors(arg0: BigNumberish, arg1: BigNumberish, overrides?: CallOverrides): Promise<[string]>;
        isERC1155(nftAddress: string, overrides?: CallOverrides): Promise<[boolean]>;
        isERC721(nftAddress: string, overrides?: CallOverrides): Promise<[boolean]>;
        isValidLootbox(arg0: string, overrides?: CallOverrides): Promise<[boolean]>;
        multicall(overrides?: CallOverrides): Promise<[string]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        renounceOwnership(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        rngRouter(overrides?: CallOverrides): Promise<[string]>;
        transferOwnership(newOwner: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        userLootboxes(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise<[string]>;
    };
    IID_IERC1155(overrides?: CallOverrides): Promise<string>;
    IID_IERC721(overrides?: CallOverrides): Promise<string>;
    createLootbox(_erc20Items: ILootBox$2.Item_ERC20Struct[], _erc721Items: ILootBox$2.Item_ERC721Struct[], _erc1155Items: ILootBox$2.Item_ERC1155Struct[], _trustedForwarder: string, _active: boolean, _roots: BytesLike[], _opens: BigNumberish[], _globalOpens: BigNumberish, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    erc1155(overrides?: CallOverrides): Promise<string>;
    erc20(overrides?: CallOverrides): Promise<string>;
    erc721(overrides?: CallOverrides): Promise<string>;
    facets(arg0: BigNumberish, overrides?: CallOverrides): Promise<string>;
    functionSelectors(arg0: BigNumberish, arg1: BigNumberish, overrides?: CallOverrides): Promise<string>;
    isERC1155(nftAddress: string, overrides?: CallOverrides): Promise<boolean>;
    isERC721(nftAddress: string, overrides?: CallOverrides): Promise<boolean>;
    isValidLootbox(arg0: string, overrides?: CallOverrides): Promise<boolean>;
    multicall(overrides?: CallOverrides): Promise<string>;
    owner(overrides?: CallOverrides): Promise<string>;
    renounceOwnership(overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    rngRouter(overrides?: CallOverrides): Promise<string>;
    transferOwnership(newOwner: string, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    userLootboxes(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise<string>;
    callStatic: {
        IID_IERC1155(overrides?: CallOverrides): Promise<string>;
        IID_IERC721(overrides?: CallOverrides): Promise<string>;
        createLootbox(_erc20Items: ILootBox$2.Item_ERC20Struct[], _erc721Items: ILootBox$2.Item_ERC721Struct[], _erc1155Items: ILootBox$2.Item_ERC1155Struct[], _trustedForwarder: string, _active: boolean, _roots: BytesLike[], _opens: BigNumberish[], _globalOpens: BigNumberish, overrides?: CallOverrides): Promise<string>;
        erc1155(overrides?: CallOverrides): Promise<string>;
        erc20(overrides?: CallOverrides): Promise<string>;
        erc721(overrides?: CallOverrides): Promise<string>;
        facets(arg0: BigNumberish, overrides?: CallOverrides): Promise<string>;
        functionSelectors(arg0: BigNumberish, arg1: BigNumberish, overrides?: CallOverrides): Promise<string>;
        isERC1155(nftAddress: string, overrides?: CallOverrides): Promise<boolean>;
        isERC721(nftAddress: string, overrides?: CallOverrides): Promise<boolean>;
        isValidLootbox(arg0: string, overrides?: CallOverrides): Promise<boolean>;
        multicall(overrides?: CallOverrides): Promise<string>;
        owner(overrides?: CallOverrides): Promise<string>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        rngRouter(overrides?: CallOverrides): Promise<string>;
        transferOwnership(newOwner: string, overrides?: CallOverrides): Promise<void>;
        userLootboxes(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        "ItemRemoved(address)"(addr?: string | null): ItemRemovedEventFilter$2;
        ItemRemoved(addr?: string | null): ItemRemovedEventFilter$2;
        "Item_ERC1155_Updated(address,address,uint256[],uint256[])"(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null, tokenAmountsSent?: null): Item_ERC1155_UpdatedEventFilter$2;
        Item_ERC1155_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null, tokenAmountsSent?: null): Item_ERC1155_UpdatedEventFilter$2;
        "Item_ERC20_Updated(address,address,uint256)"(contractAddress?: string | null, tokenReceiver?: string | null, tokenAmountSent?: null): Item_ERC20_UpdatedEventFilter$2;
        Item_ERC20_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenAmountSent?: null): Item_ERC20_UpdatedEventFilter$2;
        "Item_ERC721_Updated(address,address,uint256[])"(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null): Item_ERC721_UpdatedEventFilter$2;
        Item_ERC721_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null): Item_ERC721_UpdatedEventFilter$2;
        "ItemsAdded((address,(uint256,uint256)[],(uint256,uint256),uint256,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256[],string,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256,(uint256,uint256),uint256[],uint256[],(uint256,uint256)[],string,string,string)[])"(erc20Items?: null, erc721Items?: null, erc1155Items?: null): ItemsAddedEventFilter$2;
        ItemsAdded(erc20Items?: null, erc721Items?: null, erc1155Items?: null): ItemsAddedEventFilter$2;
        "LootBoxActivated()"(): LootBoxActivatedEventFilter$2;
        LootBoxActivated(): LootBoxActivatedEventFilter$2;
        "LootBoxClaimed(address,(address,uint8,uint256,uint256)[])"(claimer?: string | null, pickedTokens?: null): LootBoxClaimedEventFilter$2;
        LootBoxClaimed(claimer?: string | null, pickedTokens?: null): LootBoxClaimedEventFilter$2;
        "LootBoxDeactivated()"(): LootBoxDeactivatedEventFilter$2;
        LootBoxDeactivated(): LootBoxDeactivatedEventFilter$2;
        "LootBoxOpened(address,uint256,uint8)"(requester?: string | null, requestId?: null, rngCount?: null): LootBoxOpenedEventFilter$2;
        LootBoxOpened(requester?: string | null, requestId?: null, rngCount?: null): LootBoxOpenedEventFilter$2;
        "LootBoxPermanentlyStoped()"(): LootBoxPermanentlyStopedEventFilter$2;
        LootBoxPermanentlyStoped(): LootBoxPermanentlyStopedEventFilter$2;
        "LootboxCreated(address,address,bool,address,bytes32[],uint256[],uint256)"(lootbox?: string | null, creator?: string | null, active?: boolean | null, trustedForwarder?: null, merkleRoots?: null, opens?: null, globalOpens?: null): LootboxCreatedEventFilter$2;
        LootboxCreated(lootbox?: string | null, creator?: string | null, active?: boolean | null, trustedForwarder?: null, merkleRoots?: null, opens?: null, globalOpens?: null): LootboxCreatedEventFilter$2;
        "OpensReconfigured(bytes32[],uint256[],uint256)"(merkleRoots?: null, opens?: null, globalOpens?: null): OpensReconfiguredEventFilter$2;
        OpensReconfigured(merkleRoots?: null, opens?: null, globalOpens?: null): OpensReconfiguredEventFilter$2;
        "OwnershipTransferred(address,address)"(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter$1;
        OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter$1;
        "RngReceived(uint256,address,uint256[])"(requestId?: null, requester?: string | null, rngList?: null): RngReceivedEventFilter$2;
        RngReceived(requestId?: null, requester?: string | null, rngList?: null): RngReceivedEventFilter$2;
        "TrustedForwarderChanged(address,address)"(oldTrustedForwarder?: string | null, newTrustedForwarder?: string | null): TrustedForwarderChangedEventFilter$2;
        TrustedForwarderChanged(oldTrustedForwarder?: string | null, newTrustedForwarder?: string | null): TrustedForwarderChangedEventFilter$2;
    };
    estimateGas: {
        IID_IERC1155(overrides?: CallOverrides): Promise<BigNumber>;
        IID_IERC721(overrides?: CallOverrides): Promise<BigNumber>;
        createLootbox(_erc20Items: ILootBox$2.Item_ERC20Struct[], _erc721Items: ILootBox$2.Item_ERC721Struct[], _erc1155Items: ILootBox$2.Item_ERC1155Struct[], _trustedForwarder: string, _active: boolean, _roots: BytesLike[], _opens: BigNumberish[], _globalOpens: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        erc1155(overrides?: CallOverrides): Promise<BigNumber>;
        erc20(overrides?: CallOverrides): Promise<BigNumber>;
        erc721(overrides?: CallOverrides): Promise<BigNumber>;
        facets(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        functionSelectors(arg0: BigNumberish, arg1: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        isERC1155(nftAddress: string, overrides?: CallOverrides): Promise<BigNumber>;
        isERC721(nftAddress: string, overrides?: CallOverrides): Promise<BigNumber>;
        isValidLootbox(arg0: string, overrides?: CallOverrides): Promise<BigNumber>;
        multicall(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        rngRouter(overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(newOwner: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        userLootboxes(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        IID_IERC1155(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        IID_IERC721(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        createLootbox(_erc20Items: ILootBox$2.Item_ERC20Struct[], _erc721Items: ILootBox$2.Item_ERC721Struct[], _erc1155Items: ILootBox$2.Item_ERC1155Struct[], _trustedForwarder: string, _active: boolean, _roots: BytesLike[], _opens: BigNumberish[], _globalOpens: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        erc1155(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        erc20(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        erc721(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        facets(arg0: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        functionSelectors(arg0: BigNumberish, arg1: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isERC1155(nftAddress: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isERC721(nftAddress: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isValidLootbox(arg0: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        multicall(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        rngRouter(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        userLootboxes(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}

declare namespace ILootBox$1 {
    type RangeStruct = {
        start: BigNumberish;
        end: BigNumberish;
    };
    type RangeStructOutput = [BigNumber, BigNumber] & {
        start: BigNumber;
        end: BigNumber;
    };
    type Item_ERC20Struct = {
        contractAddress: string;
        pickRange: ILootBox$1.RangeStruct;
        tokenAmount: BigNumberish;
        name: string;
        symbol: string;
    };
    type Item_ERC20StructOutput = [
        string,
        ILootBox$1.RangeStructOutput,
        BigNumber,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$1.RangeStructOutput;
        tokenAmount: BigNumber;
        name: string;
        symbol: string;
    };
    type Item_ERC721Struct = {
        contractAddress: string;
        pickRange: ILootBox$1.RangeStruct;
        inputTokenIdRange: ILootBox$1.RangeStruct;
        inputTokenIds: BigNumberish[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC721StructOutput = [
        string,
        ILootBox$1.RangeStructOutput,
        ILootBox$1.RangeStructOutput,
        BigNumber[],
        string,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$1.RangeStructOutput;
        inputTokenIdRange: ILootBox$1.RangeStructOutput;
        inputTokenIds: BigNumber[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC1155Struct = {
        contractAddress: string;
        pickRange: ILootBox$1.RangeStruct;
        inputTokenIdRange: ILootBox$1.RangeStruct;
        inputTokenAmountFixed: BigNumberish;
        amountPickRangeFixed: ILootBox$1.RangeStruct;
        inputTokenIds: BigNumberish[];
        inputTokenAmounts: BigNumberish[];
        amountPickRanges: ILootBox$1.RangeStruct[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC1155StructOutput = [
        string,
        ILootBox$1.RangeStructOutput,
        ILootBox$1.RangeStructOutput,
        BigNumber,
        ILootBox$1.RangeStructOutput,
        BigNumber[],
        BigNumber[],
        ILootBox$1.RangeStructOutput[],
        string,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox$1.RangeStructOutput;
        inputTokenIdRange: ILootBox$1.RangeStructOutput;
        inputTokenAmountFixed: BigNumber;
        amountPickRangeFixed: ILootBox$1.RangeStructOutput;
        inputTokenIds: BigNumber[];
        inputTokenAmounts: BigNumber[];
        amountPickRanges: ILootBox$1.RangeStructOutput[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type PickedTokenStruct = {
        itemContractAddress: string;
        tokenType: BigNumberish;
        tokenId: BigNumberish;
        tokenAmount: BigNumberish;
    };
    type PickedTokenStructOutput = [
        string,
        number,
        BigNumber,
        BigNumber
    ] & {
        itemContractAddress: string;
        tokenType: number;
        tokenId: BigNumber;
        tokenAmount: BigNumber;
    };
}
interface LootBoxMulticallInterface extends utils.Interface {
    functions: {
        "addTrustedForwarder(address)": FunctionFragment;
        "claimMulticall((address)[])": FunctionFragment;
        "claimPartiallyMulticall((address,uint256)[])": FunctionFragment;
        "initialize()": FunctionFragment;
        "initialized()": FunctionFragment;
        "isTrustedForwarder(address)": FunctionFragment;
        "lootboxManager()": FunctionFragment;
        "openMulticall((address,bytes32[])[])": FunctionFragment;
        "openWithIdxMulticall((address,bytes32[],uint256)[])": FunctionFragment;
        "removeTrustedForwarder(address)": FunctionFragment;
        "trustedForwarder()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "addTrustedForwarder" | "claimMulticall" | "claimPartiallyMulticall" | "initialize" | "initialized" | "isTrustedForwarder" | "lootboxManager" | "openMulticall" | "openWithIdxMulticall" | "removeTrustedForwarder" | "trustedForwarder"): FunctionFragment;
    encodeFunctionData(functionFragment: "addTrustedForwarder", values: [string]): string;
    encodeFunctionData(functionFragment: "claimMulticall", values: [LootBoxMulticall.LootBoxClaimCallStruct[]]): string;
    encodeFunctionData(functionFragment: "claimPartiallyMulticall", values: [LootBoxMulticall.LootBoxClaimCallPartialStruct[]]): string;
    encodeFunctionData(functionFragment: "initialize", values?: undefined): string;
    encodeFunctionData(functionFragment: "initialized", values?: undefined): string;
    encodeFunctionData(functionFragment: "isTrustedForwarder", values: [string]): string;
    encodeFunctionData(functionFragment: "lootboxManager", values?: undefined): string;
    encodeFunctionData(functionFragment: "openMulticall", values: [LootBoxMulticall.LootBoxOpenCallStruct[]]): string;
    encodeFunctionData(functionFragment: "openWithIdxMulticall", values: [LootBoxMulticall.LootBoxOpenCallWithIdxStruct[]]): string;
    encodeFunctionData(functionFragment: "removeTrustedForwarder", values: [string]): string;
    encodeFunctionData(functionFragment: "trustedForwarder", values?: undefined): string;
    decodeFunctionResult(functionFragment: "addTrustedForwarder", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "claimMulticall", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "claimPartiallyMulticall", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialized", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isTrustedForwarder", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lootboxManager", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "openMulticall", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "openWithIdxMulticall", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "removeTrustedForwarder", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "trustedForwarder", data: BytesLike): Result;
    events: {
        "ItemRemoved(address)": EventFragment;
        "Item_ERC1155_Updated(address,address,uint256[],uint256[])": EventFragment;
        "Item_ERC20_Updated(address,address,uint256)": EventFragment;
        "Item_ERC721_Updated(address,address,uint256[])": EventFragment;
        "ItemsAdded((address,(uint256,uint256),uint256,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256[],string,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256,(uint256,uint256),uint256[],uint256[],(uint256,uint256)[],string,string,string)[])": EventFragment;
        "LootBoxActivated()": EventFragment;
        "LootBoxClaimed(address,(address,uint8,uint256,uint256)[])": EventFragment;
        "LootBoxDeactivated()": EventFragment;
        "LootBoxOpened(address,uint256,uint8)": EventFragment;
        "LootBoxPermanentlyStoped()": EventFragment;
        "LootboxCreated(address,address,bool,address,bytes32[],uint256[],uint256)": EventFragment;
        "OpensReconfigured(bytes32[],uint256[],uint256)": EventFragment;
        "RngReceived(uint256,address,uint256[])": EventFragment;
        "TrustedForwarderChanged(address,address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "ItemRemoved"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC1155_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC20_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC721_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ItemsAdded"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxActivated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxClaimed"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxDeactivated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxOpened"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxPermanentlyStoped"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootboxCreated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OpensReconfigured"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RngReceived"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TrustedForwarderChanged"): EventFragment;
}
interface ItemRemovedEventObject$1 {
    addr: string;
}
type ItemRemovedEvent$1 = TypedEvent<[string], ItemRemovedEventObject$1>;
type ItemRemovedEventFilter$1 = TypedEventFilter<ItemRemovedEvent$1>;
interface Item_ERC1155_UpdatedEventObject$1 {
    contractAddress: string;
    tokenReceiver: string;
    tokenIdsSent: BigNumber[];
    tokenAmountsSent: BigNumber[];
}
type Item_ERC1155_UpdatedEvent$1 = TypedEvent<[
    string,
    string,
    BigNumber[],
    BigNumber[]
], Item_ERC1155_UpdatedEventObject$1>;
type Item_ERC1155_UpdatedEventFilter$1 = TypedEventFilter<Item_ERC1155_UpdatedEvent$1>;
interface Item_ERC20_UpdatedEventObject$1 {
    contractAddress: string;
    tokenReceiver: string;
    tokenAmountSent: BigNumber;
}
type Item_ERC20_UpdatedEvent$1 = TypedEvent<[
    string,
    string,
    BigNumber
], Item_ERC20_UpdatedEventObject$1>;
type Item_ERC20_UpdatedEventFilter$1 = TypedEventFilter<Item_ERC20_UpdatedEvent$1>;
interface Item_ERC721_UpdatedEventObject$1 {
    contractAddress: string;
    tokenReceiver: string;
    tokenIdsSent: BigNumber[];
}
type Item_ERC721_UpdatedEvent$1 = TypedEvent<[
    string,
    string,
    BigNumber[]
], Item_ERC721_UpdatedEventObject$1>;
type Item_ERC721_UpdatedEventFilter$1 = TypedEventFilter<Item_ERC721_UpdatedEvent$1>;
interface ItemsAddedEventObject$1 {
    erc20Items: ILootBox$1.Item_ERC20StructOutput[];
    erc721Items: ILootBox$1.Item_ERC721StructOutput[];
    erc1155Items: ILootBox$1.Item_ERC1155StructOutput[];
}
type ItemsAddedEvent$1 = TypedEvent<[
    ILootBox$1.Item_ERC20StructOutput[],
    ILootBox$1.Item_ERC721StructOutput[],
    ILootBox$1.Item_ERC1155StructOutput[]
], ItemsAddedEventObject$1>;
type ItemsAddedEventFilter$1 = TypedEventFilter<ItemsAddedEvent$1>;
interface LootBoxActivatedEventObject$1 {
}
type LootBoxActivatedEvent$1 = TypedEvent<[], LootBoxActivatedEventObject$1>;
type LootBoxActivatedEventFilter$1 = TypedEventFilter<LootBoxActivatedEvent$1>;
interface LootBoxClaimedEventObject$1 {
    claimer: string;
    pickedTokens: ILootBox$1.PickedTokenStructOutput[];
}
type LootBoxClaimedEvent$1 = TypedEvent<[
    string,
    ILootBox$1.PickedTokenStructOutput[]
], LootBoxClaimedEventObject$1>;
type LootBoxClaimedEventFilter$1 = TypedEventFilter<LootBoxClaimedEvent$1>;
interface LootBoxDeactivatedEventObject$1 {
}
type LootBoxDeactivatedEvent$1 = TypedEvent<[
], LootBoxDeactivatedEventObject$1>;
type LootBoxDeactivatedEventFilter$1 = TypedEventFilter<LootBoxDeactivatedEvent$1>;
interface LootBoxOpenedEventObject$1 {
    requester: string;
    requestId: BigNumber;
    rngCount: number;
}
type LootBoxOpenedEvent$1 = TypedEvent<[
    string,
    BigNumber,
    number
], LootBoxOpenedEventObject$1>;
type LootBoxOpenedEventFilter$1 = TypedEventFilter<LootBoxOpenedEvent$1>;
interface LootBoxPermanentlyStopedEventObject$1 {
}
type LootBoxPermanentlyStopedEvent$1 = TypedEvent<[
], LootBoxPermanentlyStopedEventObject$1>;
type LootBoxPermanentlyStopedEventFilter$1 = TypedEventFilter<LootBoxPermanentlyStopedEvent$1>;
interface LootboxCreatedEventObject$1 {
    lootbox: string;
    creator: string;
    active: boolean;
    trustedForwarder: string;
    merkleRoots: string[];
    opens: BigNumber[];
    globalOpens: BigNumber;
}
type LootboxCreatedEvent$1 = TypedEvent<[
    string,
    string,
    boolean,
    string,
    string[],
    BigNumber[],
    BigNumber
], LootboxCreatedEventObject$1>;
type LootboxCreatedEventFilter$1 = TypedEventFilter<LootboxCreatedEvent$1>;
interface OpensReconfiguredEventObject$1 {
    merkleRoots: string[];
    opens: BigNumber[];
    globalOpens: BigNumber;
}
type OpensReconfiguredEvent$1 = TypedEvent<[
    string[],
    BigNumber[],
    BigNumber
], OpensReconfiguredEventObject$1>;
type OpensReconfiguredEventFilter$1 = TypedEventFilter<OpensReconfiguredEvent$1>;
interface RngReceivedEventObject$1 {
    requestId: BigNumber;
    requester: string;
    rngList: BigNumber[];
}
type RngReceivedEvent$1 = TypedEvent<[
    BigNumber,
    string,
    BigNumber[]
], RngReceivedEventObject$1>;
type RngReceivedEventFilter$1 = TypedEventFilter<RngReceivedEvent$1>;
interface TrustedForwarderChangedEventObject$1 {
    oldTrustedForwarder: string;
    newTrustedForwarder: string;
}
type TrustedForwarderChangedEvent$1 = TypedEvent<[
    string,
    string
], TrustedForwarderChangedEventObject$1>;
type TrustedForwarderChangedEventFilter$1 = TypedEventFilter<TrustedForwarderChangedEvent$1>;
declare namespace LootBoxMulticall {
    type LootBoxClaimCallStruct = {
        lb: string;
    };
    type LootBoxClaimCallStructOutput = [string] & {
        lb: string;
    };
    type LootBoxClaimCallPartialStruct = {
        lb: string;
        maxRewardsToClaim: BigNumberish;
    };
    type LootBoxClaimCallPartialStructOutput = [string, BigNumber] & {
        lb: string;
        maxRewardsToClaim: BigNumber;
    };
    type LootBoxOpenCallStruct = {
        lb: string;
        merkleProof: BytesLike[];
    };
    type LootBoxOpenCallStructOutput = [string, string[]] & {
        lb: string;
        merkleProof: string[];
    };
    type LootBoxOpenCallWithIdxStruct = {
        lb: string;
        merkleProof: BytesLike[];
        idx: BigNumberish;
    };
    type LootBoxOpenCallWithIdxStructOutput = [
        string,
        string[],
        BigNumber
    ] & {
        lb: string;
        merkleProof: string[];
        idx: BigNumber;
    };
}
interface LootBoxMulticall extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: LootBoxMulticallInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        addTrustedForwarder(forwarder: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        claimMulticall(lbs: LootBoxMulticall.LootBoxClaimCallStruct[], overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        claimPartiallyMulticall(lbs: LootBoxMulticall.LootBoxClaimCallPartialStruct[], overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        initialize(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        initialized(overrides?: CallOverrides): Promise<[boolean]>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<[boolean]>;
        lootboxManager(overrides?: CallOverrides): Promise<[string]>;
        openMulticall(lbs: LootBoxMulticall.LootBoxOpenCallStruct[], overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        openWithIdxMulticall(lbs: LootBoxMulticall.LootBoxOpenCallWithIdxStruct[], overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        removeTrustedForwarder(forwarder: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        trustedForwarder(overrides?: CallOverrides): Promise<[string]>;
    };
    addTrustedForwarder(forwarder: string, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    claimMulticall(lbs: LootBoxMulticall.LootBoxClaimCallStruct[], overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    claimPartiallyMulticall(lbs: LootBoxMulticall.LootBoxClaimCallPartialStruct[], overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    initialize(overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    initialized(overrides?: CallOverrides): Promise<boolean>;
    isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<boolean>;
    lootboxManager(overrides?: CallOverrides): Promise<string>;
    openMulticall(lbs: LootBoxMulticall.LootBoxOpenCallStruct[], overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    openWithIdxMulticall(lbs: LootBoxMulticall.LootBoxOpenCallWithIdxStruct[], overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    removeTrustedForwarder(forwarder: string, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    trustedForwarder(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        addTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<void>;
        claimMulticall(lbs: LootBoxMulticall.LootBoxClaimCallStruct[], overrides?: CallOverrides): Promise<void>;
        claimPartiallyMulticall(lbs: LootBoxMulticall.LootBoxClaimCallPartialStruct[], overrides?: CallOverrides): Promise<void>;
        initialize(overrides?: CallOverrides): Promise<void>;
        initialized(overrides?: CallOverrides): Promise<boolean>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<boolean>;
        lootboxManager(overrides?: CallOverrides): Promise<string>;
        openMulticall(lbs: LootBoxMulticall.LootBoxOpenCallStruct[], overrides?: CallOverrides): Promise<void>;
        openWithIdxMulticall(lbs: LootBoxMulticall.LootBoxOpenCallWithIdxStruct[], overrides?: CallOverrides): Promise<void>;
        removeTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<void>;
        trustedForwarder(overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        "ItemRemoved(address)"(addr?: string | null): ItemRemovedEventFilter$1;
        ItemRemoved(addr?: string | null): ItemRemovedEventFilter$1;
        "Item_ERC1155_Updated(address,address,uint256[],uint256[])"(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null, tokenAmountsSent?: null): Item_ERC1155_UpdatedEventFilter$1;
        Item_ERC1155_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null, tokenAmountsSent?: null): Item_ERC1155_UpdatedEventFilter$1;
        "Item_ERC20_Updated(address,address,uint256)"(contractAddress?: string | null, tokenReceiver?: string | null, tokenAmountSent?: null): Item_ERC20_UpdatedEventFilter$1;
        Item_ERC20_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenAmountSent?: null): Item_ERC20_UpdatedEventFilter$1;
        "Item_ERC721_Updated(address,address,uint256[])"(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null): Item_ERC721_UpdatedEventFilter$1;
        Item_ERC721_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null): Item_ERC721_UpdatedEventFilter$1;
        "ItemsAdded((address,(uint256,uint256),uint256,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256[],string,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256,(uint256,uint256),uint256[],uint256[],(uint256,uint256)[],string,string,string)[])"(erc20Items?: null, erc721Items?: null, erc1155Items?: null): ItemsAddedEventFilter$1;
        ItemsAdded(erc20Items?: null, erc721Items?: null, erc1155Items?: null): ItemsAddedEventFilter$1;
        "LootBoxActivated()"(): LootBoxActivatedEventFilter$1;
        LootBoxActivated(): LootBoxActivatedEventFilter$1;
        "LootBoxClaimed(address,(address,uint8,uint256,uint256)[])"(claimer?: string | null, pickedTokens?: null): LootBoxClaimedEventFilter$1;
        LootBoxClaimed(claimer?: string | null, pickedTokens?: null): LootBoxClaimedEventFilter$1;
        "LootBoxDeactivated()"(): LootBoxDeactivatedEventFilter$1;
        LootBoxDeactivated(): LootBoxDeactivatedEventFilter$1;
        "LootBoxOpened(address,uint256,uint8)"(requester?: string | null, requestId?: null, rngCount?: null): LootBoxOpenedEventFilter$1;
        LootBoxOpened(requester?: string | null, requestId?: null, rngCount?: null): LootBoxOpenedEventFilter$1;
        "LootBoxPermanentlyStoped()"(): LootBoxPermanentlyStopedEventFilter$1;
        LootBoxPermanentlyStoped(): LootBoxPermanentlyStopedEventFilter$1;
        "LootboxCreated(address,address,bool,address,bytes32[],uint256[],uint256)"(lootbox?: string | null, creator?: string | null, active?: boolean | null, trustedForwarder?: null, merkleRoots?: null, opens?: null, globalOpens?: null): LootboxCreatedEventFilter$1;
        LootboxCreated(lootbox?: string | null, creator?: string | null, active?: boolean | null, trustedForwarder?: null, merkleRoots?: null, opens?: null, globalOpens?: null): LootboxCreatedEventFilter$1;
        "OpensReconfigured(bytes32[],uint256[],uint256)"(merkleRoots?: null, opens?: null, globalOpens?: null): OpensReconfiguredEventFilter$1;
        OpensReconfigured(merkleRoots?: null, opens?: null, globalOpens?: null): OpensReconfiguredEventFilter$1;
        "RngReceived(uint256,address,uint256[])"(requestId?: null, requester?: string | null, rngList?: null): RngReceivedEventFilter$1;
        RngReceived(requestId?: null, requester?: string | null, rngList?: null): RngReceivedEventFilter$1;
        "TrustedForwarderChanged(address,address)"(oldTrustedForwarder?: string | null, newTrustedForwarder?: string | null): TrustedForwarderChangedEventFilter$1;
        TrustedForwarderChanged(oldTrustedForwarder?: string | null, newTrustedForwarder?: string | null): TrustedForwarderChangedEventFilter$1;
    };
    estimateGas: {
        addTrustedForwarder(forwarder: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        claimMulticall(lbs: LootBoxMulticall.LootBoxClaimCallStruct[], overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        claimPartiallyMulticall(lbs: LootBoxMulticall.LootBoxClaimCallPartialStruct[], overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        initialize(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        initialized(overrides?: CallOverrides): Promise<BigNumber>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<BigNumber>;
        lootboxManager(overrides?: CallOverrides): Promise<BigNumber>;
        openMulticall(lbs: LootBoxMulticall.LootBoxOpenCallStruct[], overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        openWithIdxMulticall(lbs: LootBoxMulticall.LootBoxOpenCallWithIdxStruct[], overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        removeTrustedForwarder(forwarder: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        trustedForwarder(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        addTrustedForwarder(forwarder: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        claimMulticall(lbs: LootBoxMulticall.LootBoxClaimCallStruct[], overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        claimPartiallyMulticall(lbs: LootBoxMulticall.LootBoxClaimCallPartialStruct[], overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        initialize(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        initialized(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lootboxManager(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        openMulticall(lbs: LootBoxMulticall.LootBoxOpenCallStruct[], overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        openWithIdxMulticall(lbs: LootBoxMulticall.LootBoxOpenCallWithIdxStruct[], overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        removeTrustedForwarder(forwarder: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        trustedForwarder(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}

declare namespace ILootBox {
    type RngRequestStruct = {
        lootBox: string;
        status: BigNumberish;
        requestTimestamp: BigNumberish;
        requestId: BigNumberish;
        supraNonce: BigNumberish;
    };
    type RngRequestStructOutput = [
        string,
        number,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        lootBox: string;
        status: number;
        requestTimestamp: BigNumber;
        requestId: BigNumber;
        supraNonce: BigNumber;
    };
    type RangeStruct = {
        start: BigNumberish;
        end: BigNumberish;
    };
    type RangeStructOutput = [BigNumber, BigNumber] & {
        start: BigNumber;
        end: BigNumber;
    };
    type Item_ERC20Struct = {
        contractAddress: string;
        pickRange: ILootBox.RangeStruct;
        tokenAmount: BigNumberish;
        name: string;
        symbol: string;
    };
    type Item_ERC20StructOutput = [
        string,
        ILootBox.RangeStructOutput,
        BigNumber,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox.RangeStructOutput;
        tokenAmount: BigNumber;
        name: string;
        symbol: string;
    };
    type Item_ERC721Struct = {
        contractAddress: string;
        pickRange: ILootBox.RangeStruct;
        inputTokenIdRange: ILootBox.RangeStruct;
        inputTokenIds: BigNumberish[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC721StructOutput = [
        string,
        ILootBox.RangeStructOutput,
        ILootBox.RangeStructOutput,
        BigNumber[],
        string,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox.RangeStructOutput;
        inputTokenIdRange: ILootBox.RangeStructOutput;
        inputTokenIds: BigNumber[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC1155Struct = {
        contractAddress: string;
        pickRange: ILootBox.RangeStruct;
        inputTokenIdRange: ILootBox.RangeStruct;
        inputTokenAmountFixed: BigNumberish;
        amountPickRangeFixed: ILootBox.RangeStruct;
        inputTokenIds: BigNumberish[];
        inputTokenAmounts: BigNumberish[];
        amountPickRanges: ILootBox.RangeStruct[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type Item_ERC1155StructOutput = [
        string,
        ILootBox.RangeStructOutput,
        ILootBox.RangeStructOutput,
        BigNumber,
        ILootBox.RangeStructOutput,
        BigNumber[],
        BigNumber[],
        ILootBox.RangeStructOutput[],
        string,
        string,
        string
    ] & {
        contractAddress: string;
        pickRange: ILootBox.RangeStructOutput;
        inputTokenIdRange: ILootBox.RangeStructOutput;
        inputTokenAmountFixed: BigNumber;
        amountPickRangeFixed: ILootBox.RangeStructOutput;
        inputTokenIds: BigNumber[];
        inputTokenAmounts: BigNumber[];
        amountPickRanges: ILootBox.RangeStructOutput[];
        uriBase: string;
        name: string;
        symbol: string;
    };
    type PickedTokenStruct = {
        itemContractAddress: string;
        tokenType: BigNumberish;
        tokenId: BigNumberish;
        tokenAmount: BigNumberish;
    };
    type PickedTokenStructOutput = [
        string,
        number,
        BigNumber,
        BigNumber
    ] & {
        itemContractAddress: string;
        tokenType: number;
        tokenId: BigNumber;
        tokenAmount: BigNumber;
    };
}
interface LootBoxRngRouterInterface extends utils.Interface {
    functions: {
        "activateContract()": FunctionFragment;
        "active()": FunctionFragment;
        "chainId()": FunctionFragment;
        "deactivateContract()": FunctionFragment;
        "getRngRequestInfo(uint256)": FunctionFragment;
        "getRngRequestStatus(uint256)": FunctionFragment;
        "initialize()": FunctionFragment;
        "initialized()": FunctionFragment;
        "lootBoxManager()": FunctionFragment;
        "owner()": FunctionFragment;
        "renounceOwnership()": FunctionFragment;
        "requestRng(uint8)": FunctionFragment;
        "routeRng(uint256,uint256[])": FunctionFragment;
        "supraClient()": FunctionFragment;
        "supraNonceToRequestId(uint256)": FunctionFragment;
        "supraRouter()": FunctionFragment;
        "timeout()": FunctionFragment;
        "transferOwnership(address)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "activateContract" | "active" | "chainId" | "deactivateContract" | "getRngRequestInfo" | "getRngRequestStatus" | "initialize" | "initialized" | "lootBoxManager" | "owner" | "renounceOwnership" | "requestRng" | "routeRng" | "supraClient" | "supraNonceToRequestId" | "supraRouter" | "timeout" | "transferOwnership"): FunctionFragment;
    encodeFunctionData(functionFragment: "activateContract", values?: undefined): string;
    encodeFunctionData(functionFragment: "active", values?: undefined): string;
    encodeFunctionData(functionFragment: "chainId", values?: undefined): string;
    encodeFunctionData(functionFragment: "deactivateContract", values?: undefined): string;
    encodeFunctionData(functionFragment: "getRngRequestInfo", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "getRngRequestStatus", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "initialize", values?: undefined): string;
    encodeFunctionData(functionFragment: "initialized", values?: undefined): string;
    encodeFunctionData(functionFragment: "lootBoxManager", values?: undefined): string;
    encodeFunctionData(functionFragment: "owner", values?: undefined): string;
    encodeFunctionData(functionFragment: "renounceOwnership", values?: undefined): string;
    encodeFunctionData(functionFragment: "requestRng", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "routeRng", values: [BigNumberish, BigNumberish[]]): string;
    encodeFunctionData(functionFragment: "supraClient", values?: undefined): string;
    encodeFunctionData(functionFragment: "supraNonceToRequestId", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "supraRouter", values?: undefined): string;
    encodeFunctionData(functionFragment: "timeout", values?: undefined): string;
    encodeFunctionData(functionFragment: "transferOwnership", values: [string]): string;
    decodeFunctionResult(functionFragment: "activateContract", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "active", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "chainId", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "deactivateContract", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRngRequestInfo", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRngRequestStatus", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialized", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lootBoxManager", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "renounceOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "requestRng", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "routeRng", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "supraClient", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "supraNonceToRequestId", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "supraRouter", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "timeout", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transferOwnership", data: BytesLike): Result;
    events: {
        "ItemRemoved(address)": EventFragment;
        "Item_ERC1155_Updated(address,address,uint256[],uint256[])": EventFragment;
        "Item_ERC20_Updated(address,address,uint256)": EventFragment;
        "Item_ERC721_Updated(address,address,uint256[])": EventFragment;
        "ItemsAdded((address,(uint256,uint256),uint256,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256[],string,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256,(uint256,uint256),uint256[],uint256[],(uint256,uint256)[],string,string,string)[])": EventFragment;
        "LootBoxActivated()": EventFragment;
        "LootBoxClaimed(address,(address,uint8,uint256,uint256)[])": EventFragment;
        "LootBoxDeactivated()": EventFragment;
        "LootBoxOpened(address,uint256,uint8)": EventFragment;
        "LootBoxPermanentlyStoped()": EventFragment;
        "LootBoxRngRouterActivated()": EventFragment;
        "LootBoxRngRouterConfigured(address,address,address)": EventFragment;
        "LootBoxRngRouterDeactivated()": EventFragment;
        "LootboxCreated(address,address,bool,address,bytes32[],uint256[],uint256)": EventFragment;
        "OpensReconfigured(bytes32[],uint256[],uint256)": EventFragment;
        "OwnershipTransferred(address,address)": EventFragment;
        "RngReceived(uint256,address,uint256[])": EventFragment;
        "RngRequested(uint256,address,uint256,uint256)": EventFragment;
        "RngRouted(uint256,address,uint256)": EventFragment;
        "TrustedForwarderChanged(address,address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "ItemRemoved"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC1155_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC20_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Item_ERC721_Updated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ItemsAdded"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxActivated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxClaimed"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxDeactivated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxOpened"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxPermanentlyStoped"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxRngRouterActivated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxRngRouterConfigured"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootBoxRngRouterDeactivated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LootboxCreated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OpensReconfigured"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RngReceived"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RngRequested"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RngRouted"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TrustedForwarderChanged"): EventFragment;
}
interface ItemRemovedEventObject {
    addr: string;
}
type ItemRemovedEvent = TypedEvent<[string], ItemRemovedEventObject>;
type ItemRemovedEventFilter = TypedEventFilter<ItemRemovedEvent>;
interface Item_ERC1155_UpdatedEventObject {
    contractAddress: string;
    tokenReceiver: string;
    tokenIdsSent: BigNumber[];
    tokenAmountsSent: BigNumber[];
}
type Item_ERC1155_UpdatedEvent = TypedEvent<[
    string,
    string,
    BigNumber[],
    BigNumber[]
], Item_ERC1155_UpdatedEventObject>;
type Item_ERC1155_UpdatedEventFilter = TypedEventFilter<Item_ERC1155_UpdatedEvent>;
interface Item_ERC20_UpdatedEventObject {
    contractAddress: string;
    tokenReceiver: string;
    tokenAmountSent: BigNumber;
}
type Item_ERC20_UpdatedEvent = TypedEvent<[
    string,
    string,
    BigNumber
], Item_ERC20_UpdatedEventObject>;
type Item_ERC20_UpdatedEventFilter = TypedEventFilter<Item_ERC20_UpdatedEvent>;
interface Item_ERC721_UpdatedEventObject {
    contractAddress: string;
    tokenReceiver: string;
    tokenIdsSent: BigNumber[];
}
type Item_ERC721_UpdatedEvent = TypedEvent<[
    string,
    string,
    BigNumber[]
], Item_ERC721_UpdatedEventObject>;
type Item_ERC721_UpdatedEventFilter = TypedEventFilter<Item_ERC721_UpdatedEvent>;
interface ItemsAddedEventObject {
    erc20Items: ILootBox.Item_ERC20StructOutput[];
    erc721Items: ILootBox.Item_ERC721StructOutput[];
    erc1155Items: ILootBox.Item_ERC1155StructOutput[];
}
type ItemsAddedEvent = TypedEvent<[
    ILootBox.Item_ERC20StructOutput[],
    ILootBox.Item_ERC721StructOutput[],
    ILootBox.Item_ERC1155StructOutput[]
], ItemsAddedEventObject>;
type ItemsAddedEventFilter = TypedEventFilter<ItemsAddedEvent>;
interface LootBoxActivatedEventObject {
}
type LootBoxActivatedEvent = TypedEvent<[], LootBoxActivatedEventObject>;
type LootBoxActivatedEventFilter = TypedEventFilter<LootBoxActivatedEvent>;
interface LootBoxClaimedEventObject {
    claimer: string;
    pickedTokens: ILootBox.PickedTokenStructOutput[];
}
type LootBoxClaimedEvent = TypedEvent<[
    string,
    ILootBox.PickedTokenStructOutput[]
], LootBoxClaimedEventObject>;
type LootBoxClaimedEventFilter = TypedEventFilter<LootBoxClaimedEvent>;
interface LootBoxDeactivatedEventObject {
}
type LootBoxDeactivatedEvent = TypedEvent<[
], LootBoxDeactivatedEventObject>;
type LootBoxDeactivatedEventFilter = TypedEventFilter<LootBoxDeactivatedEvent>;
interface LootBoxOpenedEventObject {
    requester: string;
    requestId: BigNumber;
    rngCount: number;
}
type LootBoxOpenedEvent = TypedEvent<[
    string,
    BigNumber,
    number
], LootBoxOpenedEventObject>;
type LootBoxOpenedEventFilter = TypedEventFilter<LootBoxOpenedEvent>;
interface LootBoxPermanentlyStopedEventObject {
}
type LootBoxPermanentlyStopedEvent = TypedEvent<[
], LootBoxPermanentlyStopedEventObject>;
type LootBoxPermanentlyStopedEventFilter = TypedEventFilter<LootBoxPermanentlyStopedEvent>;
interface LootBoxRngRouterActivatedEventObject {
}
type LootBoxRngRouterActivatedEvent = TypedEvent<[
], LootBoxRngRouterActivatedEventObject>;
type LootBoxRngRouterActivatedEventFilter = TypedEventFilter<LootBoxRngRouterActivatedEvent>;
interface LootBoxRngRouterConfiguredEventObject {
    lootBoxManager: string;
    supraRouter: string;
    supraClient: string;
}
type LootBoxRngRouterConfiguredEvent = TypedEvent<[
    string,
    string,
    string
], LootBoxRngRouterConfiguredEventObject>;
type LootBoxRngRouterConfiguredEventFilter = TypedEventFilter<LootBoxRngRouterConfiguredEvent>;
interface LootBoxRngRouterDeactivatedEventObject {
}
type LootBoxRngRouterDeactivatedEvent = TypedEvent<[
], LootBoxRngRouterDeactivatedEventObject>;
type LootBoxRngRouterDeactivatedEventFilter = TypedEventFilter<LootBoxRngRouterDeactivatedEvent>;
interface LootboxCreatedEventObject {
    lootbox: string;
    creator: string;
    active: boolean;
    trustedForwarder: string;
    merkleRoots: string[];
    opens: BigNumber[];
    globalOpens: BigNumber;
}
type LootboxCreatedEvent = TypedEvent<[
    string,
    string,
    boolean,
    string,
    string[],
    BigNumber[],
    BigNumber
], LootboxCreatedEventObject>;
type LootboxCreatedEventFilter = TypedEventFilter<LootboxCreatedEvent>;
interface OpensReconfiguredEventObject {
    merkleRoots: string[];
    opens: BigNumber[];
    globalOpens: BigNumber;
}
type OpensReconfiguredEvent = TypedEvent<[
    string[],
    BigNumber[],
    BigNumber
], OpensReconfiguredEventObject>;
type OpensReconfiguredEventFilter = TypedEventFilter<OpensReconfiguredEvent>;
interface OwnershipTransferredEventObject {
    previousOwner: string;
    newOwner: string;
}
type OwnershipTransferredEvent = TypedEvent<[
    string,
    string
], OwnershipTransferredEventObject>;
type OwnershipTransferredEventFilter = TypedEventFilter<OwnershipTransferredEvent>;
interface RngReceivedEventObject {
    requestId: BigNumber;
    requester: string;
    rngList: BigNumber[];
}
type RngReceivedEvent = TypedEvent<[
    BigNumber,
    string,
    BigNumber[]
], RngReceivedEventObject>;
type RngReceivedEventFilter = TypedEventFilter<RngReceivedEvent>;
interface RngRequestedEventObject {
    requestId: BigNumber;
    lootBox: string;
    supraNonce: BigNumber;
    requestTimestamp: BigNumber;
}
type RngRequestedEvent = TypedEvent<[
    BigNumber,
    string,
    BigNumber,
    BigNumber
], RngRequestedEventObject>;
type RngRequestedEventFilter = TypedEventFilter<RngRequestedEvent>;
interface RngRoutedEventObject {
    requestId: BigNumber;
    lootBox: string;
    supraNonce: BigNumber;
}
type RngRoutedEvent = TypedEvent<[
    BigNumber,
    string,
    BigNumber
], RngRoutedEventObject>;
type RngRoutedEventFilter = TypedEventFilter<RngRoutedEvent>;
interface TrustedForwarderChangedEventObject {
    oldTrustedForwarder: string;
    newTrustedForwarder: string;
}
type TrustedForwarderChangedEvent = TypedEvent<[
    string,
    string
], TrustedForwarderChangedEventObject>;
type TrustedForwarderChangedEventFilter = TypedEventFilter<TrustedForwarderChangedEvent>;
interface LootBoxRngRouter extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: LootBoxRngRouterInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        activateContract(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        active(overrides?: CallOverrides): Promise<[boolean]>;
        chainId(overrides?: CallOverrides): Promise<[BigNumber]>;
        deactivateContract(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        getRngRequestInfo(requestId: BigNumberish, overrides?: CallOverrides): Promise<[
            ILootBox.RngRequestStructOutput
        ] & {
            info: ILootBox.RngRequestStructOutput;
        }>;
        getRngRequestStatus(requestId: BigNumberish, overrides?: CallOverrides): Promise<[number]>;
        initialize(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        initialized(overrides?: CallOverrides): Promise<[boolean]>;
        lootBoxManager(overrides?: CallOverrides): Promise<[string]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        renounceOwnership(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        requestRng(rngCount: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        routeRng(supraNonce: BigNumberish, _rngs: BigNumberish[], overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
        supraClient(overrides?: CallOverrides): Promise<[string]>;
        supraNonceToRequestId(arg0: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>;
        supraRouter(overrides?: CallOverrides): Promise<[string]>;
        timeout(overrides?: CallOverrides): Promise<[BigNumber]>;
        transferOwnership(newOwner: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<ContractTransaction>;
    };
    activateContract(overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    active(overrides?: CallOverrides): Promise<boolean>;
    chainId(overrides?: CallOverrides): Promise<BigNumber>;
    deactivateContract(overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    getRngRequestInfo(requestId: BigNumberish, overrides?: CallOverrides): Promise<ILootBox.RngRequestStructOutput>;
    getRngRequestStatus(requestId: BigNumberish, overrides?: CallOverrides): Promise<number>;
    initialize(overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    initialized(overrides?: CallOverrides): Promise<boolean>;
    lootBoxManager(overrides?: CallOverrides): Promise<string>;
    owner(overrides?: CallOverrides): Promise<string>;
    renounceOwnership(overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    requestRng(rngCount: BigNumberish, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    routeRng(supraNonce: BigNumberish, _rngs: BigNumberish[], overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    supraClient(overrides?: CallOverrides): Promise<string>;
    supraNonceToRequestId(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    supraRouter(overrides?: CallOverrides): Promise<string>;
    timeout(overrides?: CallOverrides): Promise<BigNumber>;
    transferOwnership(newOwner: string, overrides?: Overrides$1 & {
        from?: string;
    }): Promise<ContractTransaction>;
    callStatic: {
        activateContract(overrides?: CallOverrides): Promise<void>;
        active(overrides?: CallOverrides): Promise<boolean>;
        chainId(overrides?: CallOverrides): Promise<BigNumber>;
        deactivateContract(overrides?: CallOverrides): Promise<void>;
        getRngRequestInfo(requestId: BigNumberish, overrides?: CallOverrides): Promise<ILootBox.RngRequestStructOutput>;
        getRngRequestStatus(requestId: BigNumberish, overrides?: CallOverrides): Promise<number>;
        initialize(overrides?: CallOverrides): Promise<void>;
        initialized(overrides?: CallOverrides): Promise<boolean>;
        lootBoxManager(overrides?: CallOverrides): Promise<string>;
        owner(overrides?: CallOverrides): Promise<string>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        requestRng(rngCount: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        routeRng(supraNonce: BigNumberish, _rngs: BigNumberish[], overrides?: CallOverrides): Promise<void>;
        supraClient(overrides?: CallOverrides): Promise<string>;
        supraNonceToRequestId(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        supraRouter(overrides?: CallOverrides): Promise<string>;
        timeout(overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(newOwner: string, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "ItemRemoved(address)"(addr?: string | null): ItemRemovedEventFilter;
        ItemRemoved(addr?: string | null): ItemRemovedEventFilter;
        "Item_ERC1155_Updated(address,address,uint256[],uint256[])"(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null, tokenAmountsSent?: null): Item_ERC1155_UpdatedEventFilter;
        Item_ERC1155_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null, tokenAmountsSent?: null): Item_ERC1155_UpdatedEventFilter;
        "Item_ERC20_Updated(address,address,uint256)"(contractAddress?: string | null, tokenReceiver?: string | null, tokenAmountSent?: null): Item_ERC20_UpdatedEventFilter;
        Item_ERC20_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenAmountSent?: null): Item_ERC20_UpdatedEventFilter;
        "Item_ERC721_Updated(address,address,uint256[])"(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null): Item_ERC721_UpdatedEventFilter;
        Item_ERC721_Updated(contractAddress?: string | null, tokenReceiver?: string | null, tokenIdsSent?: null): Item_ERC721_UpdatedEventFilter;
        "ItemsAdded((address,(uint256,uint256),uint256,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256[],string,string,string)[],(address,(uint256,uint256),(uint256,uint256),uint256,(uint256,uint256),uint256[],uint256[],(uint256,uint256)[],string,string,string)[])"(erc20Items?: null, erc721Items?: null, erc1155Items?: null): ItemsAddedEventFilter;
        ItemsAdded(erc20Items?: null, erc721Items?: null, erc1155Items?: null): ItemsAddedEventFilter;
        "LootBoxActivated()"(): LootBoxActivatedEventFilter;
        LootBoxActivated(): LootBoxActivatedEventFilter;
        "LootBoxClaimed(address,(address,uint8,uint256,uint256)[])"(claimer?: string | null, pickedTokens?: null): LootBoxClaimedEventFilter;
        LootBoxClaimed(claimer?: string | null, pickedTokens?: null): LootBoxClaimedEventFilter;
        "LootBoxDeactivated()"(): LootBoxDeactivatedEventFilter;
        LootBoxDeactivated(): LootBoxDeactivatedEventFilter;
        "LootBoxOpened(address,uint256,uint8)"(requester?: string | null, requestId?: null, rngCount?: null): LootBoxOpenedEventFilter;
        LootBoxOpened(requester?: string | null, requestId?: null, rngCount?: null): LootBoxOpenedEventFilter;
        "LootBoxPermanentlyStoped()"(): LootBoxPermanentlyStopedEventFilter;
        LootBoxPermanentlyStoped(): LootBoxPermanentlyStopedEventFilter;
        "LootBoxRngRouterActivated()"(): LootBoxRngRouterActivatedEventFilter;
        LootBoxRngRouterActivated(): LootBoxRngRouterActivatedEventFilter;
        "LootBoxRngRouterConfigured(address,address,address)"(lootBoxManager?: string | null, supraRouter?: string | null, supraClient?: null): LootBoxRngRouterConfiguredEventFilter;
        LootBoxRngRouterConfigured(lootBoxManager?: string | null, supraRouter?: string | null, supraClient?: null): LootBoxRngRouterConfiguredEventFilter;
        "LootBoxRngRouterDeactivated()"(): LootBoxRngRouterDeactivatedEventFilter;
        LootBoxRngRouterDeactivated(): LootBoxRngRouterDeactivatedEventFilter;
        "LootboxCreated(address,address,bool,address,bytes32[],uint256[],uint256)"(lootbox?: string | null, creator?: string | null, active?: boolean | null, trustedForwarder?: null, merkleRoots?: null, opens?: null, globalOpens?: null): LootboxCreatedEventFilter;
        LootboxCreated(lootbox?: string | null, creator?: string | null, active?: boolean | null, trustedForwarder?: null, merkleRoots?: null, opens?: null, globalOpens?: null): LootboxCreatedEventFilter;
        "OpensReconfigured(bytes32[],uint256[],uint256)"(merkleRoots?: null, opens?: null, globalOpens?: null): OpensReconfiguredEventFilter;
        OpensReconfigured(merkleRoots?: null, opens?: null, globalOpens?: null): OpensReconfiguredEventFilter;
        "OwnershipTransferred(address,address)"(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter;
        OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter;
        "RngReceived(uint256,address,uint256[])"(requestId?: null, requester?: string | null, rngList?: null): RngReceivedEventFilter;
        RngReceived(requestId?: null, requester?: string | null, rngList?: null): RngReceivedEventFilter;
        "RngRequested(uint256,address,uint256,uint256)"(requestId?: BigNumberish | null, lootBox?: string | null, supraNonce?: BigNumberish | null, requestTimestamp?: null): RngRequestedEventFilter;
        RngRequested(requestId?: BigNumberish | null, lootBox?: string | null, supraNonce?: BigNumberish | null, requestTimestamp?: null): RngRequestedEventFilter;
        "RngRouted(uint256,address,uint256)"(requestId?: BigNumberish | null, lootBox?: string | null, supraNonce?: BigNumberish | null): RngRoutedEventFilter;
        RngRouted(requestId?: BigNumberish | null, lootBox?: string | null, supraNonce?: BigNumberish | null): RngRoutedEventFilter;
        "TrustedForwarderChanged(address,address)"(oldTrustedForwarder?: string | null, newTrustedForwarder?: string | null): TrustedForwarderChangedEventFilter;
        TrustedForwarderChanged(oldTrustedForwarder?: string | null, newTrustedForwarder?: string | null): TrustedForwarderChangedEventFilter;
    };
    estimateGas: {
        activateContract(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        active(overrides?: CallOverrides): Promise<BigNumber>;
        chainId(overrides?: CallOverrides): Promise<BigNumber>;
        deactivateContract(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        getRngRequestInfo(requestId: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getRngRequestStatus(requestId: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        initialize(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        initialized(overrides?: CallOverrides): Promise<BigNumber>;
        lootBoxManager(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        requestRng(rngCount: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        routeRng(supraNonce: BigNumberish, _rngs: BigNumberish[], overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
        supraClient(overrides?: CallOverrides): Promise<BigNumber>;
        supraNonceToRequestId(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        supraRouter(overrides?: CallOverrides): Promise<BigNumber>;
        timeout(overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(newOwner: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        activateContract(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        active(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        chainId(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        deactivateContract(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        getRngRequestInfo(requestId: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRngRequestStatus(requestId: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        initialized(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lootBoxManager(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        requestRng(rngCount: BigNumberish, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        routeRng(supraNonce: BigNumberish, _rngs: BigNumberish[], overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        supraClient(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        supraNonceToRequestId(arg0: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        supraRouter(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        timeout(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: string, overrides?: Overrides$1 & {
            from?: string;
        }): Promise<PopulatedTransaction>;
    };
}

declare class LootBoxController__factory {
    static readonly abi: readonly [{
        readonly type: "function";
        readonly name: "activate";
        readonly inputs: readonly [];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "adjustTrees";
        readonly inputs: readonly [{
            readonly name: "_roots";
            readonly type: "bytes32[]";
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "_opens";
            readonly type: "uint256[]";
            readonly internalType: "uint256[]";
        }, {
            readonly name: "_globalOpens";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "deactivate";
        readonly inputs: readonly [];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "removeItem";
        readonly inputs: readonly [{
            readonly name: "addr";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "stopLootBoxPermanently";
        readonly inputs: readonly [];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "event";
        readonly name: "ItemRemoved";
        readonly inputs: readonly [{
            readonly name: "addr";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC1155_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenIdsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "tokenAmountsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC20_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenAmountSent";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC721_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenIdsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "ItemsAdded";
        readonly inputs: readonly [{
            readonly name: "erc20Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC20[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "tokenAmount";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "erc721Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC721[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIdRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIds";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "uriBase";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "erc1155Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC1155[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIdRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenAmountFixed";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "amountPickRangeFixed";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIds";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "inputTokenAmounts";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "amountPickRanges";
                readonly type: "tuple[]";
                readonly internalType: "struct ILootBox.Range[]";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "uriBase";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxActivated";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxClaimed";
        readonly inputs: readonly [{
            readonly name: "claimer";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "pickedTokens";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.PickedToken[]";
            readonly components: readonly [{
                readonly name: "itemContractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "tokenType";
                readonly type: "uint8";
                readonly internalType: "enum ILootBox.ItemType";
            }, {
                readonly name: "tokenId";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "tokenAmount";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxDeactivated";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxOpened";
        readonly inputs: readonly [{
            readonly name: "requester";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "requestId";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }, {
            readonly name: "rngCount";
            readonly type: "uint8";
            readonly indexed: false;
            readonly internalType: "uint8";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxPermanentlyStoped";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootboxCreated";
        readonly inputs: readonly [{
            readonly name: "lootbox";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "creator";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "active";
            readonly type: "bool";
            readonly indexed: true;
            readonly internalType: "bool";
        }, {
            readonly name: "trustedForwarder";
            readonly type: "address";
            readonly indexed: false;
            readonly internalType: "address";
        }, {
            readonly name: "merkleRoots";
            readonly type: "bytes32[]";
            readonly indexed: false;
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "opens";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "globalOpens";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "OpensReconfigured";
        readonly inputs: readonly [{
            readonly name: "merkleRoots";
            readonly type: "bytes32[]";
            readonly indexed: false;
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "opens";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "globalOpens";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "RngReceived";
        readonly inputs: readonly [{
            readonly name: "requestId";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }, {
            readonly name: "requester";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "rngList";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "TrustedForwarderChanged";
        readonly inputs: readonly [{
            readonly name: "oldTrustedForwarder";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "newTrustedForwarder";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }];
    static createInterface(): LootBoxControllerInterface;
    static connect(address: string, signerOrProvider: Signer | Provider): LootBoxController;
}

declare class LootBoxERC2771__factory {
    static readonly abi: readonly [{
        readonly type: "function";
        readonly name: "changeTrustedForwarder";
        readonly inputs: readonly [{
            readonly name: "_trustedForwarder";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "isTrustedForwarder";
        readonly inputs: readonly [{
            readonly name: "forwarder";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "trustedForwarder";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "event";
        readonly name: "ItemRemoved";
        readonly inputs: readonly [{
            readonly name: "addr";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC1155_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenIdsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "tokenAmountsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC20_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenAmountSent";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC721_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenIdsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "ItemsAdded";
        readonly inputs: readonly [{
            readonly name: "erc20Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC20[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "tokenAmount";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "erc721Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC721[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIdRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIds";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "uriBase";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "erc1155Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC1155[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIdRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenAmountFixed";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "amountPickRangeFixed";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIds";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "inputTokenAmounts";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "amountPickRanges";
                readonly type: "tuple[]";
                readonly internalType: "struct ILootBox.Range[]";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "uriBase";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxActivated";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxClaimed";
        readonly inputs: readonly [{
            readonly name: "claimer";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "pickedTokens";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.PickedToken[]";
            readonly components: readonly [{
                readonly name: "itemContractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "tokenType";
                readonly type: "uint8";
                readonly internalType: "enum ILootBox.ItemType";
            }, {
                readonly name: "tokenId";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "tokenAmount";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxDeactivated";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxOpened";
        readonly inputs: readonly [{
            readonly name: "requester";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "requestId";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }, {
            readonly name: "rngCount";
            readonly type: "uint8";
            readonly indexed: false;
            readonly internalType: "uint8";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxPermanentlyStoped";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootboxCreated";
        readonly inputs: readonly [{
            readonly name: "lootbox";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "creator";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "active";
            readonly type: "bool";
            readonly indexed: true;
            readonly internalType: "bool";
        }, {
            readonly name: "trustedForwarder";
            readonly type: "address";
            readonly indexed: false;
            readonly internalType: "address";
        }, {
            readonly name: "merkleRoots";
            readonly type: "bytes32[]";
            readonly indexed: false;
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "opens";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "globalOpens";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "OpensReconfigured";
        readonly inputs: readonly [{
            readonly name: "merkleRoots";
            readonly type: "bytes32[]";
            readonly indexed: false;
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "opens";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "globalOpens";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "RngReceived";
        readonly inputs: readonly [{
            readonly name: "requestId";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }, {
            readonly name: "requester";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "rngList";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "TrustedForwarderChanged";
        readonly inputs: readonly [{
            readonly name: "oldTrustedForwarder";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "newTrustedForwarder";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }];
    static createInterface(): LootBoxERC2771Interface;
    static connect(address: string, signerOrProvider: Signer | Provider): LootBoxERC2771;
}

declare class LootBoxInfo__factory {
    static readonly abi: readonly [{
        readonly type: "function";
        readonly name: "active";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "baseURI";
        readonly inputs: readonly [{
            readonly name: "addr";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "string";
            readonly internalType: "string";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "canClaim";
        readonly inputs: readonly [{
            readonly name: "_addr";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "chain";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "erc1155_implementation";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "erc20_implementation";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "erc721_implementation";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "getMerkleData";
        readonly inputs: readonly [{
            readonly name: "idx";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bytes32";
            readonly internalType: "bytes32";
        }, {
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "getRemainingOpensForAddress";
        readonly inputs: readonly [{
            readonly name: "_addr";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "merkleProof";
            readonly type: "bytes32[]";
            readonly internalType: "bytes32[]";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "getRemainingOpensForAddressAndIdx";
        readonly inputs: readonly [{
            readonly name: "_addr";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "merkleProof";
            readonly type: "bytes32[]";
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "_idx";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "isCreatedContract";
        readonly inputs: readonly [{
            readonly name: "addr";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "isEmpty";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "itemAddresses";
        readonly inputs: readonly [{
            readonly name: "idx";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "lootboxCreator";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "lootboxManager";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "lootboxRngRouter";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "multicall";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "openAllowed";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "openerReqIds";
        readonly inputs: readonly [{
            readonly name: "_addr";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256[]";
            readonly internalType: "uint256[]";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "opensForAll";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "permanentlyStopped";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "pickedTokens";
        readonly inputs: readonly [{
            readonly name: "_addr";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "idx";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "tuple";
            readonly internalType: "struct ILootBox.PickedToken";
            readonly components: readonly [{
                readonly name: "itemContractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "tokenType";
                readonly type: "uint8";
                readonly internalType: "enum ILootBox.ItemType";
            }, {
                readonly name: "tokenId";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "tokenAmount";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "ptrERC1155";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "ptrERC20";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "ptrERC721";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "reqIdToRequester";
        readonly inputs: readonly [{
            readonly name: "reqId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "totalMerkleRoots";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "event";
        readonly name: "ItemRemoved";
        readonly inputs: readonly [{
            readonly name: "addr";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC1155_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenIdsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "tokenAmountsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC20_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenAmountSent";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC721_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenIdsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "ItemsAdded";
        readonly inputs: readonly [{
            readonly name: "erc20Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC20[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "tokenAmount";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "erc721Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC721[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIdRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIds";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "uriBase";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "erc1155Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC1155[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIdRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenAmountFixed";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "amountPickRangeFixed";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIds";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "inputTokenAmounts";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "amountPickRanges";
                readonly type: "tuple[]";
                readonly internalType: "struct ILootBox.Range[]";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "uriBase";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxActivated";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxClaimed";
        readonly inputs: readonly [{
            readonly name: "claimer";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "pickedTokens";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.PickedToken[]";
            readonly components: readonly [{
                readonly name: "itemContractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "tokenType";
                readonly type: "uint8";
                readonly internalType: "enum ILootBox.ItemType";
            }, {
                readonly name: "tokenId";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "tokenAmount";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxDeactivated";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxOpened";
        readonly inputs: readonly [{
            readonly name: "requester";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "requestId";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }, {
            readonly name: "rngCount";
            readonly type: "uint8";
            readonly indexed: false;
            readonly internalType: "uint8";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxPermanentlyStoped";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootboxCreated";
        readonly inputs: readonly [{
            readonly name: "lootbox";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "creator";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "active";
            readonly type: "bool";
            readonly indexed: true;
            readonly internalType: "bool";
        }, {
            readonly name: "trustedForwarder";
            readonly type: "address";
            readonly indexed: false;
            readonly internalType: "address";
        }, {
            readonly name: "merkleRoots";
            readonly type: "bytes32[]";
            readonly indexed: false;
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "opens";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "globalOpens";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "OpensReconfigured";
        readonly inputs: readonly [{
            readonly name: "merkleRoots";
            readonly type: "bytes32[]";
            readonly indexed: false;
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "opens";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "globalOpens";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "RngReceived";
        readonly inputs: readonly [{
            readonly name: "requestId";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }, {
            readonly name: "requester";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "rngList";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "TrustedForwarderChanged";
        readonly inputs: readonly [{
            readonly name: "oldTrustedForwarder";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "newTrustedForwarder";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }];
    static createInterface(): LootBoxInfoInterface;
    static connect(address: string, signerOrProvider: Signer | Provider): LootBoxInfo;
}

declare class LootBoxInteraction__factory {
    static readonly abi: readonly [{
        readonly type: "function";
        readonly name: "claimRewards";
        readonly inputs: readonly [];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "claimRewardsPartially";
        readonly inputs: readonly [{
            readonly name: "_maxRewardsToClaim";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "openLootBox";
        readonly inputs: readonly [{
            readonly name: "merkleProof";
            readonly type: "bytes32[]";
            readonly internalType: "bytes32[]";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "openLootBoxWithIdx";
        readonly inputs: readonly [{
            readonly name: "merkleProof";
            readonly type: "bytes32[]";
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "_idx";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "event";
        readonly name: "ItemRemoved";
        readonly inputs: readonly [{
            readonly name: "addr";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC1155_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenIdsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "tokenAmountsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC20_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenAmountSent";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC721_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenIdsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "ItemsAdded";
        readonly inputs: readonly [{
            readonly name: "erc20Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC20[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "tokenAmount";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "erc721Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC721[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIdRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIds";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "uriBase";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "erc1155Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC1155[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIdRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenAmountFixed";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "amountPickRangeFixed";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIds";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "inputTokenAmounts";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "amountPickRanges";
                readonly type: "tuple[]";
                readonly internalType: "struct ILootBox.Range[]";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "uriBase";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxActivated";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxClaimed";
        readonly inputs: readonly [{
            readonly name: "claimer";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "pickedTokens";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.PickedToken[]";
            readonly components: readonly [{
                readonly name: "itemContractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "tokenType";
                readonly type: "uint8";
                readonly internalType: "enum ILootBox.ItemType";
            }, {
                readonly name: "tokenId";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "tokenAmount";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxDeactivated";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxOpened";
        readonly inputs: readonly [{
            readonly name: "requester";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "requestId";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }, {
            readonly name: "rngCount";
            readonly type: "uint8";
            readonly indexed: false;
            readonly internalType: "uint8";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxPermanentlyStoped";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootboxCreated";
        readonly inputs: readonly [{
            readonly name: "lootbox";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "creator";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "active";
            readonly type: "bool";
            readonly indexed: true;
            readonly internalType: "bool";
        }, {
            readonly name: "trustedForwarder";
            readonly type: "address";
            readonly indexed: false;
            readonly internalType: "address";
        }, {
            readonly name: "merkleRoots";
            readonly type: "bytes32[]";
            readonly indexed: false;
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "opens";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "globalOpens";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "OpensReconfigured";
        readonly inputs: readonly [{
            readonly name: "merkleRoots";
            readonly type: "bytes32[]";
            readonly indexed: false;
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "opens";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "globalOpens";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "RngReceived";
        readonly inputs: readonly [{
            readonly name: "requestId";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }, {
            readonly name: "requester";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "rngList";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "TrustedForwarderChanged";
        readonly inputs: readonly [{
            readonly name: "oldTrustedForwarder";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "newTrustedForwarder";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }];
    static createInterface(): LootBoxInteractionInterface;
    static connect(address: string, signerOrProvider: Signer | Provider): LootBoxInteraction;
}

declare class LootBoxOwnership__factory {
    static readonly abi: readonly [{
        readonly type: "function";
        readonly name: "owner";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "owner_";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "transferOwnership";
        readonly inputs: readonly [{
            readonly name: "_newOwner";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "event";
        readonly name: "OwnershipTransferred";
        readonly inputs: readonly [{
            readonly name: "previousOwner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "newOwner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }];
    static createInterface(): LootBoxOwnershipInterface;
    static connect(address: string, signerOrProvider: Signer | Provider): LootBoxOwnership;
}

type index$1_LootBoxController__factory = LootBoxController__factory;
declare const index$1_LootBoxController__factory: typeof LootBoxController__factory;
type index$1_LootBoxERC2771__factory = LootBoxERC2771__factory;
declare const index$1_LootBoxERC2771__factory: typeof LootBoxERC2771__factory;
type index$1_LootBoxInfo__factory = LootBoxInfo__factory;
declare const index$1_LootBoxInfo__factory: typeof LootBoxInfo__factory;
type index$1_LootBoxInteraction__factory = LootBoxInteraction__factory;
declare const index$1_LootBoxInteraction__factory: typeof LootBoxInteraction__factory;
type index$1_LootBoxOwnership__factory = LootBoxOwnership__factory;
declare const index$1_LootBoxOwnership__factory: typeof LootBoxOwnership__factory;
declare namespace index$1 {
  export { index$1_LootBoxController__factory as LootBoxController__factory, index$1_LootBoxERC2771__factory as LootBoxERC2771__factory, index$1_LootBoxInfo__factory as LootBoxInfo__factory, index$1_LootBoxInteraction__factory as LootBoxInteraction__factory, index$1_LootBoxOwnership__factory as LootBoxOwnership__factory };
}

declare class ERC1155__factory {
    static readonly abi: readonly [{
        readonly type: "constructor";
        readonly inputs: readonly [{
            readonly name: "_trustedForwarder";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "UPGRADE_INTERFACE_VERSION";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "string";
            readonly internalType: "string";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "balanceOf";
        readonly inputs: readonly [{
            readonly name: "account";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "id";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "balanceOfBatch";
        readonly inputs: readonly [{
            readonly name: "accounts";
            readonly type: "address[]";
            readonly internalType: "address[]";
        }, {
            readonly name: "ids";
            readonly type: "uint256[]";
            readonly internalType: "uint256[]";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256[]";
            readonly internalType: "uint256[]";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "baseURI";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "string";
            readonly internalType: "string";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "exists";
        readonly inputs: readonly [{
            readonly name: "id";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "initialize";
        readonly inputs: readonly [{
            readonly name: "_name";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "_symbol";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "_baseuri";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "_lootboxAddress";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_owner";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_tf";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "isApprovedForAll";
        readonly inputs: readonly [{
            readonly name: "account";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "operator";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "isTrustedForwarder";
        readonly inputs: readonly [{
            readonly name: "forwarder";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "lootboxAddress";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "lootboxMint";
        readonly inputs: readonly [{
            readonly name: "account";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_tokenId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "amount";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "mintNFT";
        readonly inputs: readonly [{
            readonly name: "account";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_tokenId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "amount";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "name";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "string";
            readonly internalType: "string";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "owner";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "proxiableUUID";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bytes32";
            readonly internalType: "bytes32";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "renounceOwnership";
        readonly inputs: readonly [];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "safeBatchTransferFrom";
        readonly inputs: readonly [{
            readonly name: "from";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "to";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "ids";
            readonly type: "uint256[]";
            readonly internalType: "uint256[]";
        }, {
            readonly name: "values";
            readonly type: "uint256[]";
            readonly internalType: "uint256[]";
        }, {
            readonly name: "data";
            readonly type: "bytes";
            readonly internalType: "bytes";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "safeTransferFrom";
        readonly inputs: readonly [{
            readonly name: "from";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "to";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "id";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "value";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "data";
            readonly type: "bytes";
            readonly internalType: "bytes";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "setApprovalForAll";
        readonly inputs: readonly [{
            readonly name: "operator";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "approved";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "supportsInterface";
        readonly inputs: readonly [{
            readonly name: "interfaceId";
            readonly type: "bytes4";
            readonly internalType: "bytes4";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "symbol";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "string";
            readonly internalType: "string";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "tf";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "totalSupply";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "totalSupply";
        readonly inputs: readonly [{
            readonly name: "id";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "transferOwnership";
        readonly inputs: readonly [{
            readonly name: "newOwner";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "trustedForwarder";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "upgradeToAndCall";
        readonly inputs: readonly [{
            readonly name: "newImplementation";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "data";
            readonly type: "bytes";
            readonly internalType: "bytes";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "payable";
    }, {
        readonly type: "function";
        readonly name: "uri";
        readonly inputs: readonly [{
            readonly name: "_tokenId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "string";
            readonly internalType: "string";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "event";
        readonly name: "ApprovalForAll";
        readonly inputs: readonly [{
            readonly name: "account";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "operator";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "approved";
            readonly type: "bool";
            readonly indexed: false;
            readonly internalType: "bool";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Initialized";
        readonly inputs: readonly [{
            readonly name: "version";
            readonly type: "uint64";
            readonly indexed: false;
            readonly internalType: "uint64";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "OwnershipTransferred";
        readonly inputs: readonly [{
            readonly name: "previousOwner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "newOwner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "TransferBatch";
        readonly inputs: readonly [{
            readonly name: "operator";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "from";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "to";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "ids";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "values";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "TransferSingle";
        readonly inputs: readonly [{
            readonly name: "operator";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "from";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "to";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "id";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }, {
            readonly name: "value";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "URI";
        readonly inputs: readonly [{
            readonly name: "value";
            readonly type: "string";
            readonly indexed: false;
            readonly internalType: "string";
        }, {
            readonly name: "id";
            readonly type: "uint256";
            readonly indexed: true;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Upgraded";
        readonly inputs: readonly [{
            readonly name: "implementation";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "error";
        readonly name: "AddressEmptyCode";
        readonly inputs: readonly [{
            readonly name: "target";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC1155InsufficientBalance";
        readonly inputs: readonly [{
            readonly name: "sender";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "balance";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "needed";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "tokenId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC1155InvalidApprover";
        readonly inputs: readonly [{
            readonly name: "approver";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC1155InvalidArrayLength";
        readonly inputs: readonly [{
            readonly name: "idsLength";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "valuesLength";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC1155InvalidOperator";
        readonly inputs: readonly [{
            readonly name: "operator";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC1155InvalidReceiver";
        readonly inputs: readonly [{
            readonly name: "receiver";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC1155InvalidSender";
        readonly inputs: readonly [{
            readonly name: "sender";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC1155MissingApprovalForAll";
        readonly inputs: readonly [{
            readonly name: "operator";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "owner";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC1967InvalidImplementation";
        readonly inputs: readonly [{
            readonly name: "implementation";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC1967NonPayable";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "FailedInnerCall";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "InvalidInitialization";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "NotInitializing";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "OwnableInvalidOwner";
        readonly inputs: readonly [{
            readonly name: "owner";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "OwnableUnauthorizedAccount";
        readonly inputs: readonly [{
            readonly name: "account";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "UUPSUnauthorizedCallContext";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "UUPSUnsupportedProxiableUUID";
        readonly inputs: readonly [{
            readonly name: "slot";
            readonly type: "bytes32";
            readonly internalType: "bytes32";
        }];
    }];
    static createInterface(): ERC1155Interface;
    static connect(address: string, signerOrProvider: Signer | Provider): ERC1155;
}

declare class ERC20__factory {
    static readonly abi: readonly [{
        readonly type: "constructor";
        readonly inputs: readonly [{
            readonly name: "_trustedForwarder";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "UPGRADE_INTERFACE_VERSION";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "string";
            readonly internalType: "string";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "allowance";
        readonly inputs: readonly [{
            readonly name: "owner";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "spender";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "approve";
        readonly inputs: readonly [{
            readonly name: "spender";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "value";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "balanceOf";
        readonly inputs: readonly [{
            readonly name: "account";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "decimals";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint8";
            readonly internalType: "uint8";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "initialize";
        readonly inputs: readonly [{
            readonly name: "_name";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "_symbol";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "_lootboxAddress";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_owner";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_tf";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "isTrustedForwarder";
        readonly inputs: readonly [{
            readonly name: "forwarder";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "lootboxAddress";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "lootboxMint";
        readonly inputs: readonly [{
            readonly name: "to";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "amount";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "mint";
        readonly inputs: readonly [{
            readonly name: "to";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "amount";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "name";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "string";
            readonly internalType: "string";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "owner";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "proxiableUUID";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bytes32";
            readonly internalType: "bytes32";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "renounceOwnership";
        readonly inputs: readonly [];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "symbol";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "string";
            readonly internalType: "string";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "totalSupply";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "transfer";
        readonly inputs: readonly [{
            readonly name: "to";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "value";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "transferFrom";
        readonly inputs: readonly [{
            readonly name: "from";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "to";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "value";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "transferOwnership";
        readonly inputs: readonly [{
            readonly name: "newOwner";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "trustedForwarder";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "upgradeToAndCall";
        readonly inputs: readonly [{
            readonly name: "newImplementation";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "data";
            readonly type: "bytes";
            readonly internalType: "bytes";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "payable";
    }, {
        readonly type: "event";
        readonly name: "Approval";
        readonly inputs: readonly [{
            readonly name: "owner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "spender";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "value";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Initialized";
        readonly inputs: readonly [{
            readonly name: "version";
            readonly type: "uint64";
            readonly indexed: false;
            readonly internalType: "uint64";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "OwnershipTransferred";
        readonly inputs: readonly [{
            readonly name: "previousOwner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "newOwner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Transfer";
        readonly inputs: readonly [{
            readonly name: "from";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "to";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "value";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Upgraded";
        readonly inputs: readonly [{
            readonly name: "implementation";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "error";
        readonly name: "AddressEmptyCode";
        readonly inputs: readonly [{
            readonly name: "target";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC1967InvalidImplementation";
        readonly inputs: readonly [{
            readonly name: "implementation";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC1967NonPayable";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "ERC20InsufficientAllowance";
        readonly inputs: readonly [{
            readonly name: "spender";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "allowance";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "needed";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC20InsufficientBalance";
        readonly inputs: readonly [{
            readonly name: "sender";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "balance";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "needed";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC20InvalidApprover";
        readonly inputs: readonly [{
            readonly name: "approver";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC20InvalidReceiver";
        readonly inputs: readonly [{
            readonly name: "receiver";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC20InvalidSender";
        readonly inputs: readonly [{
            readonly name: "sender";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC20InvalidSpender";
        readonly inputs: readonly [{
            readonly name: "spender";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "FailedInnerCall";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "InvalidInitialization";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "NotInitializing";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "OwnableInvalidOwner";
        readonly inputs: readonly [{
            readonly name: "owner";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "OwnableUnauthorizedAccount";
        readonly inputs: readonly [{
            readonly name: "account";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "UUPSUnauthorizedCallContext";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "UUPSUnsupportedProxiableUUID";
        readonly inputs: readonly [{
            readonly name: "slot";
            readonly type: "bytes32";
            readonly internalType: "bytes32";
        }];
    }];
    static createInterface(): ERC20Interface;
    static connect(address: string, signerOrProvider: Signer | Provider): ERC20;
}

declare class ERC721__factory {
    static readonly abi: readonly [{
        readonly type: "constructor";
        readonly inputs: readonly [{
            readonly name: "_trustedForwarder";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "UPGRADE_INTERFACE_VERSION";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "string";
            readonly internalType: "string";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "approve";
        readonly inputs: readonly [{
            readonly name: "to";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "tokenId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "balanceOf";
        readonly inputs: readonly [{
            readonly name: "owner";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "baseURI";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "string";
            readonly internalType: "string";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "getApproved";
        readonly inputs: readonly [{
            readonly name: "tokenId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "initialize";
        readonly inputs: readonly [{
            readonly name: "_name";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "_symbol";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "baseuri";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "_lootboxAddress";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_disallowedTokenIdStart";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "_disallowedTokenIdEnd";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "_disallowedTokenIds";
            readonly type: "uint256[]";
            readonly internalType: "uint256[]";
        }, {
            readonly name: "_owner";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_tf";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "isApprovedForAll";
        readonly inputs: readonly [{
            readonly name: "owner";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "operator";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "isTokenIdDisallowed";
        readonly inputs: readonly [{
            readonly name: "_tokenId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "isTrustedForwarder";
        readonly inputs: readonly [{
            readonly name: "forwarder";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "lootboxAddress";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "lootboxMint";
        readonly inputs: readonly [{
            readonly name: "_to";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_tokenId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "mintNFT";
        readonly inputs: readonly [{
            readonly name: "_to";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_tokenId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "name";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "string";
            readonly internalType: "string";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "owner";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "ownerOf";
        readonly inputs: readonly [{
            readonly name: "tokenId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "proxiableUUID";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bytes32";
            readonly internalType: "bytes32";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "renounceOwnership";
        readonly inputs: readonly [];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "safeTransferFrom";
        readonly inputs: readonly [{
            readonly name: "from";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "to";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "tokenId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "safeTransferFrom";
        readonly inputs: readonly [{
            readonly name: "from";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "to";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "tokenId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "data";
            readonly type: "bytes";
            readonly internalType: "bytes";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "setApprovalForAll";
        readonly inputs: readonly [{
            readonly name: "operator";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "approved";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "supportsInterface";
        readonly inputs: readonly [{
            readonly name: "interfaceId";
            readonly type: "bytes4";
            readonly internalType: "bytes4";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "symbol";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "string";
            readonly internalType: "string";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "tokenURI";
        readonly inputs: readonly [{
            readonly name: "tokenId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "string";
            readonly internalType: "string";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "transferFrom";
        readonly inputs: readonly [{
            readonly name: "from";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "to";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "tokenId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "transferOwnership";
        readonly inputs: readonly [{
            readonly name: "newOwner";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "trustedForwarder";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "upgradeToAndCall";
        readonly inputs: readonly [{
            readonly name: "newImplementation";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "data";
            readonly type: "bytes";
            readonly internalType: "bytes";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "payable";
    }, {
        readonly type: "event";
        readonly name: "Approval";
        readonly inputs: readonly [{
            readonly name: "owner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "approved";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenId";
            readonly type: "uint256";
            readonly indexed: true;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "ApprovalForAll";
        readonly inputs: readonly [{
            readonly name: "owner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "operator";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "approved";
            readonly type: "bool";
            readonly indexed: false;
            readonly internalType: "bool";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Initialized";
        readonly inputs: readonly [{
            readonly name: "version";
            readonly type: "uint64";
            readonly indexed: false;
            readonly internalType: "uint64";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "OwnershipTransferred";
        readonly inputs: readonly [{
            readonly name: "previousOwner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "newOwner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Transfer";
        readonly inputs: readonly [{
            readonly name: "from";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "to";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenId";
            readonly type: "uint256";
            readonly indexed: true;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Upgraded";
        readonly inputs: readonly [{
            readonly name: "implementation";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "error";
        readonly name: "AddressEmptyCode";
        readonly inputs: readonly [{
            readonly name: "target";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC1967InvalidImplementation";
        readonly inputs: readonly [{
            readonly name: "implementation";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC1967NonPayable";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "ERC721IncorrectOwner";
        readonly inputs: readonly [{
            readonly name: "sender";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "tokenId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "owner";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC721InsufficientApproval";
        readonly inputs: readonly [{
            readonly name: "operator";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "tokenId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC721InvalidApprover";
        readonly inputs: readonly [{
            readonly name: "approver";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC721InvalidOperator";
        readonly inputs: readonly [{
            readonly name: "operator";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC721InvalidOwner";
        readonly inputs: readonly [{
            readonly name: "owner";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC721InvalidReceiver";
        readonly inputs: readonly [{
            readonly name: "receiver";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC721InvalidSender";
        readonly inputs: readonly [{
            readonly name: "sender";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "ERC721NonexistentToken";
        readonly inputs: readonly [{
            readonly name: "tokenId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
    }, {
        readonly type: "error";
        readonly name: "FailedInnerCall";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "InvalidInitialization";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "NotInitializing";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "OwnableInvalidOwner";
        readonly inputs: readonly [{
            readonly name: "owner";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "OwnableUnauthorizedAccount";
        readonly inputs: readonly [{
            readonly name: "account";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "UUPSUnauthorizedCallContext";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "UUPSUnsupportedProxiableUUID";
        readonly inputs: readonly [{
            readonly name: "slot";
            readonly type: "bytes32";
            readonly internalType: "bytes32";
        }];
    }];
    static createInterface(): ERC721Interface;
    static connect(address: string, signerOrProvider: Signer | Provider): ERC721;
}

declare class ILootBox__factory {
    static readonly abi: readonly [{
        readonly type: "event";
        readonly name: "ItemRemoved";
        readonly inputs: readonly [{
            readonly name: "addr";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC1155_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenIdsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "tokenAmountsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC20_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenAmountSent";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC721_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenIdsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "ItemsAdded";
        readonly inputs: readonly [{
            readonly name: "erc20Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC20[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "distributions";
                readonly type: "tuple[]";
                readonly internalType: "struct ILootBox.Item_ERC20_Distribution[]";
                readonly components: readonly [{
                    readonly name: "amount";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "chance";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "tokenAmount";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "erc721Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC721[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIdRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIds";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "uriBase";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "erc1155Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC1155[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIdRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenAmountFixed";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "amountPickRangeFixed";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIds";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "inputTokenAmounts";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "amountPickRanges";
                readonly type: "tuple[]";
                readonly internalType: "struct ILootBox.Range[]";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "uriBase";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxActivated";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxClaimed";
        readonly inputs: readonly [{
            readonly name: "claimer";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "pickedTokens";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.PickedToken[]";
            readonly components: readonly [{
                readonly name: "itemContractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "tokenType";
                readonly type: "uint8";
                readonly internalType: "enum ILootBox.ItemType";
            }, {
                readonly name: "tokenId";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "tokenAmount";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxDeactivated";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxOpened";
        readonly inputs: readonly [{
            readonly name: "requester";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "requestId";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }, {
            readonly name: "rngCount";
            readonly type: "uint8";
            readonly indexed: false;
            readonly internalType: "uint8";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxPermanentlyStoped";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootboxCreated";
        readonly inputs: readonly [{
            readonly name: "lootbox";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "creator";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "active";
            readonly type: "bool";
            readonly indexed: true;
            readonly internalType: "bool";
        }, {
            readonly name: "trustedForwarder";
            readonly type: "address";
            readonly indexed: false;
            readonly internalType: "address";
        }, {
            readonly name: "merkleRoots";
            readonly type: "bytes32[]";
            readonly indexed: false;
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "opens";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "globalOpens";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "OpensReconfigured";
        readonly inputs: readonly [{
            readonly name: "merkleRoots";
            readonly type: "bytes32[]";
            readonly indexed: false;
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "opens";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "globalOpens";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "RngReceived";
        readonly inputs: readonly [{
            readonly name: "requestId";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }, {
            readonly name: "requester";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "rngList";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "TrustedForwarderChanged";
        readonly inputs: readonly [{
            readonly name: "oldTrustedForwarder";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "newTrustedForwarder";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }];
    static createInterface(): ILootBoxInterface;
    static connect(address: string, signerOrProvider: Signer | Provider): ILootBox$3;
}

declare class LootBoxManager__factory {
    static readonly abi: readonly [{
        readonly type: "constructor";
        readonly inputs: readonly [{
            readonly name: "_erc20_impl";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_erc721_impl";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_erc1155_impl";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_multicall";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_rngRouter";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_tokenCallbackHandler_impl";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_ownership_impl";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_erc2771_impl";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_rngProcessor_impl";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_lootBoxInteraction_impl";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_lootBoxController_impl";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_lootBoxInfo_impl";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "IID_IERC1155";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bytes4";
            readonly internalType: "bytes4";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "IID_IERC721";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bytes4";
            readonly internalType: "bytes4";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "createLootbox";
        readonly inputs: readonly [{
            readonly name: "_erc20Items";
            readonly type: "tuple[]";
            readonly internalType: "struct ILootBox.Item_ERC20[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "distributions";
                readonly type: "tuple[]";
                readonly internalType: "struct ILootBox.Item_ERC20_Distribution[]";
                readonly components: readonly [{
                    readonly name: "amount";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "chance";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "tokenAmount";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "_erc721Items";
            readonly type: "tuple[]";
            readonly internalType: "struct ILootBox.Item_ERC721[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIdRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIds";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "uriBase";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "_erc1155Items";
            readonly type: "tuple[]";
            readonly internalType: "struct ILootBox.Item_ERC1155[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIdRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenAmountFixed";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "amountPickRangeFixed";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIds";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "inputTokenAmounts";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "amountPickRanges";
                readonly type: "tuple[]";
                readonly internalType: "struct ILootBox.Range[]";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "uriBase";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "_trustedForwarder";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_active";
            readonly type: "bool";
            readonly internalType: "bool";
        }, {
            readonly name: "_roots";
            readonly type: "bytes32[]";
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "_opens";
            readonly type: "uint256[]";
            readonly internalType: "uint256[]";
        }, {
            readonly name: "_globalOpens";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "erc1155";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "erc20";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "erc721";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "facets";
        readonly inputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "functionSelectors";
        readonly inputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bytes4";
            readonly internalType: "bytes4";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "isERC1155";
        readonly inputs: readonly [{
            readonly name: "nftAddress";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "isERC721";
        readonly inputs: readonly [{
            readonly name: "nftAddress";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "isValidLootbox";
        readonly inputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "multicall";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "contract LootBoxMulticall";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "owner";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "renounceOwnership";
        readonly inputs: readonly [];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "rngRouter";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "contract LootBoxRngRouter";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "transferOwnership";
        readonly inputs: readonly [{
            readonly name: "newOwner";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "userLootboxes";
        readonly inputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "event";
        readonly name: "ItemRemoved";
        readonly inputs: readonly [{
            readonly name: "addr";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC1155_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenIdsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "tokenAmountsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC20_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenAmountSent";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC721_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenIdsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "ItemsAdded";
        readonly inputs: readonly [{
            readonly name: "erc20Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC20[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "distributions";
                readonly type: "tuple[]";
                readonly internalType: "struct ILootBox.Item_ERC20_Distribution[]";
                readonly components: readonly [{
                    readonly name: "amount";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "chance";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "tokenAmount";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "erc721Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC721[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIdRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIds";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "uriBase";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "erc1155Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC1155[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIdRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenAmountFixed";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "amountPickRangeFixed";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIds";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "inputTokenAmounts";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "amountPickRanges";
                readonly type: "tuple[]";
                readonly internalType: "struct ILootBox.Range[]";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "uriBase";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxActivated";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxClaimed";
        readonly inputs: readonly [{
            readonly name: "claimer";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "pickedTokens";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.PickedToken[]";
            readonly components: readonly [{
                readonly name: "itemContractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "tokenType";
                readonly type: "uint8";
                readonly internalType: "enum ILootBox.ItemType";
            }, {
                readonly name: "tokenId";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "tokenAmount";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxDeactivated";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxOpened";
        readonly inputs: readonly [{
            readonly name: "requester";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "requestId";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }, {
            readonly name: "rngCount";
            readonly type: "uint8";
            readonly indexed: false;
            readonly internalType: "uint8";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxPermanentlyStoped";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootboxCreated";
        readonly inputs: readonly [{
            readonly name: "lootbox";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "creator";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "active";
            readonly type: "bool";
            readonly indexed: true;
            readonly internalType: "bool";
        }, {
            readonly name: "trustedForwarder";
            readonly type: "address";
            readonly indexed: false;
            readonly internalType: "address";
        }, {
            readonly name: "merkleRoots";
            readonly type: "bytes32[]";
            readonly indexed: false;
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "opens";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "globalOpens";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "OpensReconfigured";
        readonly inputs: readonly [{
            readonly name: "merkleRoots";
            readonly type: "bytes32[]";
            readonly indexed: false;
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "opens";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "globalOpens";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "OwnershipTransferred";
        readonly inputs: readonly [{
            readonly name: "previousOwner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "newOwner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "RngReceived";
        readonly inputs: readonly [{
            readonly name: "requestId";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }, {
            readonly name: "requester";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "rngList";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "TrustedForwarderChanged";
        readonly inputs: readonly [{
            readonly name: "oldTrustedForwarder";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "newTrustedForwarder";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "error";
        readonly name: "OwnableInvalidOwner";
        readonly inputs: readonly [{
            readonly name: "owner";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "OwnableUnauthorizedAccount";
        readonly inputs: readonly [{
            readonly name: "account";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }];
    static createInterface(): LootBoxManagerInterface;
    static connect(address: string, signerOrProvider: Signer | Provider): LootBoxManager;
}

declare class LootBoxMulticall__factory {
    static readonly abi: readonly [{
        readonly type: "constructor";
        readonly inputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "addTrustedForwarder";
        readonly inputs: readonly [{
            readonly name: "forwarder";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "claimMulticall";
        readonly inputs: readonly [{
            readonly name: "lbs";
            readonly type: "tuple[]";
            readonly internalType: "struct LootBoxMulticall.LootBoxClaimCall[]";
            readonly components: readonly [{
                readonly name: "lb";
                readonly type: "address";
                readonly internalType: "address";
            }];
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "claimPartiallyMulticall";
        readonly inputs: readonly [{
            readonly name: "lbs";
            readonly type: "tuple[]";
            readonly internalType: "struct LootBoxMulticall.LootBoxClaimCallPartial[]";
            readonly components: readonly [{
                readonly name: "lb";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "maxRewardsToClaim";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "initialize";
        readonly inputs: readonly [];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "initialized";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "isTrustedForwarder";
        readonly inputs: readonly [{
            readonly name: "forwarder";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "lootboxManager";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "contract LootBoxManager";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "openMulticall";
        readonly inputs: readonly [{
            readonly name: "lbs";
            readonly type: "tuple[]";
            readonly internalType: "struct LootBoxMulticall.LootBoxOpenCall[]";
            readonly components: readonly [{
                readonly name: "lb";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "merkleProof";
                readonly type: "bytes32[]";
                readonly internalType: "bytes32[]";
            }];
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "openWithIdxMulticall";
        readonly inputs: readonly [{
            readonly name: "lbs";
            readonly type: "tuple[]";
            readonly internalType: "struct LootBoxMulticall.LootBoxOpenCallWithIdx[]";
            readonly components: readonly [{
                readonly name: "lb";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "merkleProof";
                readonly type: "bytes32[]";
                readonly internalType: "bytes32[]";
            }, {
                readonly name: "idx";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "removeTrustedForwarder";
        readonly inputs: readonly [{
            readonly name: "forwarder";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "trustedForwarder";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "event";
        readonly name: "ItemRemoved";
        readonly inputs: readonly [{
            readonly name: "addr";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC1155_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenIdsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "tokenAmountsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC20_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenAmountSent";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC721_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenIdsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "ItemsAdded";
        readonly inputs: readonly [{
            readonly name: "erc20Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC20[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "tokenAmount";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "erc721Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC721[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIdRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIds";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "uriBase";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "erc1155Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC1155[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIdRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenAmountFixed";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "amountPickRangeFixed";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIds";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "inputTokenAmounts";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "amountPickRanges";
                readonly type: "tuple[]";
                readonly internalType: "struct ILootBox.Range[]";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "uriBase";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxActivated";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxClaimed";
        readonly inputs: readonly [{
            readonly name: "claimer";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "pickedTokens";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.PickedToken[]";
            readonly components: readonly [{
                readonly name: "itemContractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "tokenType";
                readonly type: "uint8";
                readonly internalType: "enum ILootBox.ItemType";
            }, {
                readonly name: "tokenId";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "tokenAmount";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxDeactivated";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxOpened";
        readonly inputs: readonly [{
            readonly name: "requester";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "requestId";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }, {
            readonly name: "rngCount";
            readonly type: "uint8";
            readonly indexed: false;
            readonly internalType: "uint8";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxPermanentlyStoped";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootboxCreated";
        readonly inputs: readonly [{
            readonly name: "lootbox";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "creator";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "active";
            readonly type: "bool";
            readonly indexed: true;
            readonly internalType: "bool";
        }, {
            readonly name: "trustedForwarder";
            readonly type: "address";
            readonly indexed: false;
            readonly internalType: "address";
        }, {
            readonly name: "merkleRoots";
            readonly type: "bytes32[]";
            readonly indexed: false;
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "opens";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "globalOpens";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "OpensReconfigured";
        readonly inputs: readonly [{
            readonly name: "merkleRoots";
            readonly type: "bytes32[]";
            readonly indexed: false;
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "opens";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "globalOpens";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "RngReceived";
        readonly inputs: readonly [{
            readonly name: "requestId";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }, {
            readonly name: "requester";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "rngList";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "TrustedForwarderChanged";
        readonly inputs: readonly [{
            readonly name: "oldTrustedForwarder";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "newTrustedForwarder";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }];
    static createInterface(): LootBoxMulticallInterface;
    static connect(address: string, signerOrProvider: Signer | Provider): LootBoxMulticall;
}

declare class LootBoxRngRouter__factory {
    static readonly abi: readonly [{
        readonly type: "constructor";
        readonly inputs: readonly [{
            readonly name: "_supraRouter";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_supraClient";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "activateContract";
        readonly inputs: readonly [];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "active";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "chainId";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "deactivateContract";
        readonly inputs: readonly [];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "getRngRequestInfo";
        readonly inputs: readonly [{
            readonly name: "requestId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "info";
            readonly type: "tuple";
            readonly internalType: "struct ILootBox.RngRequest";
            readonly components: readonly [{
                readonly name: "lootBox";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "status";
                readonly type: "uint8";
                readonly internalType: "enum ILootBox.RngRequestStatus";
            }, {
                readonly name: "requestTimestamp";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "requestId";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "supraNonce";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "getRngRequestStatus";
        readonly inputs: readonly [{
            readonly name: "requestId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint8";
            readonly internalType: "enum ILootBox.RngRequestStatus";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "initialize";
        readonly inputs: readonly [];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "initialized";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "lootBoxManager";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "contract LootBoxManager";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "owner";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "renounceOwnership";
        readonly inputs: readonly [];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "requestRng";
        readonly inputs: readonly [{
            readonly name: "rngCount";
            readonly type: "uint8";
            readonly internalType: "uint8";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "routeRng";
        readonly inputs: readonly [{
            readonly name: "supraNonce";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "_rngs";
            readonly type: "uint256[]";
            readonly internalType: "uint256[]";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "supraClient";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "supraNonceToRequestId";
        readonly inputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "supraRouter";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "timeout";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "transferOwnership";
        readonly inputs: readonly [{
            readonly name: "newOwner";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "event";
        readonly name: "ItemRemoved";
        readonly inputs: readonly [{
            readonly name: "addr";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC1155_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenIdsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "tokenAmountsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC20_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenAmountSent";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "Item_ERC721_Updated";
        readonly inputs: readonly [{
            readonly name: "contractAddress";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenReceiver";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "tokenIdsSent";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "ItemsAdded";
        readonly inputs: readonly [{
            readonly name: "erc20Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC20[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "tokenAmount";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "erc721Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC721[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIdRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIds";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "uriBase";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }, {
            readonly name: "erc1155Items";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.Item_ERC1155[]";
            readonly components: readonly [{
                readonly name: "contractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "pickRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIdRange";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenAmountFixed";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "amountPickRangeFixed";
                readonly type: "tuple";
                readonly internalType: "struct ILootBox.Range";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "inputTokenIds";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "inputTokenAmounts";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "amountPickRanges";
                readonly type: "tuple[]";
                readonly internalType: "struct ILootBox.Range[]";
                readonly components: readonly [{
                    readonly name: "start";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }, {
                    readonly name: "end";
                    readonly type: "uint256";
                    readonly internalType: "uint256";
                }];
            }, {
                readonly name: "uriBase";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "name";
                readonly type: "string";
                readonly internalType: "string";
            }, {
                readonly name: "symbol";
                readonly type: "string";
                readonly internalType: "string";
            }];
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxActivated";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxClaimed";
        readonly inputs: readonly [{
            readonly name: "claimer";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "pickedTokens";
            readonly type: "tuple[]";
            readonly indexed: false;
            readonly internalType: "struct ILootBox.PickedToken[]";
            readonly components: readonly [{
                readonly name: "itemContractAddress";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "tokenType";
                readonly type: "uint8";
                readonly internalType: "enum ILootBox.ItemType";
            }, {
                readonly name: "tokenId";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "tokenAmount";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxDeactivated";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxOpened";
        readonly inputs: readonly [{
            readonly name: "requester";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "requestId";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }, {
            readonly name: "rngCount";
            readonly type: "uint8";
            readonly indexed: false;
            readonly internalType: "uint8";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxPermanentlyStoped";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxRngRouterActivated";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxRngRouterConfigured";
        readonly inputs: readonly [{
            readonly name: "lootBoxManager";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "supraRouter";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "supraClient";
            readonly type: "address";
            readonly indexed: false;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootBoxRngRouterDeactivated";
        readonly inputs: readonly [];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "LootboxCreated";
        readonly inputs: readonly [{
            readonly name: "lootbox";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "creator";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "active";
            readonly type: "bool";
            readonly indexed: true;
            readonly internalType: "bool";
        }, {
            readonly name: "trustedForwarder";
            readonly type: "address";
            readonly indexed: false;
            readonly internalType: "address";
        }, {
            readonly name: "merkleRoots";
            readonly type: "bytes32[]";
            readonly indexed: false;
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "opens";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "globalOpens";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "OpensReconfigured";
        readonly inputs: readonly [{
            readonly name: "merkleRoots";
            readonly type: "bytes32[]";
            readonly indexed: false;
            readonly internalType: "bytes32[]";
        }, {
            readonly name: "opens";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }, {
            readonly name: "globalOpens";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "OwnershipTransferred";
        readonly inputs: readonly [{
            readonly name: "previousOwner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "newOwner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "RngReceived";
        readonly inputs: readonly [{
            readonly name: "requestId";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }, {
            readonly name: "requester";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "rngList";
            readonly type: "uint256[]";
            readonly indexed: false;
            readonly internalType: "uint256[]";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "RngRequested";
        readonly inputs: readonly [{
            readonly name: "requestId";
            readonly type: "uint256";
            readonly indexed: true;
            readonly internalType: "uint256";
        }, {
            readonly name: "lootBox";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "supraNonce";
            readonly type: "uint256";
            readonly indexed: true;
            readonly internalType: "uint256";
        }, {
            readonly name: "requestTimestamp";
            readonly type: "uint256";
            readonly indexed: false;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "RngRouted";
        readonly inputs: readonly [{
            readonly name: "requestId";
            readonly type: "uint256";
            readonly indexed: true;
            readonly internalType: "uint256";
        }, {
            readonly name: "lootBox";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "supraNonce";
            readonly type: "uint256";
            readonly indexed: true;
            readonly internalType: "uint256";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "TrustedForwarderChanged";
        readonly inputs: readonly [{
            readonly name: "oldTrustedForwarder";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "newTrustedForwarder";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "error";
        readonly name: "InvalidLootBox";
        readonly inputs: readonly [{
            readonly name: "lootBox";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "LootBoxRngRouterNotActive";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "OwnableInvalidOwner";
        readonly inputs: readonly [{
            readonly name: "owner";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "OwnableUnauthorizedAccount";
        readonly inputs: readonly [{
            readonly name: "account";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "RngRequestInvalidStatus";
        readonly inputs: readonly [{
            readonly name: "requestId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "status";
            readonly type: "uint8";
            readonly internalType: "enum ILootBox.RngRequestStatus";
        }, {
            readonly name: "expectedStatus";
            readonly type: "uint8";
            readonly internalType: "enum ILootBox.RngRequestStatus";
        }];
    }, {
        readonly type: "error";
        readonly name: "UnauthorizedCaller";
        readonly inputs: readonly [{
            readonly name: "unauthorizedCaller";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "expectedCaller";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }];
    static createInterface(): LootBoxRngRouterInterface;
    static connect(address: string, signerOrProvider: Signer | Provider): LootBoxRngRouter;
}

type index_ERC1155__factory = ERC1155__factory;
declare const index_ERC1155__factory: typeof ERC1155__factory;
type index_ERC20__factory = ERC20__factory;
declare const index_ERC20__factory: typeof ERC20__factory;
type index_ERC721__factory = ERC721__factory;
declare const index_ERC721__factory: typeof ERC721__factory;
type index_ILootBox__factory = ILootBox__factory;
declare const index_ILootBox__factory: typeof ILootBox__factory;
type index_LootBoxManager__factory = LootBoxManager__factory;
declare const index_LootBoxManager__factory: typeof LootBoxManager__factory;
type index_LootBoxMulticall__factory = LootBoxMulticall__factory;
declare const index_LootBoxMulticall__factory: typeof LootBoxMulticall__factory;
type index_LootBoxRngRouter__factory = LootBoxRngRouter__factory;
declare const index_LootBoxRngRouter__factory: typeof LootBoxRngRouter__factory;
declare namespace index {
  export { index_ERC1155__factory as ERC1155__factory, index_ERC20__factory as ERC20__factory, index_ERC721__factory as ERC721__factory, index_ILootBox__factory as ILootBox__factory, index_LootBoxManager__factory as LootBoxManager__factory, index_LootBoxMulticall__factory as LootBoxMulticall__factory, index_LootBoxRngRouter__factory as LootBoxRngRouter__factory, index$1 as lootboxFacets };
}

type RangeInclusive = {
    start: BigNumberish;
    end: BigNumberish;
};
type DistributionData = {
    amount: BigNumberish;
    chance: number;
};
type ERC20Item = {
    contractAddress?: string;
    name?: string;
    symbol?: string;
    pickRange?: RangeInclusive;
    distributions?: DistributionData[];
    tokenAmount: BigNumber;
};
type ERC721Item = {
    contractAddress?: string;
    name?: string;
    symbol?: string;
    uriBase?: string;
    pickRange: RangeInclusive;
    inputTokenIdRange?: RangeInclusive;
    inputTokenIds?: BigNumberish[];
};
type ERC1155Item = {
    contractAddress?: string;
    name?: string;
    symbol?: string;
    uriBase?: string;
    pickRange: RangeInclusive;
    amountPickRangeFixed: RangeInclusive;
    inputTokenIdRange?: RangeInclusive;
    inputTokenAmountFixed?: BigNumberish;
    inputTokenIds?: BigNumberish[];
    inputTokenAmounts?: BigNumberish[];
    amountPickRanges: RangeInclusive[];
};
declare enum ItemType {
    ERC20 = "ERC20",
    ERC721 = "ERC721",
    ERC1155 = "ERC1155"
}
type RewardItem = {
    itemAddress: string;
    type: ItemType;
    tokenId: string;
    tokenAmount: string;
    uri: string;
};
type LootBoxItemERC20 = {
    itemAddress: string;
    tokenAmount: BigNumber;
};
type LootBoxItemERC721 = {
    itemAddress: string;
    tokenIds: BigNumber[];
};
type LootBoxItemERC1155 = {
    itemAddress: string;
    tokenIds: BigNumber[];
    tokenAmounts: BigNumber[];
};
type LootBoxItems = {
    erc20Items: LootBoxItemERC20[];
    erc721Items: LootBoxItemERC721[];
    erc1155Items: LootBoxItemERC1155[];
};

interface ApprovalData {
    itemAddress: string;
    itemType: ItemType;
    amount?: string;
}
interface CreateLootBoxData {
    lootBoxAddress: string;
    itemAddresses: string[];
}
interface OpenLootBoxData {
    requestId: string;
}
interface MulticallData {
    requestIds: string[];
}
interface TransactionResponse {
    txn: ContractTransaction;
    receipt: ContractReceipt;
    data?: ApprovalData | CreateLootBoxData | OpenLootBoxData | MulticallData;
}
type Overrides = Overrides$1 & {
    from?: string;
};
interface TransactionOptions {
    onlyBuildTxn?: boolean;
    gasOverrides?: Overrides;
}

interface MultipleOpensForAddresses {
    addresses: Set<string>;
    opens: number;
}

declare abstract class BaseLootBox {
    protected chain: ChainIdentifier | undefined;
    protected provider: providers.Provider | undefined;
    protected manager: LootBoxManager | undefined;
    protected rngRouter: LootBoxRngRouter | undefined;
    protected multicall: LootBoxMulticall | undefined;
    protected server_api_key: string | undefined;
    constructor();
    protected validateAddress(address: string): this;
    private isInitialized;
    protected init(chain: ChainIdentifier, provider: providers.Provider, server_api_key: string | undefined): Promise<void>;
    protected checkInitialization(): this;
    protected validateSigner(signer: Signer): Promise<this>;
    protected validateMultiOpens(multiOpens: MultipleOpensForAddresses[]): this;
    isERC721(address: string): Promise<boolean>;
    isERC1155(address: string): Promise<boolean>;
    protected cleanOptions(options: TransactionOptions): TransactionOptions;
}

declare class LyncLootBox extends BaseLootBox {
    private lootBoxInfo;
    private controller;
    private ownership;
    private erc2771;
    private interaction;
    constructor();
    mapItemType: (type: number) => ItemType;
    initialize(chain: ChainIdentifier, provider: providers.Provider, lootboxAddress: string, server_api_key?: string | undefined): Promise<void>;
    private isInit;
    private checkInit;
    private isOwner;
    private notPermanentlyStopped;
    private isActive;
    isEmpty(): Promise<boolean>;
    itemAddresses(useSubgraph?: boolean): Promise<string[]>;
    activate(signer: Signer, options?: TransactionOptions): Promise<TransactionResponse | PopulatedTransaction>;
    deactivate(signer: Signer, options?: TransactionOptions): Promise<TransactionResponse | PopulatedTransaction>;
    permanentlyStop(signer: Signer, options?: TransactionOptions): Promise<TransactionResponse | PopulatedTransaction>;
    removeItem(signer: Signer, itemAddress: string, options?: TransactionOptions): Promise<TransactionResponse | PopulatedTransaction>;
    owner(): Promise<string>;
    active(): Promise<boolean>;
    permanentlyStopped(): Promise<boolean>;
    chainId(): Promise<number>;
    creator(): Promise<string>;
    remainingOpens(address: string): Promise<BigNumberish>;
    private _getWlAccessIdAndProof;
    hasPendingClaims(address: string): Promise<boolean>;
    lootboxContents(): Promise<LootBoxItems>;
    adjustOpens(signer: Signer, multiOpens: MultipleOpensForAddresses[], opensForAll: number, options?: TransactionOptions): Promise<TransactionResponse | PopulatedTransaction>;
    showOpens(): Promise<MultipleOpensForAddresses[] | number>;
    trustedForwarder(): Promise<string>;
    changeTrustedForwarder(signer: Signer, newForwarder: string, options?: TransactionOptions): Promise<TransactionResponse | PopulatedTransaction>;
    transferOwnership(signer: Signer, newOwner: string, options?: TransactionOptions): Promise<TransactionResponse | PopulatedTransaction>;
    openLootBox(signer: Signer, options?: TransactionOptions): Promise<TransactionResponse | PopulatedTransaction>;
    claimRewards(signer: Signer, options?: TransactionOptions): Promise<TransactionResponse | PopulatedTransaction>;
    claimRewardsPartially(signer: Signer, maxRewardsToClaim: BigNumberish, options?: TransactionOptions): Promise<TransactionResponse | PopulatedTransaction>;
    getRewardsForAddress(openerAddress: string): Promise<RewardItem[]>;
    private getRewardTokenInfo;
    getAllRewardsForAddress(openerAddress: string): Promise<LootBoxItems>;
}

declare class LyncLootBoxCreator extends BaseLootBox {
    constructor();
    createLootbox(signer: Signer, erc20Items: ERC20Item[], erc721Items: ERC721Item[], erc1155Items: ERC1155Item[], multiOpens: MultipleOpensForAddresses[], opensForAll: number, trustedForwarder: string, activateLootbox: boolean, options?: TransactionOptions): Promise<TransactionResponse[] | PopulatedTransaction[]>;
    private normalizeERC20;
    private normalizeERC721;
    private normalizeERC1155;
    initialize(chain: ChainIdentifier, provider: providers.Provider, server_api_key?: string | undefined): Promise<void>;
    getUserLootBoxes(userAddress: string): Promise<string[]>;
}

declare class LyncLootBoxMulticall extends BaseLootBox {
    constructor();
    mapItemType: (type: number) => ItemType;
    initialize(chain: ChainIdentifier, provider: providers.Provider, server_api_key?: string | undefined): Promise<void>;
    private _getWlAccessIdAndProof;
    addTrustedForwarder(signer: Signer, address: string, options?: TransactionOptions): Promise<TransactionResponse | PopulatedTransaction>;
    removeTrustedForwarder(signer: Signer, address: string, options?: TransactionOptions): Promise<TransactionResponse | PopulatedTransaction>;
    isTrustedForwarder(address: string): Promise<boolean>;
    openMulticall(signer: Signer, lootboxes: string[], options?: TransactionOptions): Promise<TransactionResponse | PopulatedTransaction>;
    claimRewardsMulticall(signer: Signer, lootboxes: string[], options?: TransactionOptions): Promise<TransactionResponse | PopulatedTransaction>;
    claimRewardsPartiallyMulticall(signer: Signer, lootboxes: string[], maxRewardsToClaim: BigNumberish[], options?: TransactionOptions): Promise<TransactionResponse | PopulatedTransaction>;
}

declare function generateMerkleTreeRoot(whitelist: string[], factor: number): string;
declare function generateMerkleTreeProof(whitelist: string[], factor: number, claimer: string): string[];
declare function verifyMerkleTreeProofOffChain(root: string, proof: string[], address: string, factor: number): boolean;

declare function subgraph_items(lootbox: string, chain: ChainIdentifier): Promise<LootBoxItems>;
declare function subgraph_item_addresses(lootbox: string, chain: ChainIdentifier): Promise<string[]>;
declare function subgraph_rewards(lootbox: string, wallet: string, chain: ChainIdentifier): Promise<LootBoxItems>;

declare enum LBErrorCodes {
    NORMALIZATION_ERROR = "NORMALIZATION_ERROR",
    VALIDATION_ERROR = "VALIDATION_ERROR",
    INITIALIZATION_ERROR = "INITIALIZATION_ERROR",
    LOOTBOX_OPENED_ERROR = "LOOTBOX_OPENED_ERROR",
    LOOTBOX_MULTICALL_OPEN_ERROR = "LOOTBOX_MULTICALL_OPEN_ERROR",
    LOOTBOX_MULTICALL_CLAIM_ERROR = "LOOTBOX_MULTICALL_CLAIM_ERROR",
    TOO_MANY_REQUESTS_ERROR = "TOO_MANY_REQUESTS_ERROR",
    LOOTBOX_REWARDS_CLAIM_ERROR = "LOOTBOX_REWARDS_CLAIM_ERROR",
    RNG_PENDING_ERROR = "RNG_PENDING_ERROR",
    RNG_TIMEOUT_ERROR = "RNG_TIMEOUT_ERROR",
    LOOTBOX_ACTIVE_ERROR = "LOOTBOX_ACTIVE_ERROR",
    LOOTBOX_INACTIVE_ERROR = "LOOTBOX_INACTIVE_ERROR",
    LOOTBOX_PERMANENTLY_STOPPED_ERROR = "LOOTBOX_PERMANENTLY_STOPPED_ERROR",
    APPROVAL_ERROR = "APPROVAL_ERROR",
    LOOTBOX_CREATION_ERROR = "LOOTBOX_CREATION_ERROR",
    MERKLE_ROOT_MISMATCH_ERROR = "MERKLE_ROOT_MISMATCH_ERROR",
    SERVER_ERROR = "SERVER_ERROR",
    LOOTBOX_ACTIVATION_ERROR = "LOOTBOX_ACTIVATION_ERROR",
    LOOTBOX_ITEM_REMOVAL_ERROR = "LOOTBOX_ITEM_REMOVAL_ERROR",
    REMAINING_OPENS_UPDATE_ERROR = "REMAINING_OPENS_UPDATE_ERROR",
    TRUSTED_FORWARDER_UPDATE_ERROR = "TRUSTED_FORWARDER_UPDATE_ERROR",
    TRANSFER_OWNER_ERROR = "TRANSFER_OWNER_ERROR",
    MULTICALL_TRUSTED_FORWARDER_UPDATE_ERROR = "MULTICALL_TRUSTED_FORWARDER_UPDATE_ERROR",
    LOOTBOX_SIMULATION_ERROR = "LOOTBOX_SIMULATION_FAILED",
    LOOTBOX_SERVER_KEY_MISSING_ERROR = "LOOTBOX_SERVER_KEY_MISSING_ERROR"
}
declare class LootBoxError extends Error {
    code: LBErrorCodes;
    data?: object | undefined;
    constructor(message: string, code: LBErrorCodes, data?: object | undefined);
}

export { type ApprovalData, ChainIdentifier, type CreateLootBoxData, type DistributionData, type ERC1155, ERC1155$1 as ERC1155Abi, type ERC1155Item, ERC1155__factory, type ERC20, ERC20$1 as ERC20Abi, type ERC20Item, ERC20__factory, type ERC721, ERC721$1 as ERC721Abi, type ERC721Item, ERC721__factory, ILootBox$3 as ILootBox, ILootBox__factory, ItemType, LBErrorCodes, type LootBoxController, LootBoxController$1 as LootBoxControllerAbi, LootBoxController__factory, type LootBoxERC2771, LootBoxERC2771$1 as LootBoxERC2771Abi, LootBoxERC2771__factory, LootBoxError, type LootBoxInfo, LootBoxInfo$1 as LootBoxInfoAbi, LootBoxInfo__factory, type LootBoxInteraction, LootBoxInteraction$1 as LootBoxInteractionAbi, LootBoxInteraction__factory, type LootBoxItemERC1155, type LootBoxItemERC20, type LootBoxItemERC721, type LootBoxItems, type LootBoxManager, LootBoxManager$1 as LootBoxManagerAbi, LootBoxManager__factory, LootBoxMulticall, LootBoxMulticall$1 as LootBoxMulticallAbi, LootBoxMulticall__factory, type LootBoxOwnership, LootBoxOwnership$1 as LootBoxOwnershipAbi, LootBoxOwnership__factory, type LootBoxRngRouter, LootBoxRngRouter$1 as LootBoxRngRouterAbi, LootBoxRngRouter__factory, LyncLootBox, LyncLootBoxCreator, LyncLootBoxMulticall, type MulticallData, type MultipleOpensForAddresses, type OpenLootBoxData, type RangeInclusive, type RewardItem, type TransactionOptions, type TransactionResponse, index as factories, generateMerkleTreeProof, generateMerkleTreeRoot, index$2 as lootboxFacets, subgraph_item_addresses, subgraph_items, subgraph_rewards, verifyMerkleTreeProofOffChain };
