/* 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 PartiallyDelayedMultiSig {
  constructor(jsonInterface: any[], address?: string, options?: CustomOptions);
  _address: string;
  options: contractOptions;
  methods: {
    confirmationTimes(arg0: number | string): TransactionObject<string>;

    confirmations(
      arg0: number | string,
      arg1: string
    ): TransactionObject<boolean>;

    getConfirmationCount(
      transactionId: number | string
    ): TransactionObject<string>;

    getConfirmations(
      transactionId: number | string
    ): TransactionObject<string[]>;

    getTransactionCount(
      pending: boolean,
      executed: boolean
    ): TransactionObject<string>;

    getTransactionIds(
      from: number | string,
      to: number | string,
      pending: boolean,
      executed: boolean
    ): TransactionObject<string[]>;

    instantData(
      arg0: string,
      arg1: string | number[]
    ): TransactionObject<boolean>;

    isConfirmed(transactionId: number | string): TransactionObject<boolean>;

    isOwner(arg0: string): TransactionObject<boolean>;

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

    transactions(
      arg0: number | string
    ): TransactionObject<{
      destination: string;
      value: string;
      data: string[];
      executed: boolean;
      0: string;
      1: string;
      2: string[];
      3: boolean;
    }>;

    addOwner(owner: string): TransactionObject<void>;

    changeRequirement(_required: number | string): TransactionObject<void>;

    changeTimeLock(
      _secondsTimeLocked: number | string
    ): TransactionObject<void>;

    confirmTransaction(transactionId: number | string): TransactionObject<void>;

    executeMultipleTransactions(
      transactionIds: (number | string)[]
    ): TransactionObject<void>;

    executeTransaction(transactionId: number | string): TransactionObject<void>;

    removeOwner(owner: string): TransactionObject<void>;

    replaceOwner(owner: string, newOwner: string): TransactionObject<void>;

    revokeConfirmation(transactionId: number | string): TransactionObject<void>;

    submitTransaction(
      destination: string,
      value: number | string,
      data: (string | number[])[]
    ): TransactionObject<string>;

    setSelector(
      destination: string,
      selector: string | number[],
      approved: boolean
    ): TransactionObject<void>;

    MAX_OWNER_COUNT(): TransactionObject<string>;
    getOwners(): TransactionObject<string[]>;
    required(): TransactionObject<string>;
    secondsTimeLocked(): TransactionObject<string>;
    transactionCount(): TransactionObject<string>;
  };
  deploy(options: {
    data: string;
    arguments: any[];
  }): TransactionObject<Contract>;
  events: {
    Confirmation(
      options?: {
        filter?: object;
        fromBlock?: BlockType;
        topics?: (null | string)[];
      },
      cb?: Callback<EventLog>
    ): EventEmitter;

    ConfirmationTimeSet(
      options?: {
        filter?: object;
        fromBlock?: BlockType;
        topics?: (null | string)[];
      },
      cb?: Callback<EventLog>
    ): EventEmitter;

    Execution(
      options?: {
        filter?: object;
        fromBlock?: BlockType;
        topics?: (null | string)[];
      },
      cb?: Callback<EventLog>
    ): EventEmitter;

    ExecutionFailure(
      options?: {
        filter?: object;
        fromBlock?: BlockType;
        topics?: (null | string)[];
      },
      cb?: Callback<EventLog>
    ): EventEmitter;

    OwnerAddition(
      options?: {
        filter?: object;
        fromBlock?: BlockType;
        topics?: (null | string)[];
      },
      cb?: Callback<EventLog>
    ): EventEmitter;

    OwnerRemoval(
      options?: {
        filter?: object;
        fromBlock?: BlockType;
        topics?: (null | string)[];
      },
      cb?: Callback<EventLog>
    ): EventEmitter;

    RequirementChange(
      options?: {
        filter?: object;
        fromBlock?: BlockType;
        topics?: (null | string)[];
      },
      cb?: Callback<EventLog>
    ): EventEmitter;

    Revocation(
      options?: {
        filter?: object;
        fromBlock?: BlockType;
        topics?: (null | string)[];
      },
      cb?: Callback<EventLog>
    ): EventEmitter;

    SelectorSet(
      options?: {
        filter?: object;
        fromBlock?: BlockType;
        topics?: (null | string)[];
      },
      cb?: Callback<EventLog>
    ): EventEmitter;

    Submission(
      options?: {
        filter?: object;
        fromBlock?: BlockType;
        topics?: (null | string)[];
      },
      cb?: Callback<EventLog>
    ): EventEmitter;

    TimeLockChange(
      options?: {
        filter?: object;
        fromBlock?: BlockType;
        topics?: (null | string)[];
      },
      cb?: Callback<EventLog>
    ): EventEmitter;

    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(): PartiallyDelayedMultiSig;
}
