import * as core from "@terrascript/core";
export interface MatchArgs extends core.SchemaArgs {
    exact: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class Match extends core.Schema<MatchArgs> {
    exact: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export interface SubjectAlternativeNamesArgs extends core.SchemaArgs {
    match: Match;
}
export declare class SubjectAlternativeNames extends core.Schema<SubjectAlternativeNamesArgs> {
    match: Match;
}
export interface ClientPolicyTlsValidationTrustFileArgs extends core.SchemaArgs {
    certificateChain: string | core.StringOut;
}
export declare class ClientPolicyTlsValidationTrustFile extends core.Schema<ClientPolicyTlsValidationTrustFileArgs> {
    certificateChain: string | core.StringOut;
}
export interface SdsArgs extends core.SchemaArgs {
    secretName: string | core.StringOut;
}
export declare class Sds extends core.Schema<SdsArgs> {
    secretName: string | core.StringOut;
}
export interface ClientPolicyTlsValidationTrustAcmArgs extends core.SchemaArgs {
    certificateAuthorityArns: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class ClientPolicyTlsValidationTrustAcm extends core.Schema<ClientPolicyTlsValidationTrustAcmArgs> {
    certificateAuthorityArns: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export interface ClientPolicyTlsValidationTrustArgs extends core.SchemaArgs {
    acm?: ClientPolicyTlsValidationTrustAcm;
    file?: ClientPolicyTlsValidationTrustFile;
    sds?: Sds;
}
export declare class ClientPolicyTlsValidationTrust extends core.Schema<ClientPolicyTlsValidationTrustArgs> {
    acm?: ClientPolicyTlsValidationTrustAcm;
    file?: ClientPolicyTlsValidationTrustFile;
    sds?: Sds;
}
export interface ClientPolicyTlsValidationArgs extends core.SchemaArgs {
    subjectAlternativeNames?: SubjectAlternativeNames;
    trust: ClientPolicyTlsValidationTrust;
}
export declare class ClientPolicyTlsValidation extends core.Schema<ClientPolicyTlsValidationArgs> {
    subjectAlternativeNames?: SubjectAlternativeNames;
    trust: ClientPolicyTlsValidationTrust;
}
export interface ClientPolicyTlsCertificateFileArgs extends core.SchemaArgs {
    certificateChain: string | core.StringOut;
    privateKey: string | core.StringOut;
}
export declare class ClientPolicyTlsCertificateFile extends core.Schema<ClientPolicyTlsCertificateFileArgs> {
    certificateChain: string | core.StringOut;
    privateKey: string | core.StringOut;
}
export interface ClientPolicyTlsCertificateArgs extends core.SchemaArgs {
    file?: ClientPolicyTlsCertificateFile;
    sds?: Sds;
}
export declare class ClientPolicyTlsCertificate extends core.Schema<ClientPolicyTlsCertificateArgs> {
    file?: ClientPolicyTlsCertificateFile;
    sds?: Sds;
}
export interface ClientPolicyTlsArgs extends core.SchemaArgs {
    certificate?: ClientPolicyTlsCertificate;
    enforce?: boolean | core.BooleanOut;
    ports?: core.Array<number> | core.ArrayOut<core.NumberOut>;
    validation: ClientPolicyTlsValidation;
}
export declare class ClientPolicyTls extends core.Schema<ClientPolicyTlsArgs> {
    certificate?: ClientPolicyTlsCertificate;
    enforce?: boolean | core.BooleanOut;
    ports?: core.Array<number> | core.ArrayOut<core.NumberOut>;
    validation: ClientPolicyTlsValidation;
}
export interface ClientPolicyArgs extends core.SchemaArgs {
    tls?: ClientPolicyTls;
}
export declare class ClientPolicy extends core.Schema<ClientPolicyArgs> {
    tls?: ClientPolicyTls;
}
export interface BackendDefaultsArgs extends core.SchemaArgs {
    clientPolicy?: ClientPolicy;
}
export declare class BackendDefaults extends core.Schema<BackendDefaultsArgs> {
    clientPolicy?: ClientPolicy;
}
export interface GrpcArgs extends core.SchemaArgs {
    maxRequests: number | core.NumberOut;
}
export declare class Grpc extends core.Schema<GrpcArgs> {
    maxRequests: number | core.NumberOut;
}
export interface HttpArgs extends core.SchemaArgs {
    maxConnections: number | core.NumberOut;
    maxPendingRequests?: number | core.NumberOut;
}
export declare class Http extends core.Schema<HttpArgs> {
    maxConnections: number | core.NumberOut;
    maxPendingRequests?: number | core.NumberOut;
}
export interface Http2Args extends core.SchemaArgs {
    maxRequests: number | core.NumberOut;
}
export declare class Http2 extends core.Schema<Http2Args> {
    maxRequests: number | core.NumberOut;
}
export interface ConnectionPoolArgs extends core.SchemaArgs {
    grpc?: Grpc;
    http?: Http;
    http2?: Http2;
}
export declare class ConnectionPool extends core.Schema<ConnectionPoolArgs> {
    grpc?: Grpc;
    http?: Http;
    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 declare class HealthCheck extends core.Schema<HealthCheckArgs> {
    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 interface PortMappingArgs extends core.SchemaArgs {
    port: number | core.NumberOut;
    protocol: string | core.StringOut;
}
export declare class PortMapping extends core.Schema<PortMappingArgs> {
    port: number | core.NumberOut;
    protocol: string | core.StringOut;
}
export interface ListenerTlsCertificateAcmArgs extends core.SchemaArgs {
    certificateArn: string | core.StringOut;
}
export declare class ListenerTlsCertificateAcm extends core.Schema<ListenerTlsCertificateAcmArgs> {
    certificateArn: string | core.StringOut;
}
export interface ListenerTlsCertificateArgs extends core.SchemaArgs {
    acm?: ListenerTlsCertificateAcm;
    file?: ClientPolicyTlsCertificateFile;
    sds?: Sds;
}
export declare class ListenerTlsCertificate extends core.Schema<ListenerTlsCertificateArgs> {
    acm?: ListenerTlsCertificateAcm;
    file?: ClientPolicyTlsCertificateFile;
    sds?: Sds;
}
export interface ListenerTlsValidationTrustArgs extends core.SchemaArgs {
    file?: ClientPolicyTlsValidationTrustFile;
    sds?: Sds;
}
export declare class ListenerTlsValidationTrust extends core.Schema<ListenerTlsValidationTrustArgs> {
    file?: ClientPolicyTlsValidationTrustFile;
    sds?: Sds;
}
export interface ListenerTlsValidationArgs extends core.SchemaArgs {
    subjectAlternativeNames?: SubjectAlternativeNames;
    trust: ListenerTlsValidationTrust;
}
export declare class ListenerTlsValidation extends core.Schema<ListenerTlsValidationArgs> {
    subjectAlternativeNames?: SubjectAlternativeNames;
    trust: ListenerTlsValidationTrust;
}
export interface ListenerTlsArgs extends core.SchemaArgs {
    certificate: ListenerTlsCertificate;
    mode: string | core.StringOut;
    validation?: ListenerTlsValidation;
}
export declare class ListenerTls extends core.Schema<ListenerTlsArgs> {
    certificate: ListenerTlsCertificate;
    mode: string | core.StringOut;
    validation?: ListenerTlsValidation;
}
export interface ListenerArgs extends core.SchemaArgs {
    connectionPool?: ConnectionPool;
    healthCheck?: HealthCheck;
    portMapping: PortMapping;
    tls?: ListenerTls;
}
export declare class Listener extends core.Schema<ListenerArgs> {
    connectionPool?: ConnectionPool;
    healthCheck?: HealthCheck;
    portMapping: PortMapping;
    tls?: ListenerTls;
}
export interface AccessLogFileArgs extends core.SchemaArgs {
    path: string | core.StringOut;
}
export declare class AccessLogFile extends core.Schema<AccessLogFileArgs> {
    path: string | core.StringOut;
}
export interface AccessLogArgs extends core.SchemaArgs {
    file?: AccessLogFile;
}
export declare class AccessLog extends core.Schema<AccessLogArgs> {
    file?: AccessLogFile;
}
export interface LoggingArgs extends core.SchemaArgs {
    accessLog?: AccessLog;
}
export declare class Logging extends core.Schema<LoggingArgs> {
    accessLog?: AccessLog;
}
export interface SpecArgs extends core.SchemaArgs {
    backendDefaults?: BackendDefaults;
    listener: Listener;
    logging?: Logging;
}
export declare class Spec extends core.Schema<SpecArgs> {
    backendDefaults?: BackendDefaults;
    listener: Listener;
    logging?: Logging;
}
export interface VirtualGatewayArgs extends core.ResourceArgs {
    meshName: string | core.StringOut;
    meshOwner?: string | core.StringOut;
    name: string | core.StringOut;
    spec: Spec;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export declare class VirtualGateway extends core.Resource<VirtualGatewayArgs> {
    arn: string | core.StringOut;
    createdDate: string | core.StringOut;
    id: string | core.StringOut;
    lastUpdatedDate: string | core.StringOut;
    meshName: string | core.StringOut;
    meshOwner?: string | core.StringOut;
    name: string | core.StringOut;
    resourceOwner: string | core.StringOut;
    spec: Spec;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    constructor(name: string, args?: VirtualGatewayArgs);
    getNamespace(): string;
}
//# sourceMappingURL=virtual_gateway.d.ts.map