/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import type {
  BaseContract,
  BigNumberish,
  BytesLike,
  FunctionFragment,
  Result,
  Interface,
  AddressLike,
  ContractRunner,
  ContractMethod,
  Listener,
} from "ethers";
import type {
  TypedContractEvent,
  TypedDeferredTopicFilter,
  TypedEventLog,
  TypedListener,
  TypedContractMethod,
} from "../../common";

export interface MarketRegistryMockInterface extends Interface {
  getFunction(
    nameOrSignature:
      | "closeMarket"
      | "createMarket(address,uint32,uint32,uint32,uint16,bool,bool,uint8,uint8,string)"
      | "createMarket(address,uint32,uint32,uint32,uint16,bool,bool,string)"
      | "getBidExpirationTime"
      | "getMarketFeeRecipient"
      | "getMarketOwner"
      | "getMarketURI"
      | "getMarketplaceFee"
      | "getPaymentCycle"
      | "getPaymentDefaultDuration"
      | "getPaymentType"
      | "globalBorrowerIsVerified"
      | "globalLenderIsVerified"
      | "globalMarketFeeRecipient"
      | "globalMarketOwner"
      | "globalMarketsClosed"
      | "initialize"
      | "isMarketClosed"
      | "isMarketOpen"
      | "isVerifiedBorrower"
      | "isVerifiedLender"
      | "mock_setBorrowerIsVerified"
      | "mock_setGlobalMarketsClosed"
      | "mock_setLenderIsVerified"
      | "setMarketFeeRecipient"
      | "setMarketOwner"
  ): FunctionFragment;

  encodeFunctionData(
    functionFragment: "closeMarket",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "createMarket(address,uint32,uint32,uint32,uint16,bool,bool,uint8,uint8,string)",
    values: [
      AddressLike,
      BigNumberish,
      BigNumberish,
      BigNumberish,
      BigNumberish,
      boolean,
      boolean,
      BigNumberish,
      BigNumberish,
      string
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "createMarket(address,uint32,uint32,uint32,uint16,bool,bool,string)",
    values: [
      AddressLike,
      BigNumberish,
      BigNumberish,
      BigNumberish,
      BigNumberish,
      boolean,
      boolean,
      string
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "getBidExpirationTime",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getMarketFeeRecipient",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getMarketOwner",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getMarketURI",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getMarketplaceFee",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getPaymentCycle",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getPaymentDefaultDuration",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getPaymentType",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "globalBorrowerIsVerified",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "globalLenderIsVerified",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "globalMarketFeeRecipient",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "globalMarketOwner",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "globalMarketsClosed",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "initialize",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isMarketClosed",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isMarketOpen",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isVerifiedBorrower",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isVerifiedLender",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "mock_setBorrowerIsVerified",
    values: [boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "mock_setGlobalMarketsClosed",
    values: [boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "mock_setLenderIsVerified",
    values: [boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "setMarketFeeRecipient",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setMarketOwner",
    values: [AddressLike]
  ): string;

  decodeFunctionResult(
    functionFragment: "closeMarket",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "createMarket(address,uint32,uint32,uint32,uint16,bool,bool,uint8,uint8,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "createMarket(address,uint32,uint32,uint32,uint16,bool,bool,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getBidExpirationTime",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getMarketFeeRecipient",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getMarketOwner",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getMarketURI",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getMarketplaceFee",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPaymentCycle",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPaymentDefaultDuration",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPaymentType",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "globalBorrowerIsVerified",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "globalLenderIsVerified",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "globalMarketFeeRecipient",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "globalMarketOwner",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "globalMarketsClosed",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "isMarketClosed",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isMarketOpen",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isVerifiedBorrower",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isVerifiedLender",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "mock_setBorrowerIsVerified",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "mock_setGlobalMarketsClosed",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "mock_setLenderIsVerified",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMarketFeeRecipient",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMarketOwner",
    data: BytesLike
  ): Result;
}

export interface MarketRegistryMock extends BaseContract {
  connect(runner?: ContractRunner | null): MarketRegistryMock;
  waitForDeployment(): Promise<this>;

  interface: MarketRegistryMockInterface;

  queryFilter<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TypedEventLog<TCEvent>>>;
  queryFilter<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TypedEventLog<TCEvent>>>;

  on<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    listener: TypedListener<TCEvent>
  ): Promise<this>;
  on<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    listener: TypedListener<TCEvent>
  ): Promise<this>;

  once<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    listener: TypedListener<TCEvent>
  ): Promise<this>;
  once<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    listener: TypedListener<TCEvent>
  ): Promise<this>;

  listeners<TCEvent extends TypedContractEvent>(
    event: TCEvent
  ): Promise<Array<TypedListener<TCEvent>>>;
  listeners(eventName?: string): Promise<Array<Listener>>;
  removeAllListeners<TCEvent extends TypedContractEvent>(
    event?: TCEvent
  ): Promise<this>;

  closeMarket: TypedContractMethod<
    [_marketId: BigNumberish],
    [void],
    "nonpayable"
  >;

  "createMarket(address,uint32,uint32,uint32,uint16,bool,bool,uint8,uint8,string)": TypedContractMethod<
    [
      _initialOwner: AddressLike,
      _paymentCycleDuration: BigNumberish,
      _paymentDefaultDuration: BigNumberish,
      _bidExpirationTime: BigNumberish,
      _feePercent: BigNumberish,
      _requireLenderAttestation: boolean,
      _requireBorrowerAttestation: boolean,
      _paymentType: BigNumberish,
      _paymentCycleType: BigNumberish,
      _uri: string
    ],
    [bigint],
    "nonpayable"
  >;

  "createMarket(address,uint32,uint32,uint32,uint16,bool,bool,string)": TypedContractMethod<
    [
      _initialOwner: AddressLike,
      _paymentCycleDuration: BigNumberish,
      _paymentDefaultDuration: BigNumberish,
      _bidExpirationTime: BigNumberish,
      _feePercent: BigNumberish,
      _requireLenderAttestation: boolean,
      _requireBorrowerAttestation: boolean,
      _uri: string
    ],
    [bigint],
    "nonpayable"
  >;

  getBidExpirationTime: TypedContractMethod<
    [_marketId: BigNumberish],
    [bigint],
    "view"
  >;

  getMarketFeeRecipient: TypedContractMethod<
    [_marketId: BigNumberish],
    [string],
    "view"
  >;

  getMarketOwner: TypedContractMethod<
    [_marketId: BigNumberish],
    [string],
    "view"
  >;

  getMarketURI: TypedContractMethod<
    [_marketId: BigNumberish],
    [string],
    "view"
  >;

  getMarketplaceFee: TypedContractMethod<
    [_marketId: BigNumberish],
    [bigint],
    "view"
  >;

  getPaymentCycle: TypedContractMethod<
    [_marketId: BigNumberish],
    [[bigint, bigint]],
    "view"
  >;

  getPaymentDefaultDuration: TypedContractMethod<
    [_marketId: BigNumberish],
    [bigint],
    "view"
  >;

  getPaymentType: TypedContractMethod<
    [_marketId: BigNumberish],
    [bigint],
    "view"
  >;

  globalBorrowerIsVerified: TypedContractMethod<[], [boolean], "view">;

  globalLenderIsVerified: TypedContractMethod<[], [boolean], "view">;

  globalMarketFeeRecipient: TypedContractMethod<[], [string], "view">;

  globalMarketOwner: TypedContractMethod<[], [string], "view">;

  globalMarketsClosed: TypedContractMethod<[], [boolean], "view">;

  initialize: TypedContractMethod<
    [_tellerAS: AddressLike],
    [void],
    "nonpayable"
  >;

  isMarketClosed: TypedContractMethod<
    [_marketId: BigNumberish],
    [boolean],
    "view"
  >;

  isMarketOpen: TypedContractMethod<
    [_marketId: BigNumberish],
    [boolean],
    "view"
  >;

  isVerifiedBorrower: TypedContractMethod<
    [_marketId: BigNumberish, _borrower: AddressLike],
    [[boolean, string] & { isVerified_: boolean; uuid_: string }],
    "view"
  >;

  isVerifiedLender: TypedContractMethod<
    [_marketId: BigNumberish, _lenderAddress: AddressLike],
    [[boolean, string] & { isVerified_: boolean; uuid_: string }],
    "view"
  >;

  mock_setBorrowerIsVerified: TypedContractMethod<
    [verified: boolean],
    [void],
    "nonpayable"
  >;

  mock_setGlobalMarketsClosed: TypedContractMethod<
    [closed: boolean],
    [void],
    "nonpayable"
  >;

  mock_setLenderIsVerified: TypedContractMethod<
    [verified: boolean],
    [void],
    "nonpayable"
  >;

  setMarketFeeRecipient: TypedContractMethod<
    [_feeRecipient: AddressLike],
    [void],
    "nonpayable"
  >;

  setMarketOwner: TypedContractMethod<
    [_owner: AddressLike],
    [void],
    "nonpayable"
  >;

  getFunction<T extends ContractMethod = ContractMethod>(
    key: string | FunctionFragment
  ): T;

  getFunction(
    nameOrSignature: "closeMarket"
  ): TypedContractMethod<[_marketId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "createMarket(address,uint32,uint32,uint32,uint16,bool,bool,uint8,uint8,string)"
  ): TypedContractMethod<
    [
      _initialOwner: AddressLike,
      _paymentCycleDuration: BigNumberish,
      _paymentDefaultDuration: BigNumberish,
      _bidExpirationTime: BigNumberish,
      _feePercent: BigNumberish,
      _requireLenderAttestation: boolean,
      _requireBorrowerAttestation: boolean,
      _paymentType: BigNumberish,
      _paymentCycleType: BigNumberish,
      _uri: string
    ],
    [bigint],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "createMarket(address,uint32,uint32,uint32,uint16,bool,bool,string)"
  ): TypedContractMethod<
    [
      _initialOwner: AddressLike,
      _paymentCycleDuration: BigNumberish,
      _paymentDefaultDuration: BigNumberish,
      _bidExpirationTime: BigNumberish,
      _feePercent: BigNumberish,
      _requireLenderAttestation: boolean,
      _requireBorrowerAttestation: boolean,
      _uri: string
    ],
    [bigint],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "getBidExpirationTime"
  ): TypedContractMethod<[_marketId: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "getMarketFeeRecipient"
  ): TypedContractMethod<[_marketId: BigNumberish], [string], "view">;
  getFunction(
    nameOrSignature: "getMarketOwner"
  ): TypedContractMethod<[_marketId: BigNumberish], [string], "view">;
  getFunction(
    nameOrSignature: "getMarketURI"
  ): TypedContractMethod<[_marketId: BigNumberish], [string], "view">;
  getFunction(
    nameOrSignature: "getMarketplaceFee"
  ): TypedContractMethod<[_marketId: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "getPaymentCycle"
  ): TypedContractMethod<[_marketId: BigNumberish], [[bigint, bigint]], "view">;
  getFunction(
    nameOrSignature: "getPaymentDefaultDuration"
  ): TypedContractMethod<[_marketId: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "getPaymentType"
  ): TypedContractMethod<[_marketId: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "globalBorrowerIsVerified"
  ): TypedContractMethod<[], [boolean], "view">;
  getFunction(
    nameOrSignature: "globalLenderIsVerified"
  ): TypedContractMethod<[], [boolean], "view">;
  getFunction(
    nameOrSignature: "globalMarketFeeRecipient"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "globalMarketOwner"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "globalMarketsClosed"
  ): TypedContractMethod<[], [boolean], "view">;
  getFunction(
    nameOrSignature: "initialize"
  ): TypedContractMethod<[_tellerAS: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "isMarketClosed"
  ): TypedContractMethod<[_marketId: BigNumberish], [boolean], "view">;
  getFunction(
    nameOrSignature: "isMarketOpen"
  ): TypedContractMethod<[_marketId: BigNumberish], [boolean], "view">;
  getFunction(
    nameOrSignature: "isVerifiedBorrower"
  ): TypedContractMethod<
    [_marketId: BigNumberish, _borrower: AddressLike],
    [[boolean, string] & { isVerified_: boolean; uuid_: string }],
    "view"
  >;
  getFunction(
    nameOrSignature: "isVerifiedLender"
  ): TypedContractMethod<
    [_marketId: BigNumberish, _lenderAddress: AddressLike],
    [[boolean, string] & { isVerified_: boolean; uuid_: string }],
    "view"
  >;
  getFunction(
    nameOrSignature: "mock_setBorrowerIsVerified"
  ): TypedContractMethod<[verified: boolean], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "mock_setGlobalMarketsClosed"
  ): TypedContractMethod<[closed: boolean], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "mock_setLenderIsVerified"
  ): TypedContractMethod<[verified: boolean], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setMarketFeeRecipient"
  ): TypedContractMethod<[_feeRecipient: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setMarketOwner"
  ): TypedContractMethod<[_owner: AddressLike], [void], "nonpayable">;

  filters: {};
}
