import { Construct } from './core/construct';
/**
 * Base class for the model side of context providers
 *
 * Instances of this class communicate with context provider plugins in the 'cdk
 * toolkit' via context variables (input), outputting specialized queries for
 * more context variables (output).
 *
 * ContextProvider needs access to a Construct to hook into the context mechanism.
 */
export declare class ContextProvider {
    private context;
    private readonly stack;
    constructor(context: Construct);
    /**
     * Read a provider value, verifying it's a string
     * @param provider The name of the context provider
     * @param scope The scope (e.g. account/region) for the value
     * @param args Any arguments
     * @param defaultValue The value to return if there is no value defined for this context key
     */
    getStringValue(provider: string, scope: undefined | string[], args: string[], defaultValue: string): string;
    /**
     * Read a provider value, verifying it's a list
     * @param provider The name of the context provider
     * @param scope The scope (e.g. account/region) for the value
     * @param args Any arguments
     * @param defaultValue The value to return if there is no value defined for this context key
     */
    getStringListValue(provider: string, scope: undefined | string[], args: string[], defaultValue: string[]): string[];
    /**
     * Helper function to wrap up account and region into a scope tuple
     */
    accountRegionScope(providerDescription: string): undefined | string[];
}
/**
 * Context provider that will return the availability zones for the current account and region
 */
export declare class AvailabilityZoneProvider {
    private provider;
    constructor(context: Construct);
    /**
     * Return the list of AZs for the current account and region
     */
    readonly availabilityZones: string[];
}
/**
 * Context provider that will read values from the SSM parameter store in the indicated account and region
 */
export declare class SSMParameterProvider {
    private provider;
    constructor(context: Construct);
    /**
     * Return the SSM parameter string with the indicated key
     */
    getString(parameterName: string): any;
}
