import GirafeSingleton from '../base/GirafeSingleton';
import LayerWms from '../models/layers/layerwms';
import ServerOgc from '../models/serverogc';
export default abstract class VendorSpecificOgcServerManager<OgcServerClient, OgcClientOptions> extends GirafeSingleton {
    protected readonly _clientClasses: Map<string, new (ogcServer: ServerOgc, options: OgcClientOptions) => OgcServerClient>;
    protected readonly _clients: Map<string, OgcServerClient>;
    abstract getClientId(ogcServer: ServerOgc): string;
    createClient(clientClass: new (os: ServerOgc, opt: OgcClientOptions) => OgcServerClient, ogcServer: ServerOgc): OgcServerClient;
    registerClientClass(type: string, clientClass: new (ogcServer: ServerOgc, opt: OgcClientOptions) => OgcServerClient): void;
    getClient(ogcServer: ServerOgc): OgcServerClient;
    getClient(layerWms: LayerWms): OgcServerClient;
}
