import { Scope } from "@iyio/common";
import { PromiseResultTypeVoid } from "../result-type.js";
import { ConvoDb, ConvoDbConnectionStringHandler, ConvoDbFactory, ConvoDbMap } from "./convo-db-types.js";
export interface ConvoDbInstanceMapOptions {
    dbMap?: ConvoDbMap;
    /**
     * Used to lazy initialize a db instance map
     */
    lazyInit?: (inst: ConvoDbInstanceMap) => void | Promise<void>;
    scope?: Scope;
    importMap?: Record<string, string>;
    enabledDynamicImports?: boolean;
}
export declare class ConvoDbInstanceMap {
    readonly dbMap: ConvoDbMap;
    private readonly cache;
    /**
     * Used to lazy initialize a db instance map. Will be called the first time getDbAsync is called
     * before creating any db instances.
     */
    private lazyInit?;
    private scope?;
    private connectionStringHandlers;
    readonly importMap: Record<string, string>;
    enabledDynamicImports: boolean;
    constructor({ dbMap, importMap, enabledDynamicImports, lazyInit, }?: ConvoDbInstanceMapOptions);
    private initPromise?;
    private initAsync;
    getDbAsync(name: string): Promise<ConvoDb | undefined>;
    registerStringConnector(type: string, factory: ConvoDbFactory): void;
    registerStringConnector(handler: ConvoDbConnectionStringHandler): void;
    addFactoryUsingConnectionStringAsync(connectionString: string): PromiseResultTypeVoid;
    private getDynamicAsync;
}
