import type { ToolkitServices } from '../../../toolkit/private';
import { type Context } from '../../context';
import type { ICloudAssemblySource, IReadableCloudAssembly } from '../types';
export interface ContextAwareCloudAssemblyProps {
    /**
     * AWS object (used by contextprovider)
     * @deprecated context should be moved to the toolkit itself
     */
    readonly services: ToolkitServices;
    /**
     * Application context
     */
    readonly context: Context;
    /**
     * The file used to store application context in (relative to cwd).
     *
     * @default "cdk.context.json"
     */
    readonly contextFile?: string;
    /**
     * Enable context lookups.
     *
     * Producing a `cxapi.CloudAssembly` will fail if this is disabled and context lookups need to be performed.
     *
     * @default true
     */
    readonly lookups?: boolean;
}
/**
 * A CloudAssemblySource that wraps another CloudAssemblySource and runs a lookup loop on it
 *
 * This means that if the underlying CloudAssemblySource produces a manifest
 * with provider queries in it, the `ContextAwareCloudAssemblySource` will
 * perform the necessary context lookups and invoke the underlying
 * `CloudAssemblySource` again with thew missing context information.
 *
 * This is only useful if the underlying `CloudAssemblySource` can respond to
 * this new context information (it must be a CDK app source); if it is just a
 * static directory, then the contents of the assembly won't change in response
 * to context.
 *
 * The context is passed between `ContextAwareCloudAssemblySource` and the wrapped
 * cloud assembly source via a contex file on disk, so the wrapped assembly source
 * should re-read the context file on every invocation.
 */
export declare class ContextAwareCloudAssemblySource implements ICloudAssemblySource {
    private readonly source;
    private readonly props;
    private canLookup;
    private context;
    private contextFile;
    private ioHelper;
    constructor(source: ICloudAssemblySource, props: ContextAwareCloudAssemblyProps);
    /**
     * Produce a Cloud Assembly, i.e. a set of stacks
     */
    produce(): Promise<IReadableCloudAssembly>;
}
