/// <reference types="node" />
import { ConsumerExtInfo, Introspection, ObjectDescription, ReplyPackage, Selector } from '../types';
import { DefaultObjectProxy } from './DefaultObjectProxy';
import { ProviderManager } from './ProviderManager';
import EventEmitter = require('events');
export declare class ObjectConsumer extends EventEmitter {
    objectDescription: ObjectDescription;
    private hubClient;
    private providerManager;
    private objectProxy;
    private timeout;
    constructor(objectDescription: ObjectDescription, hubClient: any, providerManager: ProviderManager, extInfo?: ConsumerExtInfo);
    /**
     * Invoke a method from Remote Object
     * @param {string} method
     * @param {any[]} params
     * @return {Promise<any>}
     */
    invoke(method: string, params: any[]): Promise<any>;
    /**
     * Invoke a method from Remote Object
     * @param {string} method
     * @param {any[]} params
     * @return {Promise<any>}
     */
    multipleInvoke(method: string, params: any[], selectors?: Selector): Promise<ReplyPackage[]>;
    /**
     * Get a property from Remote Object
     * @param {string} name
     * @return {Promise<any>}
     */
    getProperty(name: string): Promise<any>;
    private subscriberPublished;
    subscribe(register: string, fn: any): Promise<any>;
    unsubscribe(register: string, fn?: any): Promise<any>;
    /**
     * Get Introspection from Remote Object
     * @return {Promise<Introspection>}
     */
    introspect(): Promise<Introspection>;
    /**
     * Get Object Proxy
     * @return {Promise<T & DefaultObjectProxy>}
     */
    getProxy<T extends any>(): Promise<T & DefaultObjectProxy>;
}
//# sourceMappingURL=ObjectConsumer.d.ts.map