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

import type BN from "bn.js";
import type { ContractOptions } from "web3-eth-contract";
import type { EventLog } from "web3-core";
import type { EventEmitter } from "events";
import type {
  Callback,
  PayableTransactionObject,
  NonPayableTransactionObject,
  BlockType,
  ContractEventLog,
  BaseContract,
} from "./types";

export interface EventOptions {
  filter?: object;
  fromBlock?: BlockType;
  topics?: string[];
}

export type SellOrderBought = ContractEventLog<{
  _order: [string, string, string, string, string];
  _buyer: string;
  0: [string, string, string, string, string];
  1: string;
}>;
export type SellOrderCancelled = ContractEventLog<{
  _order: [string, string, string, string, string];
  0: [string, string, string, string, string];
}>;
export type SellOrderPosted = ContractEventLog<{
  _order: [string, string, string, string, string];
  0: [string, string, string, string, string];
}>;

export interface ILockedWethSecondaryMarket extends BaseContract {
  constructor(
    jsonInterface: any[],
    address?: string,
    options?: ContractOptions
  ): ILockedWethSecondaryMarket;
  clone(): ILockedWethSecondaryMarket;
  methods: {
    POOL_MANAGER_FACTORY(): NonPayableTransactionObject<string>;

    WETH(): NonPayableTransactionObject<string>;

    buyOrder(_orderId: number | string | BN): NonPayableTransactionObject<void>;

    cancelOrder(
      _orderId: number | string | BN
    ): NonPayableTransactionObject<void>;

    getSellOrders(
      _startFrom: number | string | BN,
      _amount: number | string | BN
    ): NonPayableTransactionObject<[string, string, string, string, string][]>;

    postOrder(
      _lockedWethToken: string,
      _amount: number | string | BN,
      _discount: number | string | BN
    ): NonPayableTransactionObject<void>;

    sellOrders(_orderId: number | string | BN): NonPayableTransactionObject<{
      _lockedWethToken: string;
      _id: string;
      _amount: string;
      _owner: string;
      _discount: string;
      0: string;
      1: string;
      2: string;
      3: string;
      4: string;
    }>;

    sellOrdersCount(): NonPayableTransactionObject<string>;
  };
  events: {
    SellOrderBought(cb?: Callback<SellOrderBought>): EventEmitter;
    SellOrderBought(
      options?: EventOptions,
      cb?: Callback<SellOrderBought>
    ): EventEmitter;

    SellOrderCancelled(cb?: Callback<SellOrderCancelled>): EventEmitter;
    SellOrderCancelled(
      options?: EventOptions,
      cb?: Callback<SellOrderCancelled>
    ): EventEmitter;

    SellOrderPosted(cb?: Callback<SellOrderPosted>): EventEmitter;
    SellOrderPosted(
      options?: EventOptions,
      cb?: Callback<SellOrderPosted>
    ): EventEmitter;

    allEvents(options?: EventOptions, cb?: Callback<EventLog>): EventEmitter;
  };

  once(event: "SellOrderBought", cb: Callback<SellOrderBought>): void;
  once(
    event: "SellOrderBought",
    options: EventOptions,
    cb: Callback<SellOrderBought>
  ): void;

  once(event: "SellOrderCancelled", cb: Callback<SellOrderCancelled>): void;
  once(
    event: "SellOrderCancelled",
    options: EventOptions,
    cb: Callback<SellOrderCancelled>
  ): void;

  once(event: "SellOrderPosted", cb: Callback<SellOrderPosted>): void;
  once(
    event: "SellOrderPosted",
    options: EventOptions,
    cb: Callback<SellOrderPosted>
  ): void;
}
