import { IStringDictionary } from "../../../../base/common/collections.js"; import { IProcessEnvironment } from "../../../../base/common/platform.js"; import { ConfigurationTarget } from "../../../../platform/configuration/common/configuration.js"; import { IWorkspaceFolderData } from "../../../../platform/workspace/common/workspace.js"; import { ConfigurationResolverExpression } from "./configurationResolverExpression.js"; export declare const IConfigurationResolverService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier; export interface IConfigurationResolverService { readonly _serviceBrand: undefined; /** Variables the resolver is able to resolve. */ readonly resolvableVariables: ReadonlySet; resolveWithEnvironment(environment: IProcessEnvironment, folder: IWorkspaceFolderData | undefined, value: string): Promise; /** * Recursively resolves all variables in the given config and returns a copy of it with substituted values. * Command variables are only substituted if a "commandValueMapping" dictionary is given and if it contains an entry for the command. */ resolveAsync(folder: IWorkspaceFolderData | undefined, config: T): Promise ? R : T>; /** * Recursively resolves all variables (including commands and user input) in the given config and returns a copy of it with substituted values. * If a "variables" dictionary (with names -> command ids) is given, command variables are first mapped through it before being resolved. * * @param section For example, 'tasks' or 'debug'. Used for resolving inputs. * @param variables Aliases for commands. */ resolveWithInteractionReplace(folder: IWorkspaceFolderData | undefined, config: unknown, section?: string, variables?: IStringDictionary, target?: ConfigurationTarget): Promise; /** * Similar to resolveWithInteractionReplace, except without the replace. Returns a map of variables and their resolution. * Keys in the map will be of the format input:variableName or command:variableName. */ resolveWithInteraction(folder: IWorkspaceFolderData | undefined, config: unknown, section?: string, variables?: IStringDictionary, target?: ConfigurationTarget): Promise | undefined>; /** * Contributes a variable that can be resolved later. Consumers that use resolveAny, resolveWithInteraction, * and resolveWithInteractionReplace will have contributed variables resolved. */ contributeVariable(variable: string, resolution: () => Promise): void; }