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

import Contract, { CustomOptions, contractOptions } from "web3/eth/contract";
import { TransactionObject, BlockType } from "web3/eth/types";
import { Callback, EventLog } from "web3/types";
import { EventEmitter } from "events";
import { Provider } from "web3/providers";

export class IIsolationModeWrapperTrader {
  constructor(jsonInterface: any[], address?: string, options?: CustomOptions);
  _address: string;
  options: contractOptions;
  methods: {
    getExchangeCost(
      _makerToken: string,
      _takerToken: string,
      _desiredMakerToken: number | string,
      _orderData: (string | number[])[]
    ): TransactionObject<string>;

    isValidInputToken(_inputToken: string): TransactionObject<boolean>;

    createActionsForWrapping(_params: {
      primaryAccountId: number | string;
      otherAccountId: number | string;
      primaryAccountOwner: string;
      primaryAccountNumber: number | string;
      otherAccountOwner: string;
      otherAccountNumber: number | string;
      outputMarket: number | string;
      inputMarket: number | string;
      minOutputAmount: number | string;
      inputAmount: number | string;
      orderData: (string | number[])[];
    }): TransactionObject<
      {
        actionType: string;
        accountId: string;
        amount: {
          sign: boolean;
          denomination: string;
          ref: string;
          value: string;
        };
        primaryMarketId: string;
        secondaryMarketId: string;
        otherAddress: string;
        otherAccountId: string;
        data: string[];
      }[]
    >;

    exchange(
      _tradeOriginator: string,
      _receiver: string,
      _makerToken: string,
      _takerToken: string,
      _requestedFillAmount: number | string,
      _orderData: (string | number[])[]
    ): TransactionObject<string>;

    token(): TransactionObject<string>;
    actionsLength(): TransactionObject<string>;
  };
  deploy(options: {
    data: string;
    arguments: any[];
  }): TransactionObject<Contract>;
  events: {
    allEvents: (
      options?: {
        filter?: object;
        fromBlock?: BlockType;
        topics?: (null | string)[];
      },
      cb?: Callback<EventLog>
    ) => EventEmitter;
  };
  getPastEvents(
    event: string,
    options?: {
      filter?: object;
      fromBlock?: BlockType;
      toBlock?: BlockType;
      topics?: (null | string)[];
    },
    cb?: Callback<EventLog[]>
  ): Promise<EventLog[]>;
  setProvider(provider: Provider): void;
  clone(): IIsolationModeWrapperTrader;
}
