import { TypedEvent } from '@node-projects/base-custom-webcomponent';
import { IService } from './IService.js';
export declare class BaseServiceContainer<NameMap> {
    protected _services: Map<string, IService[]>;
    servicesChanged: TypedEvent<{
        serviceName: keyof NameMap;
    }>;
    getLastService<K extends keyof NameMap>(service: K): NameMap[K];
    getServices<K extends keyof NameMap>(service: K): NameMap[K][];
    register<K extends keyof NameMap>(name: K, service: NameMap[K]): void;
    registerLast<K extends keyof NameMap>(name: K, service: NameMap[K]): void;
    registerMultiple<K extends keyof NameMap>(names: K[], service: NameMap[K]): void;
    forSomeServicesTillResult<K extends keyof NameMap, Y>(service: K, callback: (service: NameMap[K]) => Y): Y;
    getLastServiceWhere<K extends keyof NameMap, Y>(service: K, callback: (service: NameMap[K]) => Y): NameMap[K];
    getLastServiceResult<K extends keyof NameMap, Y>(service: K, callback: (service: NameMap[K]) => Y): Y;
    getLastServiceWhereAsync<K extends keyof NameMap, Y>(service: K, callback: (service: NameMap[K]) => Promise<Y>): Promise<NameMap[K]>;
}
