import * as core from "@terrascript/core"; export interface CookiesArgs extends core.SchemaArgs { items: core.Array | core.ArrayOut; } export class Cookies extends core.Schema { @core.attr(String, { computed: true, kind: "array" }) public items!: core.Array | core.ArrayOut; } export interface CookiesConfigArgs extends core.SchemaArgs { cookieBehavior: string | core.StringOut; cookies: core.Array | core.ArrayOut; } export class CookiesConfig extends core.Schema { @core.attr(String, { computed: true }) public cookieBehavior!: string | core.StringOut; @core.attr(Cookies, { computed: true, kind: "array" }) public cookies!: core.Array | core.ArrayOut; } export interface HeadersArgs extends core.SchemaArgs { items: core.Array | core.ArrayOut; } export class Headers extends core.Schema { @core.attr(String, { computed: true, kind: "array" }) public items!: core.Array | core.ArrayOut; } export interface HeadersConfigArgs extends core.SchemaArgs { headerBehavior: string | core.StringOut; headers: core.Array | core.ArrayOut; } export class HeadersConfig extends core.Schema { @core.attr(String, { computed: true }) public headerBehavior!: string | core.StringOut; @core.attr(Headers, { computed: true, kind: "array" }) public headers!: core.Array | core.ArrayOut; } export interface QueryStringsArgs extends core.SchemaArgs { items: core.Array | core.ArrayOut; } export class QueryStrings extends core.Schema { @core.attr(String, { computed: true, kind: "array" }) public items!: core.Array | core.ArrayOut; } export interface QueryStringsConfigArgs extends core.SchemaArgs { queryStringBehavior: string | core.StringOut; queryStrings: core.Array | core.ArrayOut; } export class QueryStringsConfig extends core.Schema { @core.attr(String, { computed: true }) public queryStringBehavior!: string | core.StringOut; @core.attr(QueryStrings, { computed: true, kind: "array" }) public queryStrings!: core.Array | core.ArrayOut; } export interface ParametersInCacheKeyAndForwardedToOriginArgs extends core.SchemaArgs { cookiesConfig: core.Array | core.ArrayOut; enableAcceptEncodingBrotli: boolean | core.BooleanOut; enableAcceptEncodingGzip: boolean | core.BooleanOut; headersConfig: core.Array | core.ArrayOut; queryStringsConfig: | core.Array | core.ArrayOut; } export class ParametersInCacheKeyAndForwardedToOrigin extends core.Schema { @core.attr(CookiesConfig, { computed: true, kind: "array" }) public cookiesConfig!: | core.Array | core.ArrayOut; @core.attr(Boolean, { computed: true }) public enableAcceptEncodingBrotli!: boolean | core.BooleanOut; @core.attr(Boolean, { computed: true }) public enableAcceptEncodingGzip!: boolean | core.BooleanOut; @core.attr(HeadersConfig, { computed: true, kind: "array" }) public headersConfig!: | core.Array | core.ArrayOut; @core.attr(QueryStringsConfig, { computed: true, kind: "array" }) public queryStringsConfig!: | core.Array | core.ArrayOut; } export interface DsCachePolicyArgs { /** * (Optional) The identifier for the cache policy. */ id?: string | core.StringOut; /** * (Optional) A unique name to identify the cache policy. */ name?: string | core.StringOut; } export class DsCachePolicy extends core.Data { /** * A comment to describe the cache policy. */ @core.attr(String, { computed: true }) public comment!: string | core.StringOut; /** * The default amount of time, in seconds, that you want objects to stay in the CloudFront cache before * CloudFront sends another request to the origin to see if the object has been updated. */ @core.attr(Number, { computed: true }) public defaultTtl!: number | core.NumberOut; /** * The current version of the cache policy. */ @core.attr(String, { computed: true }) public etag!: string | core.StringOut; /** * (Optional) The identifier for the cache policy. */ @core.attr(String) public id?: string | core.StringOut; /** * The maximum amount of time, in seconds, that objects stay in the CloudFront cache before CloudFront * sends another request to the origin to see if the object has been updated. */ @core.attr(Number, { computed: true }) public maxTtl!: number | core.NumberOut; /** * The minimum amount of time, in seconds, that you want objects to stay in the CloudFront cache before * CloudFront sends another request to the origin to see if the object has been updated. */ @core.attr(Number, { computed: true }) public minTtl!: number | core.NumberOut; /** * (Optional) A unique name to identify the cache policy. */ @core.attr(String) public name?: string | core.StringOut; /** * The HTTP headers, cookies, and URL query strings to include in the cache key. See [Parameters In Cac * he Key And Forwarded To Origin](#parameters-in-cache-key-and-forwarded-to-origin) for more informati * on. */ @core.attr(ParametersInCacheKeyAndForwardedToOrigin, { computed: true, kind: "array", }) public parametersInCacheKeyAndForwardedToOrigin!: | core.Array | core.ArrayOut; constructor(name: string, args?: DsCachePolicyArgs) { super(name, "aws_cloudfront_cache_policy", args); } public override getNamespace(): string { return "aws_cloudfront"; } }