import { Step } from './step';
/**
 * (experimental) A set of files traveling through the deployment pipeline.
 *
 * Individual steps in the pipeline produce or consume
 * `FileSet`s.
 *
 * @experimental
 */
export declare class FileSet implements IFileSetProducer {
    /** Human-readable descriptor for this file set (does not need to be unique) */
    readonly id: string;
    /**
     * (experimental) The primary output of a file set producer.
     *
     * The primary output of a FileSet is itself.
     *
     * @experimental
     */
    readonly primaryOutput?: FileSet;
    private _producer?;
    /**
     * @param id Human-readable descriptor for this file set (does not need to be unique).
     * @experimental
     */
    constructor(
    /** Human-readable descriptor for this file set (does not need to be unique) */
    id: string, producer?: Step);
    /**
     * (experimental) The Step that produces this FileSet.
     *
     * @experimental
     */
    get producer(): Step;
    /**
     * (experimental) Mark the given Step as the producer for this FileSet.
     *
     * This method can only be called once.
     *
     * @experimental
     */
    producedBy(producer?: Step): void;
    /**
     * (experimental) Return a string representation of this FileSet.
     *
     * @experimental
     */
    toString(): string;
}
/**
 * (experimental) Any class that produces, or is itself, a `FileSet`.
 *
 * Steps implicitly produce a primary FileSet as an output.
 *
 * @experimental
 */
export interface IFileSetProducer {
    /**
     * (experimental) The `FileSet` produced by this file set producer.
     *
     * @default - This producer doesn't produce any file set
     * @experimental
     */
    readonly primaryOutput?: FileSet;
}
