import type { AssemblyDirectoryProps, AssemblySourceProps, ICloudAssemblySource } from '../';
import type { AssemblyBuilder, FromCdkAppOptions } from '../source-builder';
export declare abstract class CloudAssemblySourceBuilder {
    /**
     * Create a Cloud Assembly from a Cloud Assembly builder function.
     *
     * The output directory will be evaluated with respect to the working
     * directory if relative. If not given, it will synthesize into a temporary
     * system directory. The temporary directory will be cleaned up, unless
     * `disposeOutdir: false`.
     *
     * A write lock will be acquired on the output directory for the duration of
     * the CDK app synthesis (which means that no two apps can synthesize at the
     * same time), and after synthesis a read lock will be acquired on the
     * directory. This means that while the CloudAssembly is being used, no CDK
     * app synthesis can take place into that directory.
     *
     * @param builder - the builder function
     * @param props - additional configuration properties
     * @returns the CloudAssembly source
     */
    fromAssemblyBuilder(builder: AssemblyBuilder, props?: AssemblySourceProps): Promise<ICloudAssemblySource>;
    /**
     * Creates a Cloud Assembly from an existing assembly directory.
     *
     * A read lock will be acquired for the directory. This means that while
     * the CloudAssembly is being used, no CDK app synthesis can take place into
     * that directory.
     *
     * @param directory - directory the directory of a already produced Cloud Assembly.
     * @returns the CloudAssembly source
     */
    fromAssemblyDirectory(directory: string, props?: AssemblyDirectoryProps): Promise<ICloudAssemblySource>;
    /**
     * Use a directory containing an AWS CDK app as source.
     *
     * The output directory will be evaluated with respect to the working
     * directory if relative. If not given, it will synthesize into a `cdk.out`
     * subdirectory. This directory will not be cleaned up, unless
     * `disposeOutdir: true`.
     *
     * A write lock will be acquired on the output directory for the duration of
     * the CDK app synthesis (which means that no two apps can synthesize at the
     * same time), and after synthesis a read lock will be acquired on the
     * directory.  This means that while the CloudAssembly is being used, no CDK
     * app synthesis can take place into that directory.
     *
     * @param props - additional configuration properties
     * @returns the CloudAssembly source
     */
    fromCdkApp(app: string, props?: FromCdkAppOptions): Promise<ICloudAssemblySource>;
}
