import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
import * as enums from "../types/enums";
/**
 * Resource Type definition for AWS::EC2::VPCEncryptionControl
 */
export declare class VpcEncryptionControl extends pulumi.CustomResource {
    /**
     * Get an existing VpcEncryptionControl resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, opts?: pulumi.CustomResourceOptions): VpcEncryptionControl;
    /**
     * Returns true if the given object is an instance of VpcEncryptionControl.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is VpcEncryptionControl;
    /**
     * Used to enable or disable EIGW exclusion
     */
    readonly egressOnlyInternetGatewayExclusionInput: pulumi.Output<enums.ec2.VpcEncryptionControlEgressOnlyInternetGatewayExclusionInput | undefined>;
    /**
     * Used to enable or disable EFS exclusion
     */
    readonly elasticFileSystemExclusionInput: pulumi.Output<enums.ec2.VpcEncryptionControlElasticFileSystemExclusionInput | undefined>;
    /**
     * Used to enable or disable IGW exclusion
     */
    readonly internetGatewayExclusionInput: pulumi.Output<enums.ec2.VpcEncryptionControlInternetGatewayExclusionInput | undefined>;
    /**
     * Used to enable or disable Lambda exclusion
     */
    readonly lambdaExclusionInput: pulumi.Output<enums.ec2.VpcEncryptionControlLambdaExclusionInput | undefined>;
    /**
     * The VPC encryption control mode, either monitor or enforce.
     */
    readonly mode: pulumi.Output<enums.ec2.VpcEncryptionControlMode | undefined>;
    /**
     * Used to enable or disable Nat gateway exclusion
     */
    readonly natGatewayExclusionInput: pulumi.Output<enums.ec2.VpcEncryptionControlNatGatewayExclusionInput | undefined>;
    /**
     * Enumerates the states of all the VPC encryption control resource exclusions
     */
    readonly resourceExclusions: pulumi.Output<outputs.ec2.VpcEncryptionControlResourceExclusions>;
    /**
     * The current state of the VPC encryption control.
     */
    readonly state: pulumi.Output<enums.ec2.VpcEncryptionControlState>;
    /**
     * Provides additional context on the state of the VPC encryption control.
     */
    readonly stateMessage: pulumi.Output<string>;
    /**
     * The tags to assign to the VPC encryption control.
     */
    readonly tags: pulumi.Output<outputs.Tag[] | undefined>;
    /**
     * Used to enable or disable VGW exclusion
     */
    readonly virtualPrivateGatewayExclusionInput: pulumi.Output<enums.ec2.VpcEncryptionControlVirtualPrivateGatewayExclusionInput | undefined>;
    /**
     * The VPC encryption control resource id.
     */
    readonly vpcEncryptionControlId: pulumi.Output<string>;
    /**
     * The VPC on which this VPC encryption control is applied.
     */
    readonly vpcId: pulumi.Output<string | undefined>;
    /**
     * Used to enable or disable Vpc Lattice exclusion
     */
    readonly vpcLatticeExclusionInput: pulumi.Output<enums.ec2.VpcEncryptionControlVpcLatticeExclusionInput | undefined>;
    /**
     * Used to enable or disable VPC peering exclusion
     */
    readonly vpcPeeringExclusionInput: pulumi.Output<enums.ec2.VpcEncryptionControlVpcPeeringExclusionInput | undefined>;
    /**
     * Create a VpcEncryptionControl resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args?: VpcEncryptionControlArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * The set of arguments for constructing a VpcEncryptionControl resource.
 */
export interface VpcEncryptionControlArgs {
    /**
     * Used to enable or disable EIGW exclusion
     */
    egressOnlyInternetGatewayExclusionInput?: pulumi.Input<enums.ec2.VpcEncryptionControlEgressOnlyInternetGatewayExclusionInput>;
    /**
     * Used to enable or disable EFS exclusion
     */
    elasticFileSystemExclusionInput?: pulumi.Input<enums.ec2.VpcEncryptionControlElasticFileSystemExclusionInput>;
    /**
     * Used to enable or disable IGW exclusion
     */
    internetGatewayExclusionInput?: pulumi.Input<enums.ec2.VpcEncryptionControlInternetGatewayExclusionInput>;
    /**
     * Used to enable or disable Lambda exclusion
     */
    lambdaExclusionInput?: pulumi.Input<enums.ec2.VpcEncryptionControlLambdaExclusionInput>;
    /**
     * The VPC encryption control mode, either monitor or enforce.
     */
    mode?: pulumi.Input<enums.ec2.VpcEncryptionControlMode>;
    /**
     * Used to enable or disable Nat gateway exclusion
     */
    natGatewayExclusionInput?: pulumi.Input<enums.ec2.VpcEncryptionControlNatGatewayExclusionInput>;
    /**
     * The tags to assign to the VPC encryption control.
     */
    tags?: pulumi.Input<pulumi.Input<inputs.TagArgs>[]>;
    /**
     * Used to enable or disable VGW exclusion
     */
    virtualPrivateGatewayExclusionInput?: pulumi.Input<enums.ec2.VpcEncryptionControlVirtualPrivateGatewayExclusionInput>;
    /**
     * The VPC on which this VPC encryption control is applied.
     */
    vpcId?: pulumi.Input<string>;
    /**
     * Used to enable or disable Vpc Lattice exclusion
     */
    vpcLatticeExclusionInput?: pulumi.Input<enums.ec2.VpcEncryptionControlVpcLatticeExclusionInput>;
    /**
     * Used to enable or disable VPC peering exclusion
     */
    vpcPeeringExclusionInput?: pulumi.Input<enums.ec2.VpcEncryptionControlVpcPeeringExclusionInput>;
}
