import { ConfiguredInput } from "./configurationResolver.js";
export type Replacement = {
    id: string;
    inner: string;
    name: string;
    arg?: string;
};
interface IConfigurationResolverExpression<T> {
    unresolved(): Iterable<Replacement>;
    resolved(): Iterable<[
        Replacement,
        IResolvedValue
    ]>;
    resolve(replacement: Replacement, data: string | IResolvedValue): void;
    toObject(): T;
}
export interface IResolvedValue {
    value: string | undefined;
    input?: ConfiguredInput;
}
export declare class ConfigurationResolverExpression<T> implements IConfigurationResolverExpression<T> {
    static readonly VARIABLE_LHS = "${";
    private locations;
    private root;
    private stringRoot;
    private constructor();
    static parse<T>(object: T): ConfigurationResolverExpression<T>;
    private applyPlatformSpecificKeys;
    private parseVariable;
    private parseObject;
    private parseString;
    unresolved(): Iterable<Replacement>;
    resolved(): Iterable<[
        Replacement,
        IResolvedValue
    ]>;
    resolve(replacement: Replacement, data: string | IResolvedValue): void;
    toObject(): T;
}
export {};
