import { Indexed, Interface } from './interface'; import { BigNumber } from '../utils/bignumber'; import { Provider } from '../providers/abstract-provider'; import { Signer } from '../wallet/abstract-signer'; import { ParamType } from '../utils/abi-coder'; import { Block, Listener, Log, TransactionReceipt, TransactionRequest, TransactionResponse } from '../providers/abstract-provider'; export declare type ContractFunction = (...params: Array) => Promise; export declare type EventFilter = { address?: string; topics?: Array; }; export interface Event extends Log { args: Array; decode: (data: string, topics?: Array) => any; event: string; eventSignature: string; removeListener: () => void; getBlock: () => Promise; getTransaction: () => Promise; getTransactionReceipt: () => Promise; } interface Bucket { [name: string]: T; } export declare class Contract { readonly address: string; readonly interface: Interface; readonly signer: Signer; readonly provider: Provider; readonly estimate: Bucket<(...params: Array) => Promise>; readonly functions: Bucket; readonly filters: Bucket<(...params: Array) => EventFilter>; readonly [name: string]: ContractFunction | any; readonly addressPromise: Promise; readonly deployTransaction: TransactionResponse; private _deployed; constructor(addressOrName: string, contractInterface: Array | string | Interface, signerOrProvider: Signer | Provider); deployed(): Promise; fallback(overrides?: TransactionRequest): Promise; connect(signerOrProvider: Signer | Provider): Contract; attach(addressOrName: string): Contract; deploy(bytecode: string, ...args: Array): Promise; static isIndexed(value: any): value is Indexed; private _events; private _getEventFilter; private _addEventListener; on(event: EventFilter | string, listener: Listener): Contract; once(event: EventFilter | string, listener: Listener): Contract; addEventLisener(eventName: EventFilter | string, listener: Listener): Contract; emit(eventName: EventFilter | string, ...args: Array): boolean; listenerCount(eventName?: EventFilter | string): number; listeners(eventName: EventFilter | string): Array; removeAllListeners(eventName: EventFilter | string): Contract; removeListener(eventName: any, listener: Listener): Contract; } export {};