import * as core from "@terrascript/core"; export interface ClientPolicyTlsValidationTrustFileArgs extends core.SchemaArgs { certificateChain: string | core.StringOut; } export class ClientPolicyTlsValidationTrustFile extends core.Schema { @core.attr(String) public certificateChain!: string | core.StringOut; } export interface SdsArgs extends core.SchemaArgs { secretName: string | core.StringOut; } export class Sds extends core.Schema { @core.attr(String) public secretName!: string | core.StringOut; } export interface ClientPolicyTlsValidationTrustAcmArgs extends core.SchemaArgs { certificateAuthorityArns: core.Array | core.ArrayOut; } export class ClientPolicyTlsValidationTrustAcm extends core.Schema { @core.attr(String, { kind: "array" }) public certificateAuthorityArns!: | core.Array | core.ArrayOut; } export interface ClientPolicyTlsValidationTrustArgs extends core.SchemaArgs { acm?: ClientPolicyTlsValidationTrustAcm; file?: ClientPolicyTlsValidationTrustFile; sds?: Sds; } export class ClientPolicyTlsValidationTrust extends core.Schema { @core.attr(ClientPolicyTlsValidationTrustAcm) public acm?: ClientPolicyTlsValidationTrustAcm; @core.attr(ClientPolicyTlsValidationTrustFile) public file?: ClientPolicyTlsValidationTrustFile; @core.attr(Sds) public sds?: Sds; } export interface MatchArgs extends core.SchemaArgs { exact: core.Array | core.ArrayOut; } export class Match extends core.Schema { @core.attr(String, { kind: "array" }) public exact!: core.Array | core.ArrayOut; } export interface SubjectAlternativeNamesArgs extends core.SchemaArgs { match: Match; } export class SubjectAlternativeNames extends core.Schema { @core.attr(Match) public match!: Match; } export interface ClientPolicyTlsValidationArgs extends core.SchemaArgs { subjectAlternativeNames?: SubjectAlternativeNames; trust: ClientPolicyTlsValidationTrust; } export class ClientPolicyTlsValidation extends core.Schema { @core.attr(SubjectAlternativeNames) public subjectAlternativeNames?: SubjectAlternativeNames; @core.attr(ClientPolicyTlsValidationTrust) public trust!: ClientPolicyTlsValidationTrust; } export interface ClientPolicyTlsCertificateFileArgs extends core.SchemaArgs { certificateChain: string | core.StringOut; privateKey: string | core.StringOut; } export class ClientPolicyTlsCertificateFile extends core.Schema { @core.attr(String) public certificateChain!: string | core.StringOut; @core.attr(String) public privateKey!: string | core.StringOut; } export interface ClientPolicyTlsCertificateArgs extends core.SchemaArgs { file?: ClientPolicyTlsCertificateFile; sds?: Sds; } export class ClientPolicyTlsCertificate extends core.Schema { @core.attr(ClientPolicyTlsCertificateFile) public file?: ClientPolicyTlsCertificateFile; @core.attr(Sds) public sds?: Sds; } export interface ClientPolicyTlsArgs extends core.SchemaArgs { certificate?: ClientPolicyTlsCertificate; enforce?: boolean | core.BooleanOut; ports?: core.Array | core.ArrayOut; validation: ClientPolicyTlsValidation; } export class ClientPolicyTls extends core.Schema { @core.attr(ClientPolicyTlsCertificate) public certificate?: ClientPolicyTlsCertificate; @core.attr(Boolean) public enforce?: boolean | core.BooleanOut; @core.attr(Number, { kind: "array" }) public ports?: core.Array | core.ArrayOut; @core.attr(ClientPolicyTlsValidation) public validation!: ClientPolicyTlsValidation; } export interface ClientPolicyArgs extends core.SchemaArgs { tls?: ClientPolicyTls; } export class ClientPolicy extends core.Schema { @core.attr(ClientPolicyTls) public tls?: ClientPolicyTls; } export interface BackendDefaultsArgs extends core.SchemaArgs { clientPolicy?: ClientPolicy; } export class BackendDefaults extends core.Schema { @core.attr(ClientPolicy) public clientPolicy?: ClientPolicy; } export interface ListenerTlsCertificateAcmArgs extends core.SchemaArgs { certificateArn: string | core.StringOut; } export class ListenerTlsCertificateAcm extends core.Schema { @core.attr(String) public certificateArn!: string | core.StringOut; } export interface ListenerTlsCertificateArgs extends core.SchemaArgs { acm?: ListenerTlsCertificateAcm; file?: ClientPolicyTlsCertificateFile; sds?: Sds; } export class ListenerTlsCertificate extends core.Schema { @core.attr(ListenerTlsCertificateAcm) public acm?: ListenerTlsCertificateAcm; @core.attr(ClientPolicyTlsCertificateFile) public file?: ClientPolicyTlsCertificateFile; @core.attr(Sds) public sds?: Sds; } export interface ListenerTlsValidationTrustArgs extends core.SchemaArgs { file?: ClientPolicyTlsValidationTrustFile; sds?: Sds; } export class ListenerTlsValidationTrust extends core.Schema { @core.attr(ClientPolicyTlsValidationTrustFile) public file?: ClientPolicyTlsValidationTrustFile; @core.attr(Sds) public sds?: Sds; } export interface ListenerTlsValidationArgs extends core.SchemaArgs { subjectAlternativeNames?: SubjectAlternativeNames; trust: ListenerTlsValidationTrust; } export class ListenerTlsValidation extends core.Schema { @core.attr(SubjectAlternativeNames) public subjectAlternativeNames?: SubjectAlternativeNames; @core.attr(ListenerTlsValidationTrust) public trust!: ListenerTlsValidationTrust; } export interface ListenerTlsArgs extends core.SchemaArgs { certificate: ListenerTlsCertificate; mode: string | core.StringOut; validation?: ListenerTlsValidation; } export class ListenerTls extends core.Schema { @core.attr(ListenerTlsCertificate) public certificate!: ListenerTlsCertificate; @core.attr(String) public mode!: string | core.StringOut; @core.attr(ListenerTlsValidation) public validation?: ListenerTlsValidation; } export interface GrpcArgs extends core.SchemaArgs { maxRequests: number | core.NumberOut; } export class Grpc extends core.Schema { @core.attr(Number) public maxRequests!: number | core.NumberOut; } export interface HttpArgs extends core.SchemaArgs { maxConnections: number | core.NumberOut; maxPendingRequests?: number | core.NumberOut; } export class Http extends core.Schema { @core.attr(Number) public maxConnections!: number | core.NumberOut; @core.attr(Number) public maxPendingRequests?: number | core.NumberOut; } export interface Http2Args extends core.SchemaArgs { maxRequests: number | core.NumberOut; } export class Http2 extends core.Schema { @core.attr(Number) public maxRequests!: number | core.NumberOut; } export interface ConnectionPoolArgs extends core.SchemaArgs { grpc?: Grpc; http?: Http; http2?: Http2; } export class ConnectionPool extends core.Schema { @core.attr(Grpc) public grpc?: Grpc; @core.attr(Http) public http?: Http; @core.attr(Http2) public http2?: Http2; } export interface HealthCheckArgs extends core.SchemaArgs { healthyThreshold: number | core.NumberOut; intervalMillis: number | core.NumberOut; path?: string | core.StringOut; port?: number | core.NumberOut; protocol: string | core.StringOut; timeoutMillis: number | core.NumberOut; unhealthyThreshold: number | core.NumberOut; } export class HealthCheck extends core.Schema { @core.attr(Number) public healthyThreshold!: number | core.NumberOut; @core.attr(Number) public intervalMillis!: number | core.NumberOut; @core.attr(String) public path?: string | core.StringOut; @core.attr(Number, { computed: true }) public port?: number | core.NumberOut; @core.attr(String) public protocol!: string | core.StringOut; @core.attr(Number) public timeoutMillis!: number | core.NumberOut; @core.attr(Number) public unhealthyThreshold!: number | core.NumberOut; } export interface PortMappingArgs extends core.SchemaArgs { port: number | core.NumberOut; protocol: string | core.StringOut; } export class PortMapping extends core.Schema { @core.attr(Number) public port!: number | core.NumberOut; @core.attr(String) public protocol!: string | core.StringOut; } export interface ListenerArgs extends core.SchemaArgs { connectionPool?: ConnectionPool; healthCheck?: HealthCheck; portMapping: PortMapping; tls?: ListenerTls; } export class Listener extends core.Schema { @core.attr(ConnectionPool) public connectionPool?: ConnectionPool; @core.attr(HealthCheck) public healthCheck?: HealthCheck; @core.attr(PortMapping) public portMapping!: PortMapping; @core.attr(ListenerTls) public tls?: ListenerTls; } export interface AccessLogFileArgs extends core.SchemaArgs { path: string | core.StringOut; } export class AccessLogFile extends core.Schema { @core.attr(String) public path!: string | core.StringOut; } export interface AccessLogArgs extends core.SchemaArgs { file?: AccessLogFile; } export class AccessLog extends core.Schema { @core.attr(AccessLogFile) public file?: AccessLogFile; } export interface LoggingArgs extends core.SchemaArgs { accessLog?: AccessLog; } export class Logging extends core.Schema { @core.attr(AccessLog) public accessLog?: AccessLog; } export interface SpecArgs extends core.SchemaArgs { backendDefaults?: BackendDefaults; listener: Listener; logging?: Logging; } export class Spec extends core.Schema { @core.attr(BackendDefaults) public backendDefaults?: BackendDefaults; @core.attr(Listener) public listener!: Listener; @core.attr(Logging) public logging?: Logging; } export interface VirtualGatewayArgs extends core.ResourceArgs { /** * (Required) The name of the service mesh in which to create the virtual gateway. Must be between 1 an * d 255 characters in length. */ meshName: string | core.StringOut; /** * (Optional) The AWS account ID of the service mesh's owner. Defaults to the account ID the [AWS provi * der][1] is currently connected to. */ meshOwner?: string | core.StringOut; /** * (Required) The name to use for the virtual gateway. Must be between 1 and 255 characters in length. */ name: string | core.StringOut; /** * (Required) The virtual gateway specification to apply. */ spec: Spec; /** * (Optional) A map of tags to assign to the resource. If configured with a provider [`default_tags` co * nfiguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-co * nfiguration-block) present, tags with matching keys will overwrite those defined at the provider-lev * el. */ 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 VirtualGateway extends core.Resource { /** * The ARN of the virtual gateway. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * The creation date of the virtual gateway. */ @core.attr(String, { computed: true }) public createdDate!: string | core.StringOut; /** * The ID of the virtual gateway. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * The last update date of the virtual gateway. */ @core.attr(String, { computed: true }) public lastUpdatedDate!: string | core.StringOut; /** * (Required) The name of the service mesh in which to create the virtual gateway. Must be between 1 an * d 255 characters in length. */ @core.attr(String) public meshName!: string | core.StringOut; /** * (Optional) The AWS account ID of the service mesh's owner. Defaults to the account ID the [AWS provi * der][1] is currently connected to. */ @core.attr(String, { computed: true }) public meshOwner?: string | core.StringOut; /** * (Required) The name to use for the virtual gateway. Must be between 1 and 255 characters in length. */ @core.attr(String) public name!: string | core.StringOut; /** * The resource owner's AWS account ID. */ @core.attr(String, { computed: true }) public resourceOwner!: string | core.StringOut; /** * (Required) The virtual gateway specification to apply. */ @core.attr(Spec) public spec!: Spec; /** * (Optional) A map of tags to assign to the resource. If configured with a provider [`default_tags` co * nfiguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-co * nfiguration-block) present, tags with matching keys will overwrite those defined at the provider-lev * el. */ @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?: VirtualGatewayArgs) { super(name, "aws_appmesh_virtual_gateway", args); } public override getNamespace(): string { return "aws_appmesh"; } }