/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import type {
  BaseContract,
  BigNumber,
  BigNumberish,
  BytesLike,
  CallOverrides,
  ContractTransaction,
  Overrides,
  PayableOverrides,
  PopulatedTransaction,
  Signer,
  utils,
} from "ethers";
import type {
  FunctionFragment,
  Result,
  EventFragment,
} from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type {
  TypedEventFilter,
  TypedEvent,
  TypedListener,
  OnEvent,
} from "./common";

export declare namespace EIP712SuperGalaticFactory {
  export type WeaponInfoStruct = {
    rarity: BigNumberish;
    weaponType: BigNumberish;
    owner: string;
    salt: BigNumberish;
    tokenId: BigNumberish;
  };

  export type WeaponInfoStructOutput = [
    BigNumber,
    BigNumber,
    string,
    BigNumber,
    BigNumber
  ] & {
    rarity: BigNumber;
    weaponType: BigNumber;
    owner: string;
    salt: BigNumber;
    tokenId: BigNumber;
  };
}

export interface SuperGalaticFactoryInterface extends utils.Interface {
  functions: {
    "DEFAULT_ADMIN_ROLE()": FunctionFragment;
    "PRICE_UPDATE_ROLE()": FunctionFragment;
    "addUpdatePriceRole(address)": FunctionFragment;
    "alreadyPurchasedLootBoxCount()": FunctionFragment;
    "alreadyUsedSignature(bytes)": FunctionFragment;
    "backendSigner()": FunctionFragment;
    "beamAmountPerNft()": FunctionFragment;
    "blockNumberWaitingForRandom(address)": FunctionFragment;
    "burnWallet()": FunctionFragment;
    "concatSignature(uint8,bytes32,bytes32)": FunctionFragment;
    "factoryHelper()": FunctionFragment;
    "getRoleAdmin(bytes32)": FunctionFragment;
    "getWeaponUsdtPrice()": FunctionFragment;
    "grantRole(bytes32,address)": FunctionFragment;
    "hasRole(bytes32,address)": FunctionFragment;
    "initialize(address,address,address,uint256,uint256,address,address)": FunctionFragment;
    "isSuperGalaticNFTContract(address)": FunctionFragment;
    "isSuperGalatics(address)": FunctionFragment;
    "marketplaceContract()": FunctionFragment;
    "merkleRoot()": FunctionFragment;
    "mintBatchSuperGalatic(uint256[],uint256[],bytes32[])": FunctionFragment;
    "mintWithBeam(uint256[],uint256[],bytes32[])": FunctionFragment;
    "mintWithUSDT(uint256[],uint256[],bytes32[])": FunctionFragment;
    "nftContracts(uint256)": FunctionFragment;
    "openLootBoxBySignature(uint8,bytes32,bytes32,(uint256,uint256,address,uint256,uint256))": FunctionFragment;
    "openRound()": FunctionFragment;
    "phase()": FunctionFragment;
    "plasmaAddr()": FunctionFragment;
    "plasmaAmountPerNFT()": FunctionFragment;
    "purchaseLootbox(uint256,uint256)": FunctionFragment;
    "purchaseLootboxAndSendGift(uint256,address,uint256)": FunctionFragment;
    "registerForMint()": FunctionFragment;
    "removeUpdatePriceSole(address)": FunctionFragment;
    "renounceRole(bytes32,address)": FunctionFragment;
    "reserveWallet()": FunctionFragment;
    "revenueWallet()": FunctionFragment;
    "revokeRole(bytes32,address)": FunctionFragment;
    "round1End()": FunctionFragment;
    "round1Start()": FunctionFragment;
    "round2End()": FunctionFragment;
    "round2Start()": FunctionFragment;
    "round3End()": FunctionFragment;
    "round3Start()": FunctionFragment;
    "setBackendSigner(address)": FunctionFragment;
    "setMarketplaceAddress(address)": FunctionFragment;
    "setMerkeRoot(bytes32)": FunctionFragment;
    "setPhase(uint256)": FunctionFragment;
    "setRoundInfo(uint256,uint256,uint256)": FunctionFragment;
    "setRouterAddress(address)": FunctionFragment;
    "setTokenAddresses(address,address,address)": FunctionFragment;
    "slippage()": FunctionFragment;
    "supportsInterface(bytes4)": FunctionFragment;
    "totalUSerOwnedCount(address)": FunctionFragment;
    "uapAddr()": FunctionFragment;
    "ufoAddress()": FunctionFragment;
    "updateBeamPriceOfNft(uint256)": FunctionFragment;
    "updateFactoryHelperAddr(address)": FunctionFragment;
    "updateGenesisNftPrice(uint256)": FunctionFragment;
    "updateNFTBodypart(address,uint256,uint256)": FunctionFragment;
    "updatePlasmaAddr(address)": FunctionFragment;
    "updatePlasmaAmountPerNFT(uint256)": FunctionFragment;
    "updatePriceOfWeaponNFT(uint256,uint256)": FunctionFragment;
    "updateWeapon(uint256)": FunctionFragment;
    "updateWeaponAddr(address)": FunctionFragment;
    "usdtAddress()": FunctionFragment;
    "usdtAmountPerNFT()": FunctionFragment;
    "weaponNFT()": FunctionFragment;
    "weaponPrice()": FunctionFragment;
    "weaponUfoPrice()": FunctionFragment;
    "weaponUsdtPrice()": FunctionFragment;
    "wethAddr()": FunctionFragment;
    "withdraw(address)": FunctionFragment;
    "withdrawPlasma(address)": FunctionFragment;
  };

  getFunction(
    nameOrSignatureOrTopic:
      | "DEFAULT_ADMIN_ROLE"
      | "PRICE_UPDATE_ROLE"
      | "addUpdatePriceRole"
      | "alreadyPurchasedLootBoxCount"
      | "alreadyUsedSignature"
      | "backendSigner"
      | "beamAmountPerNft"
      | "blockNumberWaitingForRandom"
      | "burnWallet"
      | "concatSignature"
      | "factoryHelper"
      | "getRoleAdmin"
      | "getWeaponUsdtPrice"
      | "grantRole"
      | "hasRole"
      | "initialize"
      | "isSuperGalaticNFTContract"
      | "isSuperGalatics"
      | "marketplaceContract"
      | "merkleRoot"
      | "mintBatchSuperGalatic"
      | "mintWithBeam"
      | "mintWithUSDT"
      | "nftContracts"
      | "openLootBoxBySignature"
      | "openRound"
      | "phase"
      | "plasmaAddr"
      | "plasmaAmountPerNFT"
      | "purchaseLootbox"
      | "purchaseLootboxAndSendGift"
      | "registerForMint"
      | "removeUpdatePriceSole"
      | "renounceRole"
      | "reserveWallet"
      | "revenueWallet"
      | "revokeRole"
      | "round1End"
      | "round1Start"
      | "round2End"
      | "round2Start"
      | "round3End"
      | "round3Start"
      | "setBackendSigner"
      | "setMarketplaceAddress"
      | "setMerkeRoot"
      | "setPhase"
      | "setRoundInfo"
      | "setRouterAddress"
      | "setTokenAddresses"
      | "slippage"
      | "supportsInterface"
      | "totalUSerOwnedCount"
      | "uapAddr"
      | "ufoAddress"
      | "updateBeamPriceOfNft"
      | "updateFactoryHelperAddr"
      | "updateGenesisNftPrice"
      | "updateNFTBodypart"
      | "updatePlasmaAddr"
      | "updatePlasmaAmountPerNFT"
      | "updatePriceOfWeaponNFT"
      | "updateWeapon"
      | "updateWeaponAddr"
      | "usdtAddress"
      | "usdtAmountPerNFT"
      | "weaponNFT"
      | "weaponPrice"
      | "weaponUfoPrice"
      | "weaponUsdtPrice"
      | "wethAddr"
      | "withdraw"
      | "withdrawPlasma"
  ): FunctionFragment;

  encodeFunctionData(
    functionFragment: "DEFAULT_ADMIN_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "PRICE_UPDATE_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "addUpdatePriceRole",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "alreadyPurchasedLootBoxCount",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "alreadyUsedSignature",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "backendSigner",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "beamAmountPerNft",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "blockNumberWaitingForRandom",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "burnWallet",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "concatSignature",
    values: [BigNumberish, BytesLike, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "factoryHelper",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getRoleAdmin",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getWeaponUsdtPrice",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "grantRole",
    values: [BytesLike, string]
  ): string;
  encodeFunctionData(
    functionFragment: "hasRole",
    values: [BytesLike, string]
  ): string;
  encodeFunctionData(
    functionFragment: "initialize",
    values: [string, string, string, BigNumberish, BigNumberish, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "isSuperGalaticNFTContract",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "isSuperGalatics",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "marketplaceContract",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "merkleRoot",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "mintBatchSuperGalatic",
    values: [BigNumberish[], BigNumberish[], BytesLike[]]
  ): string;
  encodeFunctionData(
    functionFragment: "mintWithBeam",
    values: [BigNumberish[], BigNumberish[], BytesLike[]]
  ): string;
  encodeFunctionData(
    functionFragment: "mintWithUSDT",
    values: [BigNumberish[], BigNumberish[], BytesLike[]]
  ): string;
  encodeFunctionData(
    functionFragment: "nftContracts",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "openLootBoxBySignature",
    values: [
      BigNumberish,
      BytesLike,
      BytesLike,
      EIP712SuperGalaticFactory.WeaponInfoStruct
    ]
  ): string;
  encodeFunctionData(functionFragment: "openRound", values?: undefined): string;
  encodeFunctionData(functionFragment: "phase", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "plasmaAddr",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "plasmaAmountPerNFT",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "purchaseLootbox",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "purchaseLootboxAndSendGift",
    values: [BigNumberish, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "registerForMint",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "removeUpdatePriceSole",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "renounceRole",
    values: [BytesLike, string]
  ): string;
  encodeFunctionData(
    functionFragment: "reserveWallet",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "revenueWallet",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "revokeRole",
    values: [BytesLike, string]
  ): string;
  encodeFunctionData(functionFragment: "round1End", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "round1Start",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "round2End", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "round2Start",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "round3End", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "round3Start",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "setBackendSigner",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "setMarketplaceAddress",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "setMerkeRoot",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setPhase",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setRoundInfo",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setRouterAddress",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "setTokenAddresses",
    values: [string, string, string]
  ): string;
  encodeFunctionData(functionFragment: "slippage", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "supportsInterface",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "totalUSerOwnedCount",
    values: [string]
  ): string;
  encodeFunctionData(functionFragment: "uapAddr", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "ufoAddress",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "updateBeamPriceOfNft",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "updateFactoryHelperAddr",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "updateGenesisNftPrice",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "updateNFTBodypart",
    values: [string, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "updatePlasmaAddr",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "updatePlasmaAmountPerNFT",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "updatePriceOfWeaponNFT",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "updateWeapon",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "updateWeaponAddr",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "usdtAddress",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "usdtAmountPerNFT",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "weaponNFT", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "weaponPrice",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "weaponUfoPrice",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "weaponUsdtPrice",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "wethAddr", values?: undefined): string;
  encodeFunctionData(functionFragment: "withdraw", values: [string]): string;
  encodeFunctionData(
    functionFragment: "withdrawPlasma",
    values: [string]
  ): string;

  decodeFunctionResult(
    functionFragment: "DEFAULT_ADMIN_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "PRICE_UPDATE_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "addUpdatePriceRole",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "alreadyPurchasedLootBoxCount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "alreadyUsedSignature",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "backendSigner",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "beamAmountPerNft",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "blockNumberWaitingForRandom",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "burnWallet", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "concatSignature",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "factoryHelper",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getRoleAdmin",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getWeaponUsdtPrice",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "isSuperGalaticNFTContract",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isSuperGalatics",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "marketplaceContract",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "merkleRoot", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "mintBatchSuperGalatic",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "mintWithBeam",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "mintWithUSDT",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "nftContracts",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "openLootBoxBySignature",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "openRound", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "phase", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "plasmaAddr", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "plasmaAmountPerNFT",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "purchaseLootbox",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "purchaseLootboxAndSendGift",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "registerForMint",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "removeUpdatePriceSole",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "renounceRole",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "reserveWallet",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "revenueWallet",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "round1End", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "round1Start",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "round2End", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "round2Start",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "round3End", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "round3Start",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setBackendSigner",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMarketplaceAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMerkeRoot",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "setPhase", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "setRoundInfo",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setRouterAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setTokenAddresses",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "slippage", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "supportsInterface",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "totalUSerOwnedCount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "uapAddr", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "ufoAddress", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "updateBeamPriceOfNft",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateFactoryHelperAddr",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateGenesisNftPrice",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateNFTBodypart",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updatePlasmaAddr",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updatePlasmaAmountPerNFT",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updatePriceOfWeaponNFT",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateWeapon",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateWeaponAddr",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "usdtAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "usdtAmountPerNFT",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "weaponNFT", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "weaponPrice",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "weaponUfoPrice",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "weaponUsdtPrice",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "wethAddr", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "withdrawPlasma",
    data: BytesLike
  ): Result;

  events: {
    "CreateSuperGalatic(uint256,address)": EventFragment;
    "GrantPriceUpdateRole(address)": EventFragment;
    "Initialized(uint8)": EventFragment;
    "RemovePriceUpdateRole(address)": EventFragment;
    "RoleAdminChanged(bytes32,bytes32,bytes32)": EventFragment;
    "RoleGranted(bytes32,address,address)": EventFragment;
    "RoleRevoked(bytes32,address,address)": EventFragment;
    "SetBackendSigner(address)": EventFragment;
    "UpdateFactoryHelper(address)": EventFragment;
    "UpdateGenesisNftPrice(uint256)": EventFragment;
    "UpdateMarketplaceAddr(address)": EventFragment;
    "UpdateMerkleRoot(bytes32)": EventFragment;
    "UpdateNftBeamPrice(uint256)": EventFragment;
    "UpdateNftPriceInPlasma(uint256)": EventFragment;
    "UpdatePhase(uint256)": EventFragment;
    "UpdatePlasmaAddr(address)": EventFragment;
    "UpdateRoundInfo(uint256,uint256,uint256)": EventFragment;
    "UpdateUfoAddr(address)": EventFragment;
    "UpdateUsdtAddr(address)": EventFragment;
    "UpdateWeaponAddr(address)": EventFragment;
    "UpdateWeaponPrice(uint256,uint256)": EventFragment;
    "UpdateWrappedNativeAddr(address)": EventFragment;
    "Withdraw(address,uint256)": EventFragment;
    "WithdrawPlasma(address,uint256)": EventFragment;
  };

  getEvent(nameOrSignatureOrTopic: "CreateSuperGalatic"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "GrantPriceUpdateRole"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "RemovePriceUpdateRole"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "RoleAdminChanged"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "RoleGranted"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "RoleRevoked"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SetBackendSigner"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "UpdateFactoryHelper"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "UpdateGenesisNftPrice"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "UpdateMarketplaceAddr"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "UpdateMerkleRoot"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "UpdateNftBeamPrice"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "UpdateNftPriceInPlasma"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "UpdatePhase"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "UpdatePlasmaAddr"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "UpdateRoundInfo"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "UpdateUfoAddr"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "UpdateUsdtAddr"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "UpdateWeaponAddr"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "UpdateWeaponPrice"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "UpdateWrappedNativeAddr"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Withdraw"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "WithdrawPlasma"): EventFragment;
}

export interface CreateSuperGalaticEventObject {
  nftIndex: BigNumber;
  nftContract: string;
}
export type CreateSuperGalaticEvent = TypedEvent<
  [BigNumber, string],
  CreateSuperGalaticEventObject
>;

export type CreateSuperGalaticEventFilter =
  TypedEventFilter<CreateSuperGalaticEvent>;

export interface GrantPriceUpdateRoleEventObject {
  addr: string;
}
export type GrantPriceUpdateRoleEvent = TypedEvent<
  [string],
  GrantPriceUpdateRoleEventObject
>;

export type GrantPriceUpdateRoleEventFilter =
  TypedEventFilter<GrantPriceUpdateRoleEvent>;

export interface InitializedEventObject {
  version: number;
}
export type InitializedEvent = TypedEvent<[number], InitializedEventObject>;

export type InitializedEventFilter = TypedEventFilter<InitializedEvent>;

export interface RemovePriceUpdateRoleEventObject {
  addr: string;
}
export type RemovePriceUpdateRoleEvent = TypedEvent<
  [string],
  RemovePriceUpdateRoleEventObject
>;

export type RemovePriceUpdateRoleEventFilter =
  TypedEventFilter<RemovePriceUpdateRoleEvent>;

export interface RoleAdminChangedEventObject {
  role: string;
  previousAdminRole: string;
  newAdminRole: string;
}
export type RoleAdminChangedEvent = TypedEvent<
  [string, string, string],
  RoleAdminChangedEventObject
>;

export type RoleAdminChangedEventFilter =
  TypedEventFilter<RoleAdminChangedEvent>;

export interface RoleGrantedEventObject {
  role: string;
  account: string;
  sender: string;
}
export type RoleGrantedEvent = TypedEvent<
  [string, string, string],
  RoleGrantedEventObject
>;

export type RoleGrantedEventFilter = TypedEventFilter<RoleGrantedEvent>;

export interface RoleRevokedEventObject {
  role: string;
  account: string;
  sender: string;
}
export type RoleRevokedEvent = TypedEvent<
  [string, string, string],
  RoleRevokedEventObject
>;

export type RoleRevokedEventFilter = TypedEventFilter<RoleRevokedEvent>;

export interface SetBackendSignerEventObject {
  signer: string;
}
export type SetBackendSignerEvent = TypedEvent<
  [string],
  SetBackendSignerEventObject
>;

export type SetBackendSignerEventFilter =
  TypedEventFilter<SetBackendSignerEvent>;

export interface UpdateFactoryHelperEventObject {
  newHelperAddr: string;
}
export type UpdateFactoryHelperEvent = TypedEvent<
  [string],
  UpdateFactoryHelperEventObject
>;

export type UpdateFactoryHelperEventFilter =
  TypedEventFilter<UpdateFactoryHelperEvent>;

export interface UpdateGenesisNftPriceEventObject {
  usdtPrice: BigNumber;
}
export type UpdateGenesisNftPriceEvent = TypedEvent<
  [BigNumber],
  UpdateGenesisNftPriceEventObject
>;

export type UpdateGenesisNftPriceEventFilter =
  TypedEventFilter<UpdateGenesisNftPriceEvent>;

export interface UpdateMarketplaceAddrEventObject {
  newMarketplace: string;
}
export type UpdateMarketplaceAddrEvent = TypedEvent<
  [string],
  UpdateMarketplaceAddrEventObject
>;

export type UpdateMarketplaceAddrEventFilter =
  TypedEventFilter<UpdateMarketplaceAddrEvent>;

export interface UpdateMerkleRootEventObject {
  root: string;
}
export type UpdateMerkleRootEvent = TypedEvent<
  [string],
  UpdateMerkleRootEventObject
>;

export type UpdateMerkleRootEventFilter =
  TypedEventFilter<UpdateMerkleRootEvent>;

export interface UpdateNftBeamPriceEventObject {
  price: BigNumber;
}
export type UpdateNftBeamPriceEvent = TypedEvent<
  [BigNumber],
  UpdateNftBeamPriceEventObject
>;

export type UpdateNftBeamPriceEventFilter =
  TypedEventFilter<UpdateNftBeamPriceEvent>;

export interface UpdateNftPriceInPlasmaEventObject {
  plasmaPrice: BigNumber;
}
export type UpdateNftPriceInPlasmaEvent = TypedEvent<
  [BigNumber],
  UpdateNftPriceInPlasmaEventObject
>;

export type UpdateNftPriceInPlasmaEventFilter =
  TypedEventFilter<UpdateNftPriceInPlasmaEvent>;

export interface UpdatePhaseEventObject {
  phase: BigNumber;
}
export type UpdatePhaseEvent = TypedEvent<[BigNumber], UpdatePhaseEventObject>;

export type UpdatePhaseEventFilter = TypedEventFilter<UpdatePhaseEvent>;

export interface UpdatePlasmaAddrEventObject {
  newPlasma: string;
}
export type UpdatePlasmaAddrEvent = TypedEvent<
  [string],
  UpdatePlasmaAddrEventObject
>;

export type UpdatePlasmaAddrEventFilter =
  TypedEventFilter<UpdatePlasmaAddrEvent>;

export interface UpdateRoundInfoEventObject {
  start: BigNumber;
  end: BigNumber;
  round: BigNumber;
}
export type UpdateRoundInfoEvent = TypedEvent<
  [BigNumber, BigNumber, BigNumber],
  UpdateRoundInfoEventObject
>;

export type UpdateRoundInfoEventFilter = TypedEventFilter<UpdateRoundInfoEvent>;

export interface UpdateUfoAddrEventObject {
  ufo: string;
}
export type UpdateUfoAddrEvent = TypedEvent<[string], UpdateUfoAddrEventObject>;

export type UpdateUfoAddrEventFilter = TypedEventFilter<UpdateUfoAddrEvent>;

export interface UpdateUsdtAddrEventObject {
  usdt: string;
}
export type UpdateUsdtAddrEvent = TypedEvent<
  [string],
  UpdateUsdtAddrEventObject
>;

export type UpdateUsdtAddrEventFilter = TypedEventFilter<UpdateUsdtAddrEvent>;

export interface UpdateWeaponAddrEventObject {
  newWeapon: string;
}
export type UpdateWeaponAddrEvent = TypedEvent<
  [string],
  UpdateWeaponAddrEventObject
>;

export type UpdateWeaponAddrEventFilter =
  TypedEventFilter<UpdateWeaponAddrEvent>;

export interface UpdateWeaponPriceEventObject {
  price: BigNumber;
  tokenType: BigNumber;
}
export type UpdateWeaponPriceEvent = TypedEvent<
  [BigNumber, BigNumber],
  UpdateWeaponPriceEventObject
>;

export type UpdateWeaponPriceEventFilter =
  TypedEventFilter<UpdateWeaponPriceEvent>;

export interface UpdateWrappedNativeAddrEventObject {
  wNative: string;
}
export type UpdateWrappedNativeAddrEvent = TypedEvent<
  [string],
  UpdateWrappedNativeAddrEventObject
>;

export type UpdateWrappedNativeAddrEventFilter =
  TypedEventFilter<UpdateWrappedNativeAddrEvent>;

export interface WithdrawEventObject {
  receiver: string;
  amount: BigNumber;
}
export type WithdrawEvent = TypedEvent<
  [string, BigNumber],
  WithdrawEventObject
>;

export type WithdrawEventFilter = TypedEventFilter<WithdrawEvent>;

export interface WithdrawPlasmaEventObject {
  recipient: string;
  amount: BigNumber;
}
export type WithdrawPlasmaEvent = TypedEvent<
  [string, BigNumber],
  WithdrawPlasmaEventObject
>;

export type WithdrawPlasmaEventFilter = TypedEventFilter<WithdrawPlasmaEvent>;

export interface SuperGalaticFactory extends BaseContract {
  connect(signerOrProvider: Signer | Provider | string): this;
  attach(addressOrName: string): this;
  deployed(): Promise<this>;

  interface: SuperGalaticFactoryInterface;

  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: {
    DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>;

    PRICE_UPDATE_ROLE(overrides?: CallOverrides): Promise<[string]>;

    addUpdatePriceRole(
      addr: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    alreadyPurchasedLootBoxCount(
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    alreadyUsedSignature(
      arg0: BytesLike,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    backendSigner(overrides?: CallOverrides): Promise<[string]>;

    beamAmountPerNft(overrides?: CallOverrides): Promise<[BigNumber]>;

    blockNumberWaitingForRandom(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    burnWallet(overrides?: CallOverrides): Promise<[string]>;

    concatSignature(
      v: BigNumberish,
      r: BytesLike,
      s: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string]>;

    factoryHelper(overrides?: CallOverrides): Promise<[string]>;

    getRoleAdmin(role: BytesLike, overrides?: CallOverrides): Promise<[string]>;

    getWeaponUsdtPrice(overrides?: CallOverrides): Promise<[BigNumber]>;

    grantRole(
      role: BytesLike,
      account: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    hasRole(
      role: BytesLike,
      account: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    initialize(
      _admin: string,
      _beacon: string,
      _plasmaAddr: string,
      _plasmaAmountPerNFT: BigNumberish,
      _weaponPrice: BigNumberish,
      _uap: string,
      _factoryHelper: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    isSuperGalaticNFTContract(
      _nftAddress: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    isSuperGalatics(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    marketplaceContract(overrides?: CallOverrides): Promise<[string]>;

    merkleRoot(overrides?: CallOverrides): Promise<[string]>;

    mintBatchSuperGalatic(
      categoryIds: BigNumberish[],
      amounts: BigNumberish[],
      _merkleProof: BytesLike[],
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    mintWithBeam(
      categoryIds: BigNumberish[],
      amounts: BigNumberish[],
      _merkleProof: BytesLike[],
      overrides?: PayableOverrides & { from?: string }
    ): Promise<ContractTransaction>;

    mintWithUSDT(
      categoryIds: BigNumberish[],
      amounts: BigNumberish[],
      _merkleProof: BytesLike[],
      overrides?: PayableOverrides & { from?: string }
    ): Promise<ContractTransaction>;

    nftContracts(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string]>;

    openLootBoxBySignature(
      v: BigNumberish,
      r: BytesLike,
      s: BytesLike,
      _info: EIP712SuperGalaticFactory.WeaponInfoStruct,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    openRound(overrides?: CallOverrides): Promise<[BigNumber]>;

    phase(overrides?: CallOverrides): Promise<[BigNumber]>;

    plasmaAddr(overrides?: CallOverrides): Promise<[string]>;

    plasmaAmountPerNFT(overrides?: CallOverrides): Promise<[BigNumber]>;

    purchaseLootbox(
      quantity: BigNumberish,
      _tokenType: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    purchaseLootboxAndSendGift(
      quantity: BigNumberish,
      _giftReceiver: string,
      _tokenType: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    registerForMint(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    removeUpdatePriceSole(
      addr: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    renounceRole(
      role: BytesLike,
      account: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    reserveWallet(overrides?: CallOverrides): Promise<[string]>;

    revenueWallet(overrides?: CallOverrides): Promise<[string]>;

    revokeRole(
      role: BytesLike,
      account: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    round1End(overrides?: CallOverrides): Promise<[BigNumber]>;

    round1Start(overrides?: CallOverrides): Promise<[BigNumber]>;

    round2End(overrides?: CallOverrides): Promise<[BigNumber]>;

    round2Start(overrides?: CallOverrides): Promise<[BigNumber]>;

    round3End(overrides?: CallOverrides): Promise<[BigNumber]>;

    round3Start(overrides?: CallOverrides): Promise<[BigNumber]>;

    setBackendSigner(
      _bkSigner: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setMarketplaceAddress(
      _marketplace: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setMerkeRoot(
      merkleRootHash: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setPhase(
      phaseValue: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setRoundInfo(
      startTime: BigNumberish,
      endTime: BigNumberish,
      round: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setRouterAddress(
      router: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setTokenAddresses(
      _weth: string,
      _ufo: string,
      _usdt: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    slippage(overrides?: CallOverrides): Promise<[BigNumber]>;

    supportsInterface(
      interfaceId: BytesLike,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    totalUSerOwnedCount(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    uapAddr(overrides?: CallOverrides): Promise<[string]>;

    ufoAddress(overrides?: CallOverrides): Promise<[string]>;

    updateBeamPriceOfNft(
      price: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    updateFactoryHelperAddr(
      _factoryHelperAddr: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    updateGenesisNftPrice(
      _priceInUSDT: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    updateNFTBodypart(
      nftContract: string,
      nftId: BigNumberish,
      bodyType: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    updatePlasmaAddr(
      _plasma: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    updatePlasmaAmountPerNFT(
      _plasmaAmount: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    updatePriceOfWeaponNFT(
      _price: BigNumberish,
      _tokenType: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    updateWeapon(
      _weaponId: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    updateWeaponAddr(
      _weapon: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    usdtAddress(overrides?: CallOverrides): Promise<[string]>;

    usdtAmountPerNFT(overrides?: CallOverrides): Promise<[BigNumber]>;

    weaponNFT(overrides?: CallOverrides): Promise<[string]>;

    weaponPrice(overrides?: CallOverrides): Promise<[BigNumber]>;

    weaponUfoPrice(overrides?: CallOverrides): Promise<[BigNumber]>;

    weaponUsdtPrice(overrides?: CallOverrides): Promise<[BigNumber]>;

    wethAddr(overrides?: CallOverrides): Promise<[string]>;

    withdraw(
      receiver: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    withdrawPlasma(
      recipient: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;
  };

  DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;

  PRICE_UPDATE_ROLE(overrides?: CallOverrides): Promise<string>;

  addUpdatePriceRole(
    addr: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  alreadyPurchasedLootBoxCount(overrides?: CallOverrides): Promise<BigNumber>;

  alreadyUsedSignature(
    arg0: BytesLike,
    overrides?: CallOverrides
  ): Promise<boolean>;

  backendSigner(overrides?: CallOverrides): Promise<string>;

  beamAmountPerNft(overrides?: CallOverrides): Promise<BigNumber>;

  blockNumberWaitingForRandom(
    arg0: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  burnWallet(overrides?: CallOverrides): Promise<string>;

  concatSignature(
    v: BigNumberish,
    r: BytesLike,
    s: BytesLike,
    overrides?: CallOverrides
  ): Promise<string>;

  factoryHelper(overrides?: CallOverrides): Promise<string>;

  getRoleAdmin(role: BytesLike, overrides?: CallOverrides): Promise<string>;

  getWeaponUsdtPrice(overrides?: CallOverrides): Promise<BigNumber>;

  grantRole(
    role: BytesLike,
    account: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  hasRole(
    role: BytesLike,
    account: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  initialize(
    _admin: string,
    _beacon: string,
    _plasmaAddr: string,
    _plasmaAmountPerNFT: BigNumberish,
    _weaponPrice: BigNumberish,
    _uap: string,
    _factoryHelper: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  isSuperGalaticNFTContract(
    _nftAddress: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  isSuperGalatics(arg0: string, overrides?: CallOverrides): Promise<boolean>;

  marketplaceContract(overrides?: CallOverrides): Promise<string>;

  merkleRoot(overrides?: CallOverrides): Promise<string>;

  mintBatchSuperGalatic(
    categoryIds: BigNumberish[],
    amounts: BigNumberish[],
    _merkleProof: BytesLike[],
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  mintWithBeam(
    categoryIds: BigNumberish[],
    amounts: BigNumberish[],
    _merkleProof: BytesLike[],
    overrides?: PayableOverrides & { from?: string }
  ): Promise<ContractTransaction>;

  mintWithUSDT(
    categoryIds: BigNumberish[],
    amounts: BigNumberish[],
    _merkleProof: BytesLike[],
    overrides?: PayableOverrides & { from?: string }
  ): Promise<ContractTransaction>;

  nftContracts(arg0: BigNumberish, overrides?: CallOverrides): Promise<string>;

  openLootBoxBySignature(
    v: BigNumberish,
    r: BytesLike,
    s: BytesLike,
    _info: EIP712SuperGalaticFactory.WeaponInfoStruct,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  openRound(overrides?: CallOverrides): Promise<BigNumber>;

  phase(overrides?: CallOverrides): Promise<BigNumber>;

  plasmaAddr(overrides?: CallOverrides): Promise<string>;

  plasmaAmountPerNFT(overrides?: CallOverrides): Promise<BigNumber>;

  purchaseLootbox(
    quantity: BigNumberish,
    _tokenType: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  purchaseLootboxAndSendGift(
    quantity: BigNumberish,
    _giftReceiver: string,
    _tokenType: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  registerForMint(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  removeUpdatePriceSole(
    addr: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  renounceRole(
    role: BytesLike,
    account: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  reserveWallet(overrides?: CallOverrides): Promise<string>;

  revenueWallet(overrides?: CallOverrides): Promise<string>;

  revokeRole(
    role: BytesLike,
    account: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  round1End(overrides?: CallOverrides): Promise<BigNumber>;

  round1Start(overrides?: CallOverrides): Promise<BigNumber>;

  round2End(overrides?: CallOverrides): Promise<BigNumber>;

  round2Start(overrides?: CallOverrides): Promise<BigNumber>;

  round3End(overrides?: CallOverrides): Promise<BigNumber>;

  round3Start(overrides?: CallOverrides): Promise<BigNumber>;

  setBackendSigner(
    _bkSigner: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setMarketplaceAddress(
    _marketplace: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setMerkeRoot(
    merkleRootHash: BytesLike,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setPhase(
    phaseValue: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setRoundInfo(
    startTime: BigNumberish,
    endTime: BigNumberish,
    round: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setRouterAddress(
    router: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setTokenAddresses(
    _weth: string,
    _ufo: string,
    _usdt: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  slippage(overrides?: CallOverrides): Promise<BigNumber>;

  supportsInterface(
    interfaceId: BytesLike,
    overrides?: CallOverrides
  ): Promise<boolean>;

  totalUSerOwnedCount(
    arg0: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  uapAddr(overrides?: CallOverrides): Promise<string>;

  ufoAddress(overrides?: CallOverrides): Promise<string>;

  updateBeamPriceOfNft(
    price: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  updateFactoryHelperAddr(
    _factoryHelperAddr: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  updateGenesisNftPrice(
    _priceInUSDT: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  updateNFTBodypart(
    nftContract: string,
    nftId: BigNumberish,
    bodyType: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  updatePlasmaAddr(
    _plasma: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  updatePlasmaAmountPerNFT(
    _plasmaAmount: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  updatePriceOfWeaponNFT(
    _price: BigNumberish,
    _tokenType: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  updateWeapon(
    _weaponId: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  updateWeaponAddr(
    _weapon: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  usdtAddress(overrides?: CallOverrides): Promise<string>;

  usdtAmountPerNFT(overrides?: CallOverrides): Promise<BigNumber>;

  weaponNFT(overrides?: CallOverrides): Promise<string>;

  weaponPrice(overrides?: CallOverrides): Promise<BigNumber>;

  weaponUfoPrice(overrides?: CallOverrides): Promise<BigNumber>;

  weaponUsdtPrice(overrides?: CallOverrides): Promise<BigNumber>;

  wethAddr(overrides?: CallOverrides): Promise<string>;

  withdraw(
    receiver: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  withdrawPlasma(
    recipient: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  callStatic: {
    DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;

    PRICE_UPDATE_ROLE(overrides?: CallOverrides): Promise<string>;

    addUpdatePriceRole(addr: string, overrides?: CallOverrides): Promise<void>;

    alreadyPurchasedLootBoxCount(overrides?: CallOverrides): Promise<BigNumber>;

    alreadyUsedSignature(
      arg0: BytesLike,
      overrides?: CallOverrides
    ): Promise<boolean>;

    backendSigner(overrides?: CallOverrides): Promise<string>;

    beamAmountPerNft(overrides?: CallOverrides): Promise<BigNumber>;

    blockNumberWaitingForRandom(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    burnWallet(overrides?: CallOverrides): Promise<string>;

    concatSignature(
      v: BigNumberish,
      r: BytesLike,
      s: BytesLike,
      overrides?: CallOverrides
    ): Promise<string>;

    factoryHelper(overrides?: CallOverrides): Promise<string>;

    getRoleAdmin(role: BytesLike, overrides?: CallOverrides): Promise<string>;

    getWeaponUsdtPrice(overrides?: CallOverrides): Promise<BigNumber>;

    grantRole(
      role: BytesLike,
      account: string,
      overrides?: CallOverrides
    ): Promise<void>;

    hasRole(
      role: BytesLike,
      account: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    initialize(
      _admin: string,
      _beacon: string,
      _plasmaAddr: string,
      _plasmaAmountPerNFT: BigNumberish,
      _weaponPrice: BigNumberish,
      _uap: string,
      _factoryHelper: string,
      overrides?: CallOverrides
    ): Promise<void>;

    isSuperGalaticNFTContract(
      _nftAddress: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    isSuperGalatics(arg0: string, overrides?: CallOverrides): Promise<boolean>;

    marketplaceContract(overrides?: CallOverrides): Promise<string>;

    merkleRoot(overrides?: CallOverrides): Promise<string>;

    mintBatchSuperGalatic(
      categoryIds: BigNumberish[],
      amounts: BigNumberish[],
      _merkleProof: BytesLike[],
      overrides?: CallOverrides
    ): Promise<void>;

    mintWithBeam(
      categoryIds: BigNumberish[],
      amounts: BigNumberish[],
      _merkleProof: BytesLike[],
      overrides?: CallOverrides
    ): Promise<void>;

    mintWithUSDT(
      categoryIds: BigNumberish[],
      amounts: BigNumberish[],
      _merkleProof: BytesLike[],
      overrides?: CallOverrides
    ): Promise<void>;

    nftContracts(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string>;

    openLootBoxBySignature(
      v: BigNumberish,
      r: BytesLike,
      s: BytesLike,
      _info: EIP712SuperGalaticFactory.WeaponInfoStruct,
      overrides?: CallOverrides
    ): Promise<void>;

    openRound(overrides?: CallOverrides): Promise<BigNumber>;

    phase(overrides?: CallOverrides): Promise<BigNumber>;

    plasmaAddr(overrides?: CallOverrides): Promise<string>;

    plasmaAmountPerNFT(overrides?: CallOverrides): Promise<BigNumber>;

    purchaseLootbox(
      quantity: BigNumberish,
      _tokenType: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    purchaseLootboxAndSendGift(
      quantity: BigNumberish,
      _giftReceiver: string,
      _tokenType: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    registerForMint(overrides?: CallOverrides): Promise<void>;

    removeUpdatePriceSole(
      addr: string,
      overrides?: CallOverrides
    ): Promise<void>;

    renounceRole(
      role: BytesLike,
      account: string,
      overrides?: CallOverrides
    ): Promise<void>;

    reserveWallet(overrides?: CallOverrides): Promise<string>;

    revenueWallet(overrides?: CallOverrides): Promise<string>;

    revokeRole(
      role: BytesLike,
      account: string,
      overrides?: CallOverrides
    ): Promise<void>;

    round1End(overrides?: CallOverrides): Promise<BigNumber>;

    round1Start(overrides?: CallOverrides): Promise<BigNumber>;

    round2End(overrides?: CallOverrides): Promise<BigNumber>;

    round2Start(overrides?: CallOverrides): Promise<BigNumber>;

    round3End(overrides?: CallOverrides): Promise<BigNumber>;

    round3Start(overrides?: CallOverrides): Promise<BigNumber>;

    setBackendSigner(
      _bkSigner: string,
      overrides?: CallOverrides
    ): Promise<void>;

    setMarketplaceAddress(
      _marketplace: string,
      overrides?: CallOverrides
    ): Promise<void>;

    setMerkeRoot(
      merkleRootHash: BytesLike,
      overrides?: CallOverrides
    ): Promise<void>;

    setPhase(
      phaseValue: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    setRoundInfo(
      startTime: BigNumberish,
      endTime: BigNumberish,
      round: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    setRouterAddress(router: string, overrides?: CallOverrides): Promise<void>;

    setTokenAddresses(
      _weth: string,
      _ufo: string,
      _usdt: string,
      overrides?: CallOverrides
    ): Promise<void>;

    slippage(overrides?: CallOverrides): Promise<BigNumber>;

    supportsInterface(
      interfaceId: BytesLike,
      overrides?: CallOverrides
    ): Promise<boolean>;

    totalUSerOwnedCount(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    uapAddr(overrides?: CallOverrides): Promise<string>;

    ufoAddress(overrides?: CallOverrides): Promise<string>;

    updateBeamPriceOfNft(
      price: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    updateFactoryHelperAddr(
      _factoryHelperAddr: string,
      overrides?: CallOverrides
    ): Promise<void>;

    updateGenesisNftPrice(
      _priceInUSDT: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    updateNFTBodypart(
      nftContract: string,
      nftId: BigNumberish,
      bodyType: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    updatePlasmaAddr(_plasma: string, overrides?: CallOverrides): Promise<void>;

    updatePlasmaAmountPerNFT(
      _plasmaAmount: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    updatePriceOfWeaponNFT(
      _price: BigNumberish,
      _tokenType: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    updateWeapon(
      _weaponId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    updateWeaponAddr(_weapon: string, overrides?: CallOverrides): Promise<void>;

    usdtAddress(overrides?: CallOverrides): Promise<string>;

    usdtAmountPerNFT(overrides?: CallOverrides): Promise<BigNumber>;

    weaponNFT(overrides?: CallOverrides): Promise<string>;

    weaponPrice(overrides?: CallOverrides): Promise<BigNumber>;

    weaponUfoPrice(overrides?: CallOverrides): Promise<BigNumber>;

    weaponUsdtPrice(overrides?: CallOverrides): Promise<BigNumber>;

    wethAddr(overrides?: CallOverrides): Promise<string>;

    withdraw(receiver: string, overrides?: CallOverrides): Promise<void>;

    withdrawPlasma(recipient: string, overrides?: CallOverrides): Promise<void>;
  };

  filters: {
    "CreateSuperGalatic(uint256,address)"(
      nftIndex?: BigNumberish | null,
      nftContract?: string | null
    ): CreateSuperGalaticEventFilter;
    CreateSuperGalatic(
      nftIndex?: BigNumberish | null,
      nftContract?: string | null
    ): CreateSuperGalaticEventFilter;

    "GrantPriceUpdateRole(address)"(
      addr?: null
    ): GrantPriceUpdateRoleEventFilter;
    GrantPriceUpdateRole(addr?: null): GrantPriceUpdateRoleEventFilter;

    "Initialized(uint8)"(version?: null): InitializedEventFilter;
    Initialized(version?: null): InitializedEventFilter;

    "RemovePriceUpdateRole(address)"(
      addr?: null
    ): RemovePriceUpdateRoleEventFilter;
    RemovePriceUpdateRole(addr?: null): RemovePriceUpdateRoleEventFilter;

    "RoleAdminChanged(bytes32,bytes32,bytes32)"(
      role?: BytesLike | null,
      previousAdminRole?: BytesLike | null,
      newAdminRole?: BytesLike | null
    ): RoleAdminChangedEventFilter;
    RoleAdminChanged(
      role?: BytesLike | null,
      previousAdminRole?: BytesLike | null,
      newAdminRole?: BytesLike | null
    ): RoleAdminChangedEventFilter;

    "RoleGranted(bytes32,address,address)"(
      role?: BytesLike | null,
      account?: string | null,
      sender?: string | null
    ): RoleGrantedEventFilter;
    RoleGranted(
      role?: BytesLike | null,
      account?: string | null,
      sender?: string | null
    ): RoleGrantedEventFilter;

    "RoleRevoked(bytes32,address,address)"(
      role?: BytesLike | null,
      account?: string | null,
      sender?: string | null
    ): RoleRevokedEventFilter;
    RoleRevoked(
      role?: BytesLike | null,
      account?: string | null,
      sender?: string | null
    ): RoleRevokedEventFilter;

    "SetBackendSigner(address)"(signer?: null): SetBackendSignerEventFilter;
    SetBackendSigner(signer?: null): SetBackendSignerEventFilter;

    "UpdateFactoryHelper(address)"(
      newHelperAddr?: null
    ): UpdateFactoryHelperEventFilter;
    UpdateFactoryHelper(newHelperAddr?: null): UpdateFactoryHelperEventFilter;

    "UpdateGenesisNftPrice(uint256)"(
      usdtPrice?: null
    ): UpdateGenesisNftPriceEventFilter;
    UpdateGenesisNftPrice(usdtPrice?: null): UpdateGenesisNftPriceEventFilter;

    "UpdateMarketplaceAddr(address)"(
      newMarketplace?: null
    ): UpdateMarketplaceAddrEventFilter;
    UpdateMarketplaceAddr(
      newMarketplace?: null
    ): UpdateMarketplaceAddrEventFilter;

    "UpdateMerkleRoot(bytes32)"(root?: null): UpdateMerkleRootEventFilter;
    UpdateMerkleRoot(root?: null): UpdateMerkleRootEventFilter;

    "UpdateNftBeamPrice(uint256)"(price?: null): UpdateNftBeamPriceEventFilter;
    UpdateNftBeamPrice(price?: null): UpdateNftBeamPriceEventFilter;

    "UpdateNftPriceInPlasma(uint256)"(
      plasmaPrice?: null
    ): UpdateNftPriceInPlasmaEventFilter;
    UpdateNftPriceInPlasma(
      plasmaPrice?: null
    ): UpdateNftPriceInPlasmaEventFilter;

    "UpdatePhase(uint256)"(phase?: null): UpdatePhaseEventFilter;
    UpdatePhase(phase?: null): UpdatePhaseEventFilter;

    "UpdatePlasmaAddr(address)"(newPlasma?: null): UpdatePlasmaAddrEventFilter;
    UpdatePlasmaAddr(newPlasma?: null): UpdatePlasmaAddrEventFilter;

    "UpdateRoundInfo(uint256,uint256,uint256)"(
      start?: null,
      end?: null,
      round?: null
    ): UpdateRoundInfoEventFilter;
    UpdateRoundInfo(
      start?: null,
      end?: null,
      round?: null
    ): UpdateRoundInfoEventFilter;

    "UpdateUfoAddr(address)"(ufo?: null): UpdateUfoAddrEventFilter;
    UpdateUfoAddr(ufo?: null): UpdateUfoAddrEventFilter;

    "UpdateUsdtAddr(address)"(usdt?: null): UpdateUsdtAddrEventFilter;
    UpdateUsdtAddr(usdt?: null): UpdateUsdtAddrEventFilter;

    "UpdateWeaponAddr(address)"(newWeapon?: null): UpdateWeaponAddrEventFilter;
    UpdateWeaponAddr(newWeapon?: null): UpdateWeaponAddrEventFilter;

    "UpdateWeaponPrice(uint256,uint256)"(
      price?: null,
      tokenType?: null
    ): UpdateWeaponPriceEventFilter;
    UpdateWeaponPrice(
      price?: null,
      tokenType?: null
    ): UpdateWeaponPriceEventFilter;

    "UpdateWrappedNativeAddr(address)"(
      wNative?: null
    ): UpdateWrappedNativeAddrEventFilter;
    UpdateWrappedNativeAddr(wNative?: null): UpdateWrappedNativeAddrEventFilter;

    "Withdraw(address,uint256)"(
      receiver?: null,
      amount?: null
    ): WithdrawEventFilter;
    Withdraw(receiver?: null, amount?: null): WithdrawEventFilter;

    "WithdrawPlasma(address,uint256)"(
      recipient?: null,
      amount?: null
    ): WithdrawPlasmaEventFilter;
    WithdrawPlasma(recipient?: null, amount?: null): WithdrawPlasmaEventFilter;
  };

  estimateGas: {
    DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<BigNumber>;

    PRICE_UPDATE_ROLE(overrides?: CallOverrides): Promise<BigNumber>;

    addUpdatePriceRole(
      addr: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    alreadyPurchasedLootBoxCount(overrides?: CallOverrides): Promise<BigNumber>;

    alreadyUsedSignature(
      arg0: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    backendSigner(overrides?: CallOverrides): Promise<BigNumber>;

    beamAmountPerNft(overrides?: CallOverrides): Promise<BigNumber>;

    blockNumberWaitingForRandom(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    burnWallet(overrides?: CallOverrides): Promise<BigNumber>;

    concatSignature(
      v: BigNumberish,
      r: BytesLike,
      s: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    factoryHelper(overrides?: CallOverrides): Promise<BigNumber>;

    getRoleAdmin(
      role: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getWeaponUsdtPrice(overrides?: CallOverrides): Promise<BigNumber>;

    grantRole(
      role: BytesLike,
      account: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    hasRole(
      role: BytesLike,
      account: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    initialize(
      _admin: string,
      _beacon: string,
      _plasmaAddr: string,
      _plasmaAmountPerNFT: BigNumberish,
      _weaponPrice: BigNumberish,
      _uap: string,
      _factoryHelper: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    isSuperGalaticNFTContract(
      _nftAddress: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    isSuperGalatics(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    marketplaceContract(overrides?: CallOverrides): Promise<BigNumber>;

    merkleRoot(overrides?: CallOverrides): Promise<BigNumber>;

    mintBatchSuperGalatic(
      categoryIds: BigNumberish[],
      amounts: BigNumberish[],
      _merkleProof: BytesLike[],
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    mintWithBeam(
      categoryIds: BigNumberish[],
      amounts: BigNumberish[],
      _merkleProof: BytesLike[],
      overrides?: PayableOverrides & { from?: string }
    ): Promise<BigNumber>;

    mintWithUSDT(
      categoryIds: BigNumberish[],
      amounts: BigNumberish[],
      _merkleProof: BytesLike[],
      overrides?: PayableOverrides & { from?: string }
    ): Promise<BigNumber>;

    nftContracts(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    openLootBoxBySignature(
      v: BigNumberish,
      r: BytesLike,
      s: BytesLike,
      _info: EIP712SuperGalaticFactory.WeaponInfoStruct,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    openRound(overrides?: CallOverrides): Promise<BigNumber>;

    phase(overrides?: CallOverrides): Promise<BigNumber>;

    plasmaAddr(overrides?: CallOverrides): Promise<BigNumber>;

    plasmaAmountPerNFT(overrides?: CallOverrides): Promise<BigNumber>;

    purchaseLootbox(
      quantity: BigNumberish,
      _tokenType: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    purchaseLootboxAndSendGift(
      quantity: BigNumberish,
      _giftReceiver: string,
      _tokenType: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    registerForMint(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    removeUpdatePriceSole(
      addr: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    renounceRole(
      role: BytesLike,
      account: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    reserveWallet(overrides?: CallOverrides): Promise<BigNumber>;

    revenueWallet(overrides?: CallOverrides): Promise<BigNumber>;

    revokeRole(
      role: BytesLike,
      account: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    round1End(overrides?: CallOverrides): Promise<BigNumber>;

    round1Start(overrides?: CallOverrides): Promise<BigNumber>;

    round2End(overrides?: CallOverrides): Promise<BigNumber>;

    round2Start(overrides?: CallOverrides): Promise<BigNumber>;

    round3End(overrides?: CallOverrides): Promise<BigNumber>;

    round3Start(overrides?: CallOverrides): Promise<BigNumber>;

    setBackendSigner(
      _bkSigner: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setMarketplaceAddress(
      _marketplace: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setMerkeRoot(
      merkleRootHash: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setPhase(
      phaseValue: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setRoundInfo(
      startTime: BigNumberish,
      endTime: BigNumberish,
      round: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setRouterAddress(
      router: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setTokenAddresses(
      _weth: string,
      _ufo: string,
      _usdt: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    slippage(overrides?: CallOverrides): Promise<BigNumber>;

    supportsInterface(
      interfaceId: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    totalUSerOwnedCount(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    uapAddr(overrides?: CallOverrides): Promise<BigNumber>;

    ufoAddress(overrides?: CallOverrides): Promise<BigNumber>;

    updateBeamPriceOfNft(
      price: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    updateFactoryHelperAddr(
      _factoryHelperAddr: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    updateGenesisNftPrice(
      _priceInUSDT: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    updateNFTBodypart(
      nftContract: string,
      nftId: BigNumberish,
      bodyType: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    updatePlasmaAddr(
      _plasma: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    updatePlasmaAmountPerNFT(
      _plasmaAmount: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    updatePriceOfWeaponNFT(
      _price: BigNumberish,
      _tokenType: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    updateWeapon(
      _weaponId: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    updateWeaponAddr(
      _weapon: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    usdtAddress(overrides?: CallOverrides): Promise<BigNumber>;

    usdtAmountPerNFT(overrides?: CallOverrides): Promise<BigNumber>;

    weaponNFT(overrides?: CallOverrides): Promise<BigNumber>;

    weaponPrice(overrides?: CallOverrides): Promise<BigNumber>;

    weaponUfoPrice(overrides?: CallOverrides): Promise<BigNumber>;

    weaponUsdtPrice(overrides?: CallOverrides): Promise<BigNumber>;

    wethAddr(overrides?: CallOverrides): Promise<BigNumber>;

    withdraw(
      receiver: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    withdrawPlasma(
      recipient: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;
  };

  populateTransaction: {
    DEFAULT_ADMIN_ROLE(
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    PRICE_UPDATE_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    addUpdatePriceRole(
      addr: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    alreadyPurchasedLootBoxCount(
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    alreadyUsedSignature(
      arg0: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    backendSigner(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    beamAmountPerNft(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    blockNumberWaitingForRandom(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    burnWallet(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    concatSignature(
      v: BigNumberish,
      r: BytesLike,
      s: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    factoryHelper(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    getRoleAdmin(
      role: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getWeaponUsdtPrice(
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    grantRole(
      role: BytesLike,
      account: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    hasRole(
      role: BytesLike,
      account: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    initialize(
      _admin: string,
      _beacon: string,
      _plasmaAddr: string,
      _plasmaAmountPerNFT: BigNumberish,
      _weaponPrice: BigNumberish,
      _uap: string,
      _factoryHelper: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    isSuperGalaticNFTContract(
      _nftAddress: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    isSuperGalatics(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    marketplaceContract(
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    merkleRoot(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    mintBatchSuperGalatic(
      categoryIds: BigNumberish[],
      amounts: BigNumberish[],
      _merkleProof: BytesLike[],
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    mintWithBeam(
      categoryIds: BigNumberish[],
      amounts: BigNumberish[],
      _merkleProof: BytesLike[],
      overrides?: PayableOverrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    mintWithUSDT(
      categoryIds: BigNumberish[],
      amounts: BigNumberish[],
      _merkleProof: BytesLike[],
      overrides?: PayableOverrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    nftContracts(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    openLootBoxBySignature(
      v: BigNumberish,
      r: BytesLike,
      s: BytesLike,
      _info: EIP712SuperGalaticFactory.WeaponInfoStruct,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    openRound(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    phase(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    plasmaAddr(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    plasmaAmountPerNFT(
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    purchaseLootbox(
      quantity: BigNumberish,
      _tokenType: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    purchaseLootboxAndSendGift(
      quantity: BigNumberish,
      _giftReceiver: string,
      _tokenType: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    registerForMint(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    removeUpdatePriceSole(
      addr: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    renounceRole(
      role: BytesLike,
      account: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    reserveWallet(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    revenueWallet(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    revokeRole(
      role: BytesLike,
      account: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    round1End(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    round1Start(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    round2End(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    round2Start(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    round3End(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    round3Start(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    setBackendSigner(
      _bkSigner: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setMarketplaceAddress(
      _marketplace: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setMerkeRoot(
      merkleRootHash: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setPhase(
      phaseValue: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setRoundInfo(
      startTime: BigNumberish,
      endTime: BigNumberish,
      round: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setRouterAddress(
      router: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setTokenAddresses(
      _weth: string,
      _ufo: string,
      _usdt: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    slippage(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    supportsInterface(
      interfaceId: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    totalUSerOwnedCount(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    uapAddr(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    ufoAddress(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    updateBeamPriceOfNft(
      price: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    updateFactoryHelperAddr(
      _factoryHelperAddr: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    updateGenesisNftPrice(
      _priceInUSDT: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    updateNFTBodypart(
      nftContract: string,
      nftId: BigNumberish,
      bodyType: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    updatePlasmaAddr(
      _plasma: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    updatePlasmaAmountPerNFT(
      _plasmaAmount: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    updatePriceOfWeaponNFT(
      _price: BigNumberish,
      _tokenType: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    updateWeapon(
      _weaponId: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    updateWeaponAddr(
      _weapon: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    usdtAddress(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    usdtAmountPerNFT(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    weaponNFT(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    weaponPrice(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    weaponUfoPrice(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    weaponUsdtPrice(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    wethAddr(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    withdraw(
      receiver: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    withdrawPlasma(
      recipient: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;
  };
}
