import { ApiTypes, DecorateMethod, ObsInnerType } from "../../api/types"; import { AccountId, Address } from "../../types/interfaces"; import { IKeyringPair } from "../../types/types"; import { ApiObject, ContractABIPre, ContractCallOutcome } from '../types'; import BN from 'bn.js'; import { Observable } from 'rxjs'; import { SubmittableResult } from "../../api"; import Abi from '../Abi'; import { BaseWithTxAndRpcCall } from './util'; declare type ContractCallTypes = 'tx' | 'rpc'; declare type ContractCallResultSubscription = ApiType extends 'rxjs' ? Observable> : Promise>>; export interface ContractCall { send(account: IKeyringPair | string | AccountId | Address): ContractCallResultSubscription; } export declare type ContractCallResult = CallType extends 'rpc' ? Observable : Observable; export default class Contract extends BaseWithTxAndRpcCall { readonly address: Address; call(as: 'rpc', message: string, value: BN | number, gasLimit: BN | number, ...params: any[]): ContractCall; call(as: 'tx', message: string, value: BN | number, gasLimit: BN | number, ...params: any[]): ContractCall; private createOutcome; constructor(api: ApiObject, abi: ContractABIPre | Abi, decorateMethod: DecorateMethod, address: string | AccountId | Address); } export {};