/** @module connect */
import { ConnectionParams } from './ConnectionParams';
/**
 * Interface for discovery services which are used to store and resolve connection parameters
 * to connect to external services.
 *
 * @see [[ConnectionParams]]
 * @see [[CredentialParams]]
 */
export interface IDiscovery {
    /**
     * Registers connection parameters into the discovery service.
     *
     * @param correlationId     (optional) transaction id to trace execution through call chain.
     * @param key               a key to uniquely identify the connection parameters.
     * @param credential        a connection to be registered.
     * @param callback 			callback function that receives a registered connection or error.
     */
    register(correlationId: string, key: string, connection: ConnectionParams, callback: (err: any, result: ConnectionParams) => void): void;
    /**
     * Resolves a single connection parameters by its key.
     *
     * @param correlationId     (optional) transaction id to trace execution through call chain.
     * @param key               a key to uniquely identify the connection.
     * @param callback          callback function that receives found connection or error.
     */
    resolveOne(correlationId: string, key: string, callback: (err: any, result: ConnectionParams) => void): void;
    /**
     * Resolves all connection parameters by their key.
     *
     * @param correlationId     (optional) transaction id to trace execution through call chain.
     * @param key               a key to uniquely identify the connections.
     * @param callback          callback function that receives found connections or error.
     */
    resolveAll(correlationId: string, key: string, callback: (err: any, result: ConnectionParams[]) => void): void;
}
