import codecommit = require('@aws-cdk/aws-codecommit');
import s3 = require('@aws-cdk/aws-s3');
import { cloudformation } from './codebuild.generated';
import { Project } from './project';
/**
 * Source Provider definition for a CodeBuild project
 * TODO: Abstract class should be an interface
 */
export declare abstract class BuildSource {
    /**
     * Called by the project when the source is added so that the source can perform
     * binding operations on the source. For example, it can grant permissions to the
     * code build project to read from the S3 bucket.
     */
    bind(_project: Project): void;
    abstract toSourceJSON(): cloudformation.ProjectResource.SourceProperty;
}
/**
 * CodeCommit Source definition for a CodeBuild project
 */
export declare class CodeCommitSource extends BuildSource {
    private readonly repo;
    constructor(repo: codecommit.Repository);
    bind(project: Project): void;
    toSourceJSON(): cloudformation.ProjectResource.SourceProperty;
}
/**
 * CodePipeline Source definition for a CodeBuild project
 */
export declare class CodePipelineSource extends BuildSource {
    toSourceJSON(): cloudformation.ProjectResource.SourceProperty;
    bind(_project: Project): void;
}
/**
 * GitHub Source definition for a CodeBuild project
 */
export declare class GitHubSource extends BuildSource {
    private readonly httpscloneUrl;
    private readonly oauthToken;
    constructor(httpscloneUrl: string, oauthToken: any);
    toSourceJSON(): cloudformation.ProjectResource.SourceProperty;
}
/**
 * GitHub Enterprice Source definition for a CodeBuild project
 */
export declare class GitHubEnterpriseSource extends BuildSource {
    private readonly cloneUrl;
    constructor(cloneUrl: string);
    toSourceJSON(): cloudformation.ProjectResource.SourceProperty;
}
/**
 * BitBucket Source definition for a CodeBuild project
 */
export declare class BitBucketSource extends BuildSource {
    private readonly httpsCloneUrl;
    constructor(httpsCloneUrl: string);
    toSourceJSON(): cloudformation.ProjectResource.SourceProperty;
}
/**
 * S3 bucket definition for a CodeBuild project.
 */
export declare class S3BucketSource extends BuildSource {
    private readonly bucket;
    private readonly path;
    constructor(bucket: s3.BucketRef, path: string);
    toSourceJSON(): cloudformation.ProjectResource.SourceProperty;
    bind(project: Project): void;
}
/**
 * Source types for CodeBuild Project
 */
export declare enum SourceType {
    CodeCommit = "CODECOMMIT",
    CodePipeline = "CODEPIPELINE",
    GitHub = "GITHUB",
    GitHubEnterPrise = "GITHUB_ENTERPRISE",
    BitBucket = "BITBUCKET",
    S3 = "S3"
}
