/* @flow */ import type BigNumber from 'bn.js'; import type { IAdapter, Transaction, TransactionOptions, TransactionReceipt, } from '@colony/colony-js-adapter'; import type { Query } from '@colony/colony-js-contract-loader'; import ContractClient from '../classes/ContractClient'; import type { Params } from './params'; import type { Signers } from './signatures'; export type DefaultValues = { [inputName: string]: *, }; export type SendOptions = { estimate?: boolean, timeoutMs?: number, waitForMining?: boolean, } & TransactionOptions; export type ContractResponseMeta = { transaction: Transaction, receipt?: TransactionReceipt, receiptPromise?: Promise, }; export type ContractResponse = { successful?: boolean, successfulPromise?: Promise, eventData?: EventData | {}, eventDataPromise?: Promise, meta: ContractResponseMeta, }; export type ContractClientConstructorArgs = { adapter: IAdapter, query: ?Query, verbose: ?boolean, }; export type ValidateEmpty = ( outputValues: Object | null, inputValues: Object | null, ) => Promise; export type ContractMethodArgs = { client: IContractClient, functionName: string, name: string, input: Params, output?: Params, validateEmpty?: ValidateEmpty, defaultValues?: DefaultValues, }; export type ContractMethodSenderArgs = { defaultGasLimit?: BigNumber, } & ContractMethodArgs; export type GetRequiredSignees = (input: any) => Promise>; export type ContractMethodMultisigSenderArgs< IContractClient: ContractClient, > = { nonceFunctionName: string, nonceInput: Params, multisigFunctionName: string, getRequiredSignees: GetRequiredSignees, } & ContractMethodSenderArgs; export type ContractMethodDef = { client: IContractClient, functionName?: string, input: Params, output?: Params, }; export type MultisigOperationPayload = { data: string, destinationAddress: string, inputValues: InputValues, sourceAddress: string, value: number, }; export type MultisigOperationConstructorArgs = { payload: MultisigOperationPayload, signers?: Signers, nonce?: number, onReset?: Function, };