import { ManualApprovalAction, ManualApprovalActionProps } from 'aws-cdk-lib/aws-codepipeline-actions';
export interface SourceActionVariables {
    authorDate: string;
    branchName: string;
    commitId: string;
    repositoryName?: string;
    fullRepositoryName?: string;
}
export interface SourceAction {
    variables: SourceActionVariables;
}
export interface GithubSourceProps {
    /**
     * Repo owner. Because we can't get this from the source action
     */
    readonly owner: string;
    /**
     * A CodeStarConnectionsSourceAction or GitHubSourceAction that is used when deploying a change
     */
    readonly sourceAction: SourceAction;
}
export interface SlackApprovalSnsCustomData {
    /**
     * Additional information to be displayed in the slack Message
     */
    readonly additionalMessage?: string;
    /**
     * Text to appear on the Approve button (default is "Approve")
     */
    readonly approveButtonText?: string;
    /**
     * The target that will be changed if the reviewer approves the change  (The Production target)
     */
    readonly attemptTarget?: string;
    /**
     * List of Github sources from which to add commit details for the approval message
     */
    readonly githubSources?: GithubSourceProps[];
    /**
     * Text to appear on the Reject button (default is "Reject")
     */
    readonly rejectButtonText?: string;
    /**
     * ID of slack channel an approval notification will be sent to.
     * If you don't have a slackChannelId, don't use SlackIntegratedManualApproval - use ManualApprovalAction instead.
     */
    readonly slackChannelId: string;
    /** slackChannelName is used to clarify response to make text more user friendly.  */
    readonly slackChannelName?: string;
    /**
     * Where to direct a reviewer to see the changes before they're pushed to production (The address to Test that was just now successfully deployed)
     */
    readonly successfulTarget?: string;
}
export interface EnhancedGithubSource {
    readonly authorDate: string;
    readonly branchName: string;
    readonly commitId: string;
    readonly owner: string;
    readonly repositoryName: string;
}
export interface SlackApprovalEnhancedSnsCustomData extends Omit<SlackApprovalSnsCustomData, 'githubSources'> {
    enhancedGithubSources: EnhancedGithubSource[];
}
export interface SlackIntegratedManualApprovalProps extends ManualApprovalActionProps {
    /**
     *
     * Additional information that will be used to create the message to be sent to a Slack channel
     * This should not be called directly.  I just exported it in order to run unit tests.
     */
    readonly customData: SlackApprovalSnsCustomData;
}
export declare class SlackIntegratedManualApproval extends ManualApprovalAction {
    /**
     * Constructs an approval that contains links to the target hosts, the repos that were sourced, and a summary of the changes that are being pushed
     * @param props
     */
    constructor(props: SlackIntegratedManualApprovalProps);
}
export declare const stringifyCustomData: (props: SlackIntegratedManualApprovalProps) => string;
