import * as core from "@terrascript/core"; export interface LaunchPermissionArgs extends core.SchemaArgs { organizationArns?: core.Array | core.ArrayOut; organizationalUnitArns?: core.Array | core.ArrayOut; userGroups?: core.Array | core.ArrayOut; userIds?: core.Array | core.ArrayOut; } export class LaunchPermission extends core.Schema { @core.attr(String, { kind: "array" }) public organizationArns?: core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public organizationalUnitArns?: | core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public userGroups?: core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public userIds?: core.Array | core.ArrayOut; } export interface AmiDistributionConfigurationArgs extends core.SchemaArgs { amiTags?: core.Map | core.MapOut; description?: string | core.StringOut; kmsKeyId?: string | core.StringOut; launchPermission?: LaunchPermission; name?: string | core.StringOut; targetAccountIds?: core.Array | core.ArrayOut; } export class AmiDistributionConfiguration extends core.Schema { @core.attr(String, { kind: "map" }) public amiTags?: core.Map | core.MapOut; @core.attr(String) public description?: string | core.StringOut; @core.attr(String) public kmsKeyId?: string | core.StringOut; @core.attr(LaunchPermission) public launchPermission?: LaunchPermission; @core.attr(String) public name?: string | core.StringOut; @core.attr(String, { kind: "array" }) public targetAccountIds?: core.Array | core.ArrayOut; } export interface TargetRepositoryArgs extends core.SchemaArgs { repositoryName: string | core.StringOut; service: string | core.StringOut; } export class TargetRepository extends core.Schema { @core.attr(String) public repositoryName!: string | core.StringOut; @core.attr(String) public service!: string | core.StringOut; } export interface ContainerDistributionConfigurationArgs extends core.SchemaArgs { containerTags?: core.Array | core.ArrayOut; description?: string | core.StringOut; targetRepository: TargetRepository; } export class ContainerDistributionConfiguration extends core.Schema { @core.attr(String, { kind: "array" }) public containerTags?: core.Array | core.ArrayOut; @core.attr(String) public description?: string | core.StringOut; @core.attr(TargetRepository) public targetRepository!: TargetRepository; } export interface LaunchTemplateArgs extends core.SchemaArgs { launchTemplateId?: string | core.StringOut; launchTemplateName?: string | core.StringOut; launchTemplateVersion?: string | core.StringOut; } export class LaunchTemplate extends core.Schema { @core.attr(String) public launchTemplateId?: string | core.StringOut; @core.attr(String) public launchTemplateName?: string | core.StringOut; @core.attr(String) public launchTemplateVersion?: string | core.StringOut; } export interface SnapshotConfigurationArgs extends core.SchemaArgs { targetResourceCount?: number | core.NumberOut; } export class SnapshotConfiguration extends core.Schema { @core.attr(Number) public targetResourceCount?: number | core.NumberOut; } export interface FastLaunchConfigurationArgs extends core.SchemaArgs { accountId: string | core.StringOut; enabled: boolean | core.BooleanOut; launchTemplate?: LaunchTemplate; maxParallelLaunches?: number | core.NumberOut; snapshotConfiguration?: SnapshotConfiguration; } export class FastLaunchConfiguration extends core.Schema { @core.attr(String) public accountId!: string | core.StringOut; @core.attr(Boolean) public enabled!: boolean | core.BooleanOut; @core.attr(LaunchTemplate) public launchTemplate?: LaunchTemplate; @core.attr(Number) public maxParallelLaunches?: number | core.NumberOut; @core.attr(SnapshotConfiguration) public snapshotConfiguration?: SnapshotConfiguration; } export interface LaunchTemplateConfigurationArgs extends core.SchemaArgs { accountId?: string | core.StringOut; default?: boolean | core.BooleanOut; launchTemplateId: string | core.StringOut; } export class LaunchTemplateConfiguration extends core.Schema { @core.attr(String) public accountId?: string | core.StringOut; @core.attr(Boolean) public default?: boolean | core.BooleanOut; @core.attr(String) public launchTemplateId!: string | core.StringOut; } export interface DistributionArgs extends core.SchemaArgs { amiDistributionConfiguration?: AmiDistributionConfiguration; containerDistributionConfiguration?: ContainerDistributionConfiguration; fastLaunchConfiguration?: | core.Array | core.ArrayOut; launchTemplateConfiguration?: | core.Array | core.ArrayOut; licenseConfigurationArns?: core.Array | core.ArrayOut; region: string | core.StringOut; } export class Distribution extends core.Schema { @core.attr(AmiDistributionConfiguration) public amiDistributionConfiguration?: AmiDistributionConfiguration; @core.attr(ContainerDistributionConfiguration) public containerDistributionConfiguration?: ContainerDistributionConfiguration; @core.attr(FastLaunchConfiguration, { kind: "array" }) public fastLaunchConfiguration?: | core.Array | core.ArrayOut; @core.attr(LaunchTemplateConfiguration, { kind: "array" }) public launchTemplateConfiguration?: | core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public licenseConfigurationArns?: | core.Array | core.ArrayOut; @core.attr(String) public region!: string | core.StringOut; } export interface DistributionConfigurationArgs extends core.ResourceArgs { /** * (Optional) Description of the distribution configuration. */ description?: string | core.StringOut; /** * (Required) One or more configuration blocks with distribution settings. Detailed below. */ distribution: core.Array | core.ArrayOut; /** * (Required) Name of the distribution configuration. */ name: string | core.StringOut; /** * (Optional) Key-value map of resource tags for the distribution configuration. If configured with a p * rovider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/l * atest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those d * efined at the provider-level. */ tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ tagsAll?: core.Map | core.MapOut; } export class DistributionConfiguration extends core.Resource { /** * (Required) Amazon Resource Name (ARN) of the distribution configuration. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * Date the distribution configuration was created. */ @core.attr(String, { computed: true }) public dateCreated!: string | core.StringOut; /** * Date the distribution configuration was updated. */ @core.attr(String, { computed: true }) public dateUpdated!: string | core.StringOut; /** * (Optional) Description of the distribution configuration. */ @core.attr(String) public description?: string | core.StringOut; /** * (Required) One or more configuration blocks with distribution settings. Detailed below. */ @core.attr(Distribution, { kind: "array" }) public distribution!: core.Array | core.ArrayOut; @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Required) Name of the distribution configuration. */ @core.attr(String) public name!: string | core.StringOut; /** * (Optional) Key-value map of resource tags for the distribution configuration. If configured with a p * rovider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/l * atest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those d * efined at the provider-level. */ @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ @core.attr(String, { computed: true, kind: "map" }) public tagsAll?: core.Map | core.MapOut; constructor(name: string, args?: DistributionConfigurationArgs) { super(name, "aws_imagebuilder_distribution_configuration", args); } public override getNamespace(): string { return "aws_imagebuilder"; } }