import { aws_codebuild, aws_codepipeline, aws_codepipeline_actions } from 'aws-cdk-lib';
import { Construct } from 'constructs';
export interface IPipelineS3SyncProps extends aws_codebuild.PipelineProjectProps {
    /**
     * The partial name of the bucket that this project will deploy to.
     * Wildcard will be added to the name, since S3 buckets created with cdk
     * may receive random identifiers appended to the end.
     * Usually corresponds with stack name.
     * Bucket may not exist at synth time since it could be created in the
     * same pipeline, so we use this to provide permissions.
     */
    readonly bucketNamePrefix: string;
    /**
     * SSM path for parameter with the full bucket name, fetched at runtime.
     */
    readonly bucketParamPath: string;
    /**
     * SSM path for parameter with the cloudFront ID, fetched at runtime.
     */
    readonly cloudFrontParamPath: string;
    /**
     * Artifact that contains the build which needs to be synced to the s3 bucket.
     * Presumably the output from a previous codebuild project or source action.
     */
    readonly inputBuildArtifact: aws_codepipeline.Artifact;
    /**
     * Subdirectory of files to sync. Optional; will sync everything by default.
     */
    readonly subdirectory?: string;
    /**
     * Whether or not to invalidate the cloudFront cache after pushing files.
     * Defaults to true.
     */
    readonly invalidateCache?: boolean;
    /**
     * If provided, files which match given patterns will be assigned the
     * specified content-type as they are uploaded to s3. By default,
     * Content-Type is set by S3 based on file extension.
     */
    readonly contentTypePatterns?: {
        /**
         * File path pattern to match on.
         */
        pattern: string;
        /**
         * MIME type to pass for matching files.
         */
        contentType: string;
    }[];
}
export declare class PipelineS3Sync extends Construct {
    readonly project: aws_codebuild.PipelineProject;
    readonly action: aws_codepipeline_actions.CodeBuildAction;
    constructor(scope: Construct, id: string, props: IPipelineS3SyncProps);
}
