/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */

import {
  Signer,
  BytesLike,
  Contract,
  ContractFactory,
  Overrides,
} from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";

import type { RandomNumberConsumer } from "../RandomNumberConsumer";

export class RandomNumberConsumer__factory extends ContractFactory {
  constructor(signer?: Signer) {
    super(_abi, _bytecode, signer);
  }

  deploy(
    owner: string,
    _vrfCoordinator: string,
    _linkToken: string,
    _keyHash: BytesLike,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<RandomNumberConsumer> {
    return super.deploy(
      owner,
      _vrfCoordinator,
      _linkToken,
      _keyHash,
      overrides || {}
    ) as Promise<RandomNumberConsumer>;
  }
  getDeployTransaction(
    owner: string,
    _vrfCoordinator: string,
    _linkToken: string,
    _keyHash: BytesLike,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): TransactionRequest {
    return super.getDeployTransaction(
      owner,
      _vrfCoordinator,
      _linkToken,
      _keyHash,
      overrides || {}
    );
  }
  attach(address: string): RandomNumberConsumer {
    return super.attach(address) as RandomNumberConsumer;
  }
  connect(signer: Signer): RandomNumberConsumer__factory {
    return super.connect(signer) as RandomNumberConsumer__factory;
  }
  static connect(
    address: string,
    signerOrProvider: Signer | Provider
  ): RandomNumberConsumer {
    return new Contract(
      address,
      _abi,
      signerOrProvider
    ) as RandomNumberConsumer;
  }
}

const _abi = [
  {
    inputs: [
      {
        internalType: "address",
        name: "owner",
        type: "address",
      },
      {
        internalType: "address",
        name: "_vrfCoordinator",
        type: "address",
      },
      {
        internalType: "address",
        name: "_linkToken",
        type: "address",
      },
      {
        internalType: "bytes32",
        name: "_keyHash",
        type: "bytes32",
      },
    ],
    stateMutability: "nonpayable",
    type: "constructor",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "address",
        name: "previousOwner",
        type: "address",
      },
      {
        indexed: true,
        internalType: "address",
        name: "newOwner",
        type: "address",
      },
    ],
    name: "OwnershipTransferred",
    type: "event",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_consumer",
        type: "address",
      },
    ],
    name: "addVerifierConsumer",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [],
    name: "getRandomNumber",
    outputs: [
      {
        internalType: "bytes32",
        name: "requestId",
        type: "bytes32",
      },
    ],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [],
    name: "owner",
    outputs: [
      {
        internalType: "address",
        name: "",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "randomResult",
    outputs: [
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "bytes32",
        name: "requestId",
        type: "bytes32",
      },
      {
        internalType: "uint256",
        name: "randomness",
        type: "uint256",
      },
    ],
    name: "rawFulfillRandomness",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_consumer",
        type: "address",
      },
    ],
    name: "removeConsumer",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [],
    name: "renounceOwnership",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "newOwner",
        type: "address",
      },
    ],
    name: "transferOwnership",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "",
        type: "address",
      },
    ],
    name: "verifiedConsumers",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "withdrawLink",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
];

const _bytecode =
  "0x60c060405234801561001057600080fd5b50604051610a83380380610a8383398101604081905261002f916101c0565b6001600160601b0319606084811b821660a05283901b166080526100586100533390565b610082565b61006b846100d460201b61043f1760201c565b6002555050671bc16d674ec800006003555061020b565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001546001600160a01b031633146101335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b0381166101985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161012a565b6101a181610082565b50565b80516001600160a01b03811681146101bb57600080fd5b919050565b600080600080608085870312156101d657600080fd5b6101df856101a4565b93506101ed602086016101a4565b92506101fb604086016101a4565b6060959095015193969295505050565b60805160601c60a05160601c61083f61024460003960008181610200015261055f0152600081816103470152610530015261083f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638dc654a2116100665780638dc654a2146100b657806394985ddd1461012a578063d39b59d31461013d578063dbdff2c114610150578063f2fde38b1461015857600080fd5b80630e27e3df146100a357806342619f66146100b8578063677e82d0146100d4578063715018a6146101075780638da5cb5b1461010f575b600080fd5b6100b66100b13660046106b5565b61016b565b005b6100c160045481565b6040519081526020015b60405180910390f35b6100f76100e23660046106b5565b60056020526000908152604090205460ff1681565b60405190151581526020016100cb565b6100b66101bf565b6001546040516001600160a01b0390911681526020016100cb565b6100b6610138366004610707565b6101f5565b6100b661014b3660046106b5565b610273565b6100c16102c1565b6100b66101663660046106b5565b61043f565b6001546001600160a01b0316331461019e5760405162461bcd60e51b8152600401610195906107ae565b60405180910390fd5b6001600160a01b03166000908152600560205260409020805460ff19169055565b6001546001600160a01b031633146101e95760405162461bcd60e51b8152600401610195906107ae565b6101f360006104da565b565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461026d5760405162461bcd60e51b815260206004820152601f60248201527f4f6e6c7920565246436f6f7264696e61746f722063616e2066756c66696c6c006044820152606401610195565b60045550565b6001546001600160a01b0316331461029d5760405162461bcd60e51b8152600401610195906107ae565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b3360008181526005602052604081205490919060ff1661032f5760405162461bcd60e51b8152602060048201526024808201527f4f6e6c7920566572696669656420636f6e73756d65722063616e2063616c6c206044820152637468697360e01b6064820152608401610195565b6003546040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561039157600080fd5b505afa1580156103a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c99190610729565b101561042b5760405162461bcd60e51b815260206004820152602b60248201527f4e6f7420656e6f756768204c494e4b202d2066696c6c20636f6e74726163742060448201526a1dda5d1a0819985d58d95d60aa1b6064820152608401610195565b61043960025460035461052c565b91505090565b6001546001600160a01b031633146104695760405162461bcd60e51b8152600401610195906107ae565b6001600160a01b0381166104ce5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610195565b6104d7816104da565b50565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634000aea07f00000000000000000000000000000000000000000000000000000000000000008486600060405160200161059c929190918252602082015260400190565b6040516020818303038152906040526040518463ffffffff1660e01b81526004016105c993929190610742565b602060405180830381600087803b1580156105e357600080fd5b505af11580156105f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061b91906106e5565b5060008381526020818152604080832054815180840188905280830185905230606082015260808082018390528351808303909101815260a0909101909252815191830191909120868452929091526106759060016107e3565b6000858152602081815260409182902092909255805180830187905280820184905281518082038301815260609091019091528051910120949350505050565b6000602082840312156106c757600080fd5b81356001600160a01b03811681146106de57600080fd5b9392505050565b6000602082840312156106f757600080fd5b815180151581146106de57600080fd5b6000806040838503121561071a57600080fd5b50508035926020909101359150565b60006020828403121561073b57600080fd5b5051919050565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b8181101561078457858101830151858201608001528201610768565b81811115610796576000608083870101525b50601f01601f19169290920160800195945050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561080457634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220354b32ae04226f2ce181decab8b0a971d45226e36abd10da46af98dfece4c1f964736f6c63430008070033";
