/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface Ec2AllowedImagesSettingsConfig extends cdktf.TerraformMetaArguments {
    /**
    * Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/ec2_allowed_images_settings#region Ec2AllowedImagesSettings#region}
    */
    readonly region?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/ec2_allowed_images_settings#state Ec2AllowedImagesSettings#state}
    */
    readonly state: string;
    /**
    * image_criterion block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/ec2_allowed_images_settings#image_criterion Ec2AllowedImagesSettings#image_criterion}
    */
    readonly imageCriterion?: Ec2AllowedImagesSettingsImageCriterion[] | cdktf.IResolvable;
}
export interface Ec2AllowedImagesSettingsImageCriterionCreationDateCondition {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/ec2_allowed_images_settings#maximum_days_since_created Ec2AllowedImagesSettings#maximum_days_since_created}
    */
    readonly maximumDaysSinceCreated?: number;
}
export declare function ec2AllowedImagesSettingsImageCriterionCreationDateConditionToTerraform(struct?: Ec2AllowedImagesSettingsImageCriterionCreationDateCondition | cdktf.IResolvable): any;
export declare function ec2AllowedImagesSettingsImageCriterionCreationDateConditionToHclTerraform(struct?: Ec2AllowedImagesSettingsImageCriterionCreationDateCondition | cdktf.IResolvable): any;
export declare class Ec2AllowedImagesSettingsImageCriterionCreationDateConditionOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): Ec2AllowedImagesSettingsImageCriterionCreationDateCondition | cdktf.IResolvable | undefined;
    set internalValue(value: Ec2AllowedImagesSettingsImageCriterionCreationDateCondition | cdktf.IResolvable | undefined);
    private _maximumDaysSinceCreated?;
    get maximumDaysSinceCreated(): number;
    set maximumDaysSinceCreated(value: number);
    resetMaximumDaysSinceCreated(): void;
    get maximumDaysSinceCreatedInput(): number | undefined;
}
export declare class Ec2AllowedImagesSettingsImageCriterionCreationDateConditionList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: Ec2AllowedImagesSettingsImageCriterionCreationDateCondition[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): Ec2AllowedImagesSettingsImageCriterionCreationDateConditionOutputReference;
}
export interface Ec2AllowedImagesSettingsImageCriterionDeprecationTimeCondition {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/ec2_allowed_images_settings#maximum_days_since_deprecated Ec2AllowedImagesSettings#maximum_days_since_deprecated}
    */
    readonly maximumDaysSinceDeprecated?: number;
}
export declare function ec2AllowedImagesSettingsImageCriterionDeprecationTimeConditionToTerraform(struct?: Ec2AllowedImagesSettingsImageCriterionDeprecationTimeCondition | cdktf.IResolvable): any;
export declare function ec2AllowedImagesSettingsImageCriterionDeprecationTimeConditionToHclTerraform(struct?: Ec2AllowedImagesSettingsImageCriterionDeprecationTimeCondition | cdktf.IResolvable): any;
export declare class Ec2AllowedImagesSettingsImageCriterionDeprecationTimeConditionOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): Ec2AllowedImagesSettingsImageCriterionDeprecationTimeCondition | cdktf.IResolvable | undefined;
    set internalValue(value: Ec2AllowedImagesSettingsImageCriterionDeprecationTimeCondition | cdktf.IResolvable | undefined);
    private _maximumDaysSinceDeprecated?;
    get maximumDaysSinceDeprecated(): number;
    set maximumDaysSinceDeprecated(value: number);
    resetMaximumDaysSinceDeprecated(): void;
    get maximumDaysSinceDeprecatedInput(): number | undefined;
}
export declare class Ec2AllowedImagesSettingsImageCriterionDeprecationTimeConditionList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: Ec2AllowedImagesSettingsImageCriterionDeprecationTimeCondition[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): Ec2AllowedImagesSettingsImageCriterionDeprecationTimeConditionOutputReference;
}
export interface Ec2AllowedImagesSettingsImageCriterion {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/ec2_allowed_images_settings#image_names Ec2AllowedImagesSettings#image_names}
    */
    readonly imageNames?: string[];
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/ec2_allowed_images_settings#image_providers Ec2AllowedImagesSettings#image_providers}
    */
    readonly imageProviders?: string[];
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/ec2_allowed_images_settings#marketplace_product_codes Ec2AllowedImagesSettings#marketplace_product_codes}
    */
    readonly marketplaceProductCodes?: string[];
    /**
    * creation_date_condition block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/ec2_allowed_images_settings#creation_date_condition Ec2AllowedImagesSettings#creation_date_condition}
    */
    readonly creationDateCondition?: Ec2AllowedImagesSettingsImageCriterionCreationDateCondition[] | cdktf.IResolvable;
    /**
    * deprecation_time_condition block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/ec2_allowed_images_settings#deprecation_time_condition Ec2AllowedImagesSettings#deprecation_time_condition}
    */
    readonly deprecationTimeCondition?: Ec2AllowedImagesSettingsImageCriterionDeprecationTimeCondition[] | cdktf.IResolvable;
}
export declare function ec2AllowedImagesSettingsImageCriterionToTerraform(struct?: Ec2AllowedImagesSettingsImageCriterion | cdktf.IResolvable): any;
export declare function ec2AllowedImagesSettingsImageCriterionToHclTerraform(struct?: Ec2AllowedImagesSettingsImageCriterion | cdktf.IResolvable): any;
export declare class Ec2AllowedImagesSettingsImageCriterionOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): Ec2AllowedImagesSettingsImageCriterion | cdktf.IResolvable | undefined;
    set internalValue(value: Ec2AllowedImagesSettingsImageCriterion | cdktf.IResolvable | undefined);
    private _imageNames?;
    get imageNames(): string[];
    set imageNames(value: string[]);
    resetImageNames(): void;
    get imageNamesInput(): string[] | undefined;
    private _imageProviders?;
    get imageProviders(): string[];
    set imageProviders(value: string[]);
    resetImageProviders(): void;
    get imageProvidersInput(): string[] | undefined;
    private _marketplaceProductCodes?;
    get marketplaceProductCodes(): string[];
    set marketplaceProductCodes(value: string[]);
    resetMarketplaceProductCodes(): void;
    get marketplaceProductCodesInput(): string[] | undefined;
    private _creationDateCondition;
    get creationDateCondition(): Ec2AllowedImagesSettingsImageCriterionCreationDateConditionList;
    putCreationDateCondition(value: Ec2AllowedImagesSettingsImageCriterionCreationDateCondition[] | cdktf.IResolvable): void;
    resetCreationDateCondition(): void;
    get creationDateConditionInput(): cdktf.IResolvable | Ec2AllowedImagesSettingsImageCriterionCreationDateCondition[] | undefined;
    private _deprecationTimeCondition;
    get deprecationTimeCondition(): Ec2AllowedImagesSettingsImageCriterionDeprecationTimeConditionList;
    putDeprecationTimeCondition(value: Ec2AllowedImagesSettingsImageCriterionDeprecationTimeCondition[] | cdktf.IResolvable): void;
    resetDeprecationTimeCondition(): void;
    get deprecationTimeConditionInput(): cdktf.IResolvable | Ec2AllowedImagesSettingsImageCriterionDeprecationTimeCondition[] | undefined;
}
export declare class Ec2AllowedImagesSettingsImageCriterionList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: Ec2AllowedImagesSettingsImageCriterion[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): Ec2AllowedImagesSettingsImageCriterionOutputReference;
}
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/ec2_allowed_images_settings aws_ec2_allowed_images_settings}
*/
export declare class Ec2AllowedImagesSettings extends cdktf.TerraformResource {
    static readonly tfResourceType = "aws_ec2_allowed_images_settings";
    /**
    * Generates CDKTF code for importing a Ec2AllowedImagesSettings resource upon running "cdktf plan <stack-name>"
    * @param scope The scope in which to define this construct
    * @param importToId The construct id used in the generated config for the Ec2AllowedImagesSettings to import
    * @param importFromId The id of the existing Ec2AllowedImagesSettings that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/ec2_allowed_images_settings#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the Ec2AllowedImagesSettings to import is found
    */
    static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
    /**
    * Create a new {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/ec2_allowed_images_settings aws_ec2_allowed_images_settings} Resource
    *
    * @param scope The scope in which to define this construct
    * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
    * @param options Ec2AllowedImagesSettingsConfig
    */
    constructor(scope: Construct, id: string, config: Ec2AllowedImagesSettingsConfig);
    private _region?;
    get region(): string;
    set region(value: string);
    resetRegion(): void;
    get regionInput(): string | undefined;
    private _state?;
    get state(): string;
    set state(value: string);
    get stateInput(): string | undefined;
    private _imageCriterion;
    get imageCriterion(): Ec2AllowedImagesSettingsImageCriterionList;
    putImageCriterion(value: Ec2AllowedImagesSettingsImageCriterion[] | cdktf.IResolvable): void;
    resetImageCriterion(): void;
    get imageCriterionInput(): cdktf.IResolvable | Ec2AllowedImagesSettingsImageCriterion[] | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
