import { Observable } from 'rxjs';
import { AppContext } from '../data/app-context';
import { EnvironmentModuleEntryPoint, EnvironmentModuleEntryPointWithToolConditionResult } from '../manifest/environment-modules';
import { InventoryQueryCaches } from '../shared/inventory-query-caches';
import { Connection } from './connection';
/**
 * Tool Connection query class.
 * @dynamic
 */
export declare class ToolConnectionQuery {
    /**
     * Create an observable to determine the collection of tools to be applicable to the connection.
     *
     * @param appContext the application context.
     * @param caches the share inventory query caches.
     * @param connection the connection object.
     * @param solution the entry point object of the solution.
     */
    static queryToolsList(appContext: AppContext, caches: InventoryQueryCaches, connection: Connection, solution: EnvironmentModuleEntryPoint): Observable<EnvironmentModuleEntryPointWithToolConditionResult[]>;
    /**
     * Create an observable to determine the collection of settings to be applicable to the connection.
     *
     * @param appContext the application context.
     * @param caches the share inventory query caches.
     * @param connection the connection object.
     * @param solution the entry point object of the solution.
     */
    static querySettingsFormsList(appContext: AppContext, caches: InventoryQueryCaches, connection: Connection, solution: EnvironmentModuleEntryPoint): Observable<EnvironmentModuleEntryPointWithToolConditionResult[]>;
    /**
     * Create an observable to determine the collection of entry points to be applicable to the connection.
     *
     * @param appContext the application context.
     * @param caches the share inventory query caches.
     * @param connection the connection object.
     * @param solution the entry point object of the solution.
     * @param entryPoints the list of entry points.
     */
    static validateEntryPoints(appContext: AppContext, caches: InventoryQueryCaches, connection: Connection, solution: EnvironmentModuleEntryPoint, entryPoints: EnvironmentModuleEntryPoint[]): Observable<EnvironmentModuleEntryPointWithToolConditionResult[]>;
    /**
     * gets the list of tools available to the solution and connection
     * @param connection the connection
     * @param solution the solution
     */
    static getToolsList(connection: Connection, solution: EnvironmentModuleEntryPoint): EnvironmentModuleEntryPoint[];
    /**
     * get the list of settings forms available to the solution and connection
     * @param connection the connection
     * @param solution the solution
     */
    static getSettingsFormList(connection: Connection, solution: EnvironmentModuleEntryPoint): EnvironmentModuleEntryPoint[];
    /**
     * query for the list of a particular type of entry point
     * @param appContext the app context
     * @param caches the inventory query caches
     * @param connection the connection
     * @param solution the solution entry point.
     * @param entryPointTypes the type list of entry point we want to query.
     */
    private static queryEntryPointList;
    /**
     * query for the list of a particular type of entry point
     * @param appContext the app context
     * @param caches the inventory query caches
     * @param connection the connection
     * @param solution the solution entry point.
     * @param entryPointTypes the type list of entry point we want to query.
     */
    private static validateEntryPointList;
    private static checkToolRequirements;
}
