import { SourceRegistry } from "./SourceRegistry";
import { ConnectionManager } from "./ConnectionManager";
import { Session } from "./Session";
import { LocalizationManager } from "./LocalizationManager";
export interface CatalogRegistrator {
    /**
     * Loads services for the specified source ids. Handles duplicate registrations and
     * reuses already registered services.
     *
     * Returns the registered sourceId.
     *
     * @param {string} sourceId
     * @param {SourceRegistry} registry
     * @param {ConnectionManager} connectionManager
     * @param {LocalizationManager} localizationManager
     * @returns {Promise<string>}
     */
    loadCatalog(sourceId: string, registry: SourceRegistry, connectionManager: ConnectionManager, localizationManager: LocalizationManager): Promise<string>;
    /**
     * Loads services for the specified source ids. Handles duplicate registrations and
     * reuses already registered services.
     *
     * Returns the registered ids in the same order as the source ids.
     *
     * @param {string[]} sourceIds
     * @param {SourceRegistry} registry
     * @param {ConnectionManager} connectionManager
     * @returns {Promise<string[]>}
     */
    loadCatalogs(sourceIds: string[], registry: SourceRegistry, connectionManager: ConnectionManager, localizationManager: LocalizationManager): Promise<string[]>;
    /**
     * Loads services for the specified source ids. Handles duplicate registrations and
     * reuses already registered services.
     *
     * Returns the registered ids in the same order as the source ids.
     *
     * @param {string[]} catalogs
     * @param {Session} session
     * @returns {Promise<string[]>}
     */
    addCatalogsToSession(catalogs: string[], session: Session): Promise<string[]>;
    /**
     * Loads services for the specified source id. Handles duplicate registrations and
     * reuses already registered services.
     *
     * Returns the registered sourceId.
     *
     * @param {string[]} catalogs
     * @param {Session} session
     * @returns {Promise<string[]>}
     */
    addCatalogToSession(catalog: string, session: Session): Promise<string>;
}
