import * as core from "@terrascript/core";
export interface SdsArgs extends core.SchemaArgs {
    secretName: string | core.StringOut;
}
export declare class Sds extends core.Schema<SdsArgs> {
    secretName: string | core.StringOut;
}
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 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 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 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 VirtualServiceArgs extends core.SchemaArgs {
    clientPolicy?: ClientPolicy;
    virtualServiceName: string | core.StringOut;
}
export declare class VirtualService extends core.Schema<VirtualServiceArgs> {
    clientPolicy?: ClientPolicy;
    virtualServiceName: string | core.StringOut;
}
export interface BackendArgs extends core.SchemaArgs {
    virtualService: VirtualService;
}
export declare class Backend extends core.Schema<BackendArgs> {
    virtualService: VirtualService;
}
export interface BackendDefaultsArgs extends core.SchemaArgs {
    clientPolicy?: ClientPolicy;
}
export declare class BackendDefaults extends core.Schema<BackendDefaultsArgs> {
    clientPolicy?: ClientPolicy;
}
export interface PerRequestArgs extends core.SchemaArgs {
    unit: string | core.StringOut;
    value: number | core.NumberOut;
}
export declare class PerRequest extends core.Schema<PerRequestArgs> {
    unit: string | core.StringOut;
    value: number | core.NumberOut;
}
export interface IdleArgs extends core.SchemaArgs {
    unit: string | core.StringOut;
    value: number | core.NumberOut;
}
export declare class Idle extends core.Schema<IdleArgs> {
    unit: string | core.StringOut;
    value: number | core.NumberOut;
}
export interface TimeoutGrpcArgs extends core.SchemaArgs {
    idle?: Idle;
    perRequest?: PerRequest;
}
export declare class TimeoutGrpc extends core.Schema<TimeoutGrpcArgs> {
    idle?: Idle;
    perRequest?: PerRequest;
}
export interface TimeoutHttpArgs extends core.SchemaArgs {
    idle?: Idle;
    perRequest?: PerRequest;
}
export declare class TimeoutHttp extends core.Schema<TimeoutHttpArgs> {
    idle?: Idle;
    perRequest?: PerRequest;
}
export interface TimeoutHttp2Args extends core.SchemaArgs {
    idle?: Idle;
    perRequest?: PerRequest;
}
export declare class TimeoutHttp2 extends core.Schema<TimeoutHttp2Args> {
    idle?: Idle;
    perRequest?: PerRequest;
}
export interface TimeoutTcpArgs extends core.SchemaArgs {
    idle?: Idle;
}
export declare class TimeoutTcp extends core.Schema<TimeoutTcpArgs> {
    idle?: Idle;
}
export interface TimeoutArgs extends core.SchemaArgs {
    grpc?: TimeoutGrpc;
    http?: TimeoutHttp;
    http2?: TimeoutHttp2;
    tcp?: TimeoutTcp;
}
export declare class Timeout extends core.Schema<TimeoutArgs> {
    grpc?: TimeoutGrpc;
    http?: TimeoutHttp;
    http2?: TimeoutHttp2;
    tcp?: TimeoutTcp;
}
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 ConnectionPoolTcpArgs extends core.SchemaArgs {
    maxConnections: number | core.NumberOut;
}
export declare class ConnectionPoolTcp extends core.Schema<ConnectionPoolTcpArgs> {
    maxConnections: number | core.NumberOut;
}
export interface ConnectionPoolGrpcArgs extends core.SchemaArgs {
    maxRequests: number | core.NumberOut;
}
export declare class ConnectionPoolGrpc extends core.Schema<ConnectionPoolGrpcArgs> {
    maxRequests: number | core.NumberOut;
}
export interface ConnectionPoolHttpArgs extends core.SchemaArgs {
    maxConnections: number | core.NumberOut;
    maxPendingRequests?: number | core.NumberOut;
}
export declare class ConnectionPoolHttp extends core.Schema<ConnectionPoolHttpArgs> {
    maxConnections: number | core.NumberOut;
    maxPendingRequests?: number | core.NumberOut;
}
export interface ConnectionPoolHttp2Args extends core.SchemaArgs {
    maxRequests: number | core.NumberOut;
}
export declare class ConnectionPoolHttp2 extends core.Schema<ConnectionPoolHttp2Args> {
    maxRequests: number | core.NumberOut;
}
export interface ConnectionPoolArgs extends core.SchemaArgs {
    grpc?: ConnectionPoolGrpc;
    http?: ConnectionPoolHttp;
    http2?: ConnectionPoolHttp2;
    tcp?: ConnectionPoolTcp;
}
export declare class ConnectionPool extends core.Schema<ConnectionPoolArgs> {
    grpc?: ConnectionPoolGrpc;
    http?: ConnectionPoolHttp;
    http2?: ConnectionPoolHttp2;
    tcp?: ConnectionPoolTcp;
}
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 BaseEjectionDurationArgs extends core.SchemaArgs {
    unit: string | core.StringOut;
    value: number | core.NumberOut;
}
export declare class BaseEjectionDuration extends core.Schema<BaseEjectionDurationArgs> {
    unit: string | core.StringOut;
    value: number | core.NumberOut;
}
export interface IntervalArgs extends core.SchemaArgs {
    unit: string | core.StringOut;
    value: number | core.NumberOut;
}
export declare class Interval extends core.Schema<IntervalArgs> {
    unit: string | core.StringOut;
    value: number | core.NumberOut;
}
export interface OutlierDetectionArgs extends core.SchemaArgs {
    baseEjectionDuration: BaseEjectionDuration;
    interval: Interval;
    maxEjectionPercent: number | core.NumberOut;
    maxServerErrors: number | core.NumberOut;
}
export declare class OutlierDetection extends core.Schema<OutlierDetectionArgs> {
    baseEjectionDuration: BaseEjectionDuration;
    interval: Interval;
    maxEjectionPercent: number | core.NumberOut;
    maxServerErrors: 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 ListenerArgs extends core.SchemaArgs {
    connectionPool?: ConnectionPool;
    healthCheck?: HealthCheck;
    outlierDetection?: OutlierDetection;
    portMapping: PortMapping;
    timeout?: Timeout;
    tls?: ListenerTls;
}
export declare class Listener extends core.Schema<ListenerArgs> {
    connectionPool?: ConnectionPool;
    healthCheck?: HealthCheck;
    outlierDetection?: OutlierDetection;
    portMapping: PortMapping;
    timeout?: Timeout;
    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 AwsCloudMapArgs extends core.SchemaArgs {
    attributes?: core.Map<string, string> | core.MapOut<core.StringOut>;
    namespaceName: string | core.StringOut;
    serviceName: string | core.StringOut;
}
export declare class AwsCloudMap extends core.Schema<AwsCloudMapArgs> {
    attributes?: core.Map<string, string> | core.MapOut<core.StringOut>;
    namespaceName: string | core.StringOut;
    serviceName: string | core.StringOut;
}
export interface DnsArgs extends core.SchemaArgs {
    hostname: string | core.StringOut;
}
export declare class Dns extends core.Schema<DnsArgs> {
    hostname: string | core.StringOut;
}
export interface ServiceDiscoveryArgs extends core.SchemaArgs {
    awsCloudMap?: AwsCloudMap;
    dns?: Dns;
}
export declare class ServiceDiscovery extends core.Schema<ServiceDiscoveryArgs> {
    awsCloudMap?: AwsCloudMap;
    dns?: Dns;
}
export interface SpecArgs extends core.SchemaArgs {
    backend?: core.Array<Backend> | core.ArrayOut<Backend>;
    backendDefaults?: BackendDefaults;
    listener?: Listener;
    logging?: Logging;
    serviceDiscovery?: ServiceDiscovery;
}
export declare class Spec extends core.Schema<SpecArgs> {
    backend?: core.Array<Backend> | core.ArrayOut<Backend>;
    backendDefaults?: BackendDefaults;
    listener?: Listener;
    logging?: Logging;
    serviceDiscovery?: ServiceDiscovery;
}
export interface VirtualNodeArgs 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 VirtualNode extends core.Resource<VirtualNodeArgs> {
    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?: VirtualNodeArgs);
    getNamespace(): string;
}
//# sourceMappingURL=virtual_node.d.ts.map