import { AbstractService } from './abstract-service';
import { ServiceCallType } from './definitions';
import { ServiceCallRunner } from './service-call-runner';
/**
 * This class will be augmented when importing specific service
 * For example:
 * ```typescript
 * const container: ServiceContainer;
 * expect(container.interface).to.be.undefined;
 * import '@iotize/tap/service/interface';
 * expect(container.interface).to.be.not.undefined;
 *
 * ```
 */
export declare class ServiceContainer {
    readonly serviceCallRunner: ServiceCallRunner;
    constructor(serviceCallRunner: ServiceCallRunner);
    /**
     * List loaded services
     */
    services(): AbstractService[];
    servicesMap(): Record<string, AbstractService>;
    /**
     * List all loaded resources
     */
    resources(): ServiceCallType[];
}
export declare function extendServiceContainer<T extends AbstractService>(attrName: string, serviceConstructor: new (serviceCallRunner: ServiceCallRunner) => T): any;
