/* Generated by ts-generator ver. 0.0.8 */
/* tslint:disable */

import BN from "bn.js";
import { Contract, ContractOptions } from "web3-eth-contract";
import { EventLog } from "web3-core";
import { EventEmitter } from "events";
import { ContractEvent, Callback, TransactionObject, BlockType } from "./types";

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

export class BatchExchangeViewer extends Contract {
  constructor(
    jsonInterface: any[],
    address?: string,
    options?: ContractOptions
  );
  clone(): BatchExchangeViewer;
  methods: {
    INDEXED_AUCTION_ELEMENT_WIDTH(): TransactionObject<string>;

    ADDRESS_WIDTH(): TransactionObject<string>;

    LARGE_PAGE_SIZE(): TransactionObject<string>;

    AUCTION_ELEMENT_WIDTH(): TransactionObject<string>;

    ALL_TOKEN_FILTER(arg0: number | string): TransactionObject<string>;

    getOpenOrderBook(tokenFilter: string[]): TransactionObject<string>;

    getOpenOrderBookPaginated(
      tokenFilter: string[],
      previousPageUser: string,
      previousPageUserOffset: number | string,
      maxPageSize: number | string
    ): TransactionObject<{
      elements: string;
      hasNextPage: boolean;
      nextPageUser: string;
      nextPageUserOffset: string;
      0: string;
      1: boolean;
      2: string;
      3: string;
    }>;

    getFinalizedOrderBook(tokenFilter: string[]): TransactionObject<string>;

    getFinalizedOrderBookPaginated(
      tokenFilter: string[],
      previousPageUser: string,
      previousPageUserOffset: number | string,
      maxPageSize: number | string
    ): TransactionObject<{
      elements: string;
      hasNextPage: boolean;
      nextPageUser: string;
      nextPageUserOffset: string;
      0: string;
      1: boolean;
      2: string;
      3: string;
    }>;

    getFilteredOrdersPaginated(
      batchIds: (number | string)[],
      tokenFilter: (number | string)[],
      previousPageUser: string,
      previousPageUserOffset: number | string,
      maxPageSize: number | string
    ): TransactionObject<{
      elements: string;
      hasNextPage: boolean;
      nextPageUser: string;
      nextPageUserOffset: string;
      0: string;
      1: boolean;
      2: string;
      3: string;
    }>;

    getEncodedOrdersPaginated(
      previousPageUser: string,
      previousPageUserOffset: number | string,
      pageSize: number | string
    ): TransactionObject<string>;

    getEncodedOrdersPaginatedWithTokenFilter(
      tokenFilter: (number | string)[],
      previousPageUser: string,
      previousPageUserOffset: number | string,
      pageSize: number | string
    ): TransactionObject<string>;

    writeEncodedOrdersPaginatedWithTokenFilter(
      tokenFilter: (number | string)[],
      previousPageUser: string,
      previousPageUserOffset: number | string,
      elements: string | number[]
    ): TransactionObject<string>;

    matchesTokenFilter(
      buyToken: number | string,
      sellToken: number | string,
      filter: (number | string)[]
    ): TransactionObject<boolean>;

    getUser(element: string | number[]): TransactionObject<string>;

    getSellTokenBalance(element: string | number[]): TransactionObject<string>;

    updateSellTokenBalance(
      element: string | number[],
      amount: number | string
    ): TransactionObject<string>;

    getBuyToken(element: string | number[]): TransactionObject<string>;

    getSellToken(element: string | number[]): TransactionObject<string>;

    getValidFrom(element: string | number[]): TransactionObject<string>;

    getValidUntil(element: string | number[]): TransactionObject<string>;

    getTokenIdsFromAdresses(tokenIds: string[]): TransactionObject<string[]>;

    updateSellTokenBalanceForBatchId(
      element: string | number[],
      targetBatchIndex: number | string
    ): TransactionObject<string>;

    setLength(
      buffer: string | number[],
      length: number | string
    ): TransactionObject<void>;

    copyInPlace(
      source: string | number[],
      destination: string | number[],
      offset: number | string
    ): TransactionObject<void>;
  };
  events: {
    allEvents: (
      options?: EventOptions,
      cb?: Callback<EventLog>
    ) => EventEmitter;
  };
}
