import { FacadeSetupOptions, Location, ObjectDescription, ConsumerExtInfo } from './domain';
import { HubClient } from './hub/HubClient';
import { ProviderManager } from './object-proxying/ProviderManager';
import { ConsumerManager } from './object-proxying/ConsumerManager';
import { ObjectConsumer } from './object-proxying/ObjectConsumer';
import { DefaultObjectProxy } from './object-proxying/DefaultObjectProxy';
import { ConfigManager } from './config-manager/ConfigManager';
import { ConfigClient } from './config-manager/ConfigClient';
export declare class HubFacade {
    location: Location;
    hubClient: HubClient;
    logger: any;
    providerManager: ProviderManager;
    consumerManager: ConsumerManager;
    configManager: ConfigManager;
    configClient: ConfigClient;
    setup(options: FacadeSetupOptions): void;
    /**
     * Start Client
     * @return {Promise<void>}
     */
    start(): Promise<void>;
    /**
     * Stop Client
     * @return {Promise<void>}
     */
    stop(): Promise<void>;
    /**
     * Get HubClient
     * @return {HubClient}
     */
    getHubClient(): HubClient;
    /**
     * Get ProviderManager
     * @return {ProviderManager}
     */
    getProviderManager(): ProviderManager;
    /**
     * Get ConsumerManager
     * @return {ConsumerManager}
     */
    getConsumerManager(): ConsumerManager;
    /**
     * Publish an Object to Hub
     * @param impl
     * @param {ObjectDescription} objectDescription
     * @return {Promise<void>}
     */
    publish(impl: any, objectDescription?: ObjectDescription): Promise<void>;
    /**
     * Get a Consumer by an ObjectDescription
     * @param {ObjectDescription} objectDescription
     * @param {ConsumerExtInfo} extInfo
     * @return {ObjectConsumer}
     */
    getConsumer(objectDescription: ObjectDescription, extInfo?: ConsumerExtInfo): ObjectConsumer;
    /**
     * Get an Object Proxy by an ObjectDescription for Remote Object
     * @param {ObjectDescription} objectDescription
     * @param {ConsumerExtInfo} extInfo
     * @return {Promise<T & DefaultObjectProxy>}
     */
    getProxy<T extends any>(objectDescription: ObjectDescription, extInfo?: ConsumerExtInfo): Promise<T & DefaultObjectProxy>;
    initConfigManager(): Promise<void>;
    initConfigClient(): Promise<void>;
    getConfigManager(): ConfigManager;
    getConfigClient(): ConfigClient;
}
