import { Observable } from 'zen-observable-ts';
import { Environment } from '../environment/Environment';
import { TransactionArgs } from './transactionFactory';
export declare type PrepareCallArgsFunction = (environment: Environment, params: any, contractAddress?: any) => TransactionArgs;
export declare type PostProcessCallFunction = (environment: Environment, result: any, prepared?: any) => any;
export interface Processors {
    prepareArgs?: PrepareCallArgsFunction;
    postProcess?: PostProcessCallFunction;
}
declare const callFactory: (name: any, contract: any, processors?: Processors) => {
    (environment: any, contractAddress: any, params?: {}): Promise<any>;
    prepare: (environment: any, contractAddress: any, params?: {}) => {
        contractAddress: any;
        params: {};
        txObject: any;
    };
    call: (environment: any, prepared: any) => Promise<any>;
    observable: (environment: any, contractAddress: any, params: any) => Observable<{}>;
};
declare const callFactoryWithoutParams: (name: any, contract: any, processors?: any) => {
    (environment: any, contractAddress: any): Promise<any>;
    prepare: (environment: any, contractAddress: any) => {
        contractAddress: any;
        params: {};
        txObject: any;
    };
    call: (environment: any, prepared: any) => Promise<any>;
    observable: (environment: any, contractAddress: any) => Observable<{}>;
};
export { callFactory, callFactoryWithoutParams };
