import { Observable } from 'rxjs'; import { AppContext } from '../data/app-context'; import { EnvironmentModuleEntryPoint, EnvironmentModuleEntryPointWithToolConditionResult } from '../manifest/environment-modules'; import { Connection } from '../security/connection'; import { InventoryQueryCaches } from '../shared/inventory-query-caches'; /** * The calculation weight ratio base on performance. */ export declare const enum ToolConditionWeight { /** * Not using any observable calculation. */ NonObservable = 0, /** * Using the connection property. */ Property = 1, /** * Using the gateway inventory data. */ Gateway = 2, /** * Using the server inventory data. */ Server = 3, /** * Using a custom PowerShell script. */ Script = 4 } /** * The condition result with weight information. */ export interface ToolConditionResultWithWeight { /** * The calculation weight. */ weight: ToolConditionWeight; /** * The result data. */ result: Observable | EnvironmentModuleEntryPointWithToolConditionResult; } /** * The class handles conditions of tools to be presented on tools' menu. * @dynamic */ export declare class ToolConditionValidator { private appContext; /** * Support the following condition name. * It can be a string, number, boolean and version string. */ private static serverInventoryProperties; /** * The following operators are supported. * String comparison uses caseinsesitive pattern. */ private static operators; private static internalCurrent; private caches; private toolInventoryCache; private errorStrings; /** * Gets the current object of the ToolConditionValidator class, and maintains as singleton. * * @param appContext the application context. * @param caches the instance of the inventory query caches to share the resource. */ static current(appContext: AppContext, caches: InventoryQueryCaches): ToolConditionValidator; /** * Initializes a new instance of the ToolConditionValidator class. * * @param appContext the application context. * @param caches the instance of the inventory query caches to share the resource. */ constructor(appContext: AppContext, caches: InventoryQueryCaches); /** * Scan the tool condition to be present or not. * * @param connection the connection object. * @param solution The entry point object of solution. * @param tool The entry point object of tool. * @param scanMode The mode of scanning. * @return the result observable. */ scanToolCondition(connection: Connection, solution: EnvironmentModuleEntryPoint, tool: EnvironmentModuleEntryPoint): ToolConditionResultWithWeight; private runChecker; private localhostValidate; private installationTypeValidate; private inventoryValidate; private propertyValidate; private toolInventoryValidate; private checkServerInventoryCondition; private checkCondition; private compareVersion; private getNumberOrZero; }