import type { Construct } from 'constructs';
import * as iam from '../../../aws-iam';
import { Resource } from '../../../core';
import type { DeploymentGroupReference, IApplicationRef, IDeploymentConfigRef } from '../../../interfaces/generated/aws-codedeploy-interfaces.generated';
import type { CfnDeploymentGroup } from '../codedeploy.generated';
/**
 */
export interface ImportedDeploymentGroupBaseProps {
    /**
     * The reference to the CodeDeploy Application that this Deployment Group belongs to.
     */
    readonly application: IApplicationRef;
    /**
     * The physical, human-readable name of the CodeDeploy Deployment Group
     * that we are referencing.
     *
     * @default Either deploymentGroupName or deploymentGroupArn is required
     */
    readonly deploymentGroupName: string;
}
/**
 * @internal
 */
export declare class ImportedDeploymentGroupBase extends Resource {
    /** Uniquely identifies this class. */
    static readonly PROPERTY_INJECTION_ID: string;
    readonly applicationName: string;
    readonly deploymentGroupName: string;
    readonly deploymentGroupArn: string;
    get deploymentGroupRef(): DeploymentGroupReference;
    constructor(scope: Construct, id: string, props: ImportedDeploymentGroupBaseProps);
    /**
     * Bind DeploymentGroupConfig to the current group, if supported
     *
     * @internal
     */
    protected _bindDeploymentConfig(config: IDeploymentConfigRef): IDeploymentConfigRef;
}
export interface DeploymentGroupBaseProps {
    /**
     * The physical, human-readable name of the CodeDeploy Deployment Group.
     *
     * @default An auto-generated name will be used.
     */
    readonly deploymentGroupName?: string;
    /**
     * The service Role of this Deployment Group.
     *
     * @default A new Role will be created.
     */
    readonly role?: iam.IRole;
    /**
     * Id of the role construct, if created by this construct
     *
     * Exists because when we factored this out, there was a difference between the
     * 3 deployment groups.
     */
    readonly roleConstructId: string;
}
/**
 * @internal
 */
export declare class DeploymentGroupBase extends Resource {
    /** Uniquely identifies this class. */
    static readonly PROPERTY_INJECTION_ID: string;
    /**
     * The name of the Application.
     */
    readonly applicationName: string;
    /**
     * The name of the Deployment Group.
     */
    readonly deploymentGroupName: string;
    /**
     * The ARN of the Deployment Group.
     */
    readonly deploymentGroupArn: string;
    /**
     * A reference to a DeploymentGroup resource.
     */
    get deploymentGroupRef(): DeploymentGroupReference;
    /**
     * The service Role of this Deployment Group.
     *
     * (Can't make `role` properly public here, as it's typed as optional in one
     * interface and typing it here as definitely set interferes with that.)
     *
     * @internal
     */
    readonly _role: iam.IRole;
    constructor(scope: Construct, id: string, props: DeploymentGroupBaseProps);
    /**
     * Bind DeploymentGroupConfig to the current group, if supported
     *
     * @internal
     */
    protected _bindDeploymentConfig(config: IDeploymentConfigRef): IDeploymentConfigRef;
    /**
     * Set name and ARN properties.
     *
     * Must be called in the child constructor.
     *
     * @internal
     */
    protected _setNameAndArn(resource: CfnDeploymentGroup, application: IApplicationRef): void;
}
