/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
  Contract,
  ContractFactory,
  ContractTransactionResponse,
  Interface,
} from "ethers";
import type {
  Signer,
  AddressLike,
  ContractDeployTransaction,
  ContractRunner,
} from "ethers";
import type { NonPayableOverrides } from "../common";
import type {
  MockRandomnessReceiver,
  MockRandomnessReceiverInterface,
} from "../MockRandomnessReceiver";

const _abi = [
  {
    type: "constructor",
    inputs: [
      {
        name: "randomnessSender",
        type: "address",
        internalType: "address",
      },
    ],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "randomness",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "bytes32",
        internalType: "bytes32",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "randomnessSender",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "address",
        internalType: "contract IRandomnessSender",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "receiveRandomness",
    inputs: [
      {
        name: "requestID",
        type: "uint256",
        internalType: "uint256",
      },
      {
        name: "randomness",
        type: "bytes32",
        internalType: "bytes32",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "requestId",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "rollDice",
    inputs: [],
    outputs: [],
    stateMutability: "nonpayable",
  },
] as const;

const _bytecode =
  "0x60a060405234801561000f575f5ffd5b5060405161042638038061042683398101604081905261002e916100b0565b806001600160a01b03811661009e5760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574207a65726f20616464726573732061732072616e646f60448201526b36b732b9b99039b2b73232b960a11b606482015260840160405180910390fd5b6001600160a01b0316608052506100dd565b5f602082840312156100c0575f5ffd5b81516001600160a01b03811681146100d6575f5ffd5b9392505050565b6080516103246101025f395f818160ad0152818161010c015261022601526103245ff3fe608060405234801561000f575f5ffd5b5060043610610063575f3560e01c8063431ac6571161004d578063431ac6571461008b578063837e7cc6146100a0578063df3fafe8146100a8575f5ffd5b80626d6cae146100675780633601318914610083575b5f5ffd5b61007060015481565b6040519081526020015b60405180910390f35b6100705f5481565b61009e6100993660046102b7565b6100f4565b005b61009e6101a6565b6100cf7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161007a565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4f6e6c792072616e646f6d6e65737353656e6465722063616e2063616c6c000060448201526064015b60405180910390fd5b6101a282826101b3565b5050565b6101ae610223565b600155565b816001541461021e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f52657175657374204944206d69736d6174636800000000000000000000000000604482015260640161018f565b5f5550565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8413b076040518163ffffffff1660e01b81526004016020604051808303815f875af115801561028e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b291906102d7565b905090565b5f5f604083850312156102c8575f5ffd5b50508035926020909101359150565b5f602082840312156102e7575f5ffd5b505191905056fea2646970667358221220e3dc079a3a90b9d3908b9f60d311360e8849c23b3a4dcef80857bcb15237404d64736f6c634300081c0033";

type MockRandomnessReceiverConstructorParams =
  | [signer?: Signer]
  | ConstructorParameters<typeof ContractFactory>;

const isSuperArgs = (
  xs: MockRandomnessReceiverConstructorParams
): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;

export class MockRandomnessReceiver__factory extends ContractFactory {
  constructor(...args: MockRandomnessReceiverConstructorParams) {
    if (isSuperArgs(args)) {
      super(...args);
    } else {
      super(_abi, _bytecode, args[0]);
    }
  }

  override getDeployTransaction(
    randomnessSender: AddressLike,
    overrides?: NonPayableOverrides & { from?: string }
  ): Promise<ContractDeployTransaction> {
    return super.getDeployTransaction(randomnessSender, overrides || {});
  }
  override deploy(
    randomnessSender: AddressLike,
    overrides?: NonPayableOverrides & { from?: string }
  ) {
    return super.deploy(randomnessSender, overrides || {}) as Promise<
      MockRandomnessReceiver & {
        deploymentTransaction(): ContractTransactionResponse;
      }
    >;
  }
  override connect(
    runner: ContractRunner | null
  ): MockRandomnessReceiver__factory {
    return super.connect(runner) as MockRandomnessReceiver__factory;
  }

  static readonly bytecode = _bytecode;
  static readonly abi = _abi;
  static createInterface(): MockRandomnessReceiverInterface {
    return new Interface(_abi) as MockRandomnessReceiverInterface;
  }
  static connect(
    address: string,
    runner?: ContractRunner | null
  ): MockRandomnessReceiver {
    return new Contract(
      address,
      _abi,
      runner
    ) as unknown as MockRandomnessReceiver;
  }
}
