import * as core from "@terrascript/core";
export interface WeightedTargetArgs extends core.SchemaArgs {
    virtualNode: string | core.StringOut;
    weight: number | core.NumberOut;
}
export declare class WeightedTarget extends core.Schema<WeightedTargetArgs> {
    virtualNode: string | core.StringOut;
    weight: number | core.NumberOut;
}
export interface ActionArgs extends core.SchemaArgs {
    weightedTarget: core.Array<WeightedTarget> | core.ArrayOut<WeightedTarget>;
}
export declare class Action extends core.Schema<ActionArgs> {
    weightedTarget: core.Array<WeightedTarget> | core.ArrayOut<WeightedTarget>;
}
export interface RangeArgs extends core.SchemaArgs {
    end: number | core.NumberOut;
    start: number | core.NumberOut;
}
export declare class Range extends core.Schema<RangeArgs> {
    end: number | core.NumberOut;
    start: number | core.NumberOut;
}
export interface HeaderMatchArgs extends core.SchemaArgs {
    exact?: string | core.StringOut;
    prefix?: string | core.StringOut;
    range?: Range;
    regex?: string | core.StringOut;
    suffix?: string | core.StringOut;
}
export declare class HeaderMatch extends core.Schema<HeaderMatchArgs> {
    exact?: string | core.StringOut;
    prefix?: string | core.StringOut;
    range?: Range;
    regex?: string | core.StringOut;
    suffix?: string | core.StringOut;
}
export interface HeaderArgs extends core.SchemaArgs {
    invert?: boolean | core.BooleanOut;
    match?: HeaderMatch;
    name: string | core.StringOut;
}
export declare class Header extends core.Schema<HeaderArgs> {
    invert?: boolean | core.BooleanOut;
    match?: HeaderMatch;
    name: string | core.StringOut;
}
export interface HttpRouteMatchArgs extends core.SchemaArgs {
    header?: core.Array<Header> | core.ArrayOut<Header>;
    method?: string | core.StringOut;
    prefix: string | core.StringOut;
    scheme?: string | core.StringOut;
}
export declare class HttpRouteMatch extends core.Schema<HttpRouteMatchArgs> {
    header?: core.Array<Header> | core.ArrayOut<Header>;
    method?: string | core.StringOut;
    prefix: string | core.StringOut;
    scheme?: string | core.StringOut;
}
export interface PerRetryTimeoutArgs extends core.SchemaArgs {
    unit: string | core.StringOut;
    value: number | core.NumberOut;
}
export declare class PerRetryTimeout extends core.Schema<PerRetryTimeoutArgs> {
    unit: string | core.StringOut;
    value: number | core.NumberOut;
}
export interface HttpRouteRetryPolicyArgs extends core.SchemaArgs {
    httpRetryEvents?: core.Array<string> | core.ArrayOut<core.StringOut>;
    maxRetries: number | core.NumberOut;
    perRetryTimeout: PerRetryTimeout;
    tcpRetryEvents?: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class HttpRouteRetryPolicy extends core.Schema<HttpRouteRetryPolicyArgs> {
    httpRetryEvents?: core.Array<string> | core.ArrayOut<core.StringOut>;
    maxRetries: number | core.NumberOut;
    perRetryTimeout: PerRetryTimeout;
    tcpRetryEvents?: core.Array<string> | core.ArrayOut<core.StringOut>;
}
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 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 HttpRouteTimeoutArgs extends core.SchemaArgs {
    idle?: Idle;
    perRequest?: PerRequest;
}
export declare class HttpRouteTimeout extends core.Schema<HttpRouteTimeoutArgs> {
    idle?: Idle;
    perRequest?: PerRequest;
}
export interface HttpRouteArgs extends core.SchemaArgs {
    action: Action;
    match: HttpRouteMatch;
    retryPolicy?: HttpRouteRetryPolicy;
    timeout?: HttpRouteTimeout;
}
export declare class HttpRoute extends core.Schema<HttpRouteArgs> {
    action: Action;
    match: HttpRouteMatch;
    retryPolicy?: HttpRouteRetryPolicy;
    timeout?: HttpRouteTimeout;
}
export interface TcpRouteTimeoutArgs extends core.SchemaArgs {
    idle?: Idle;
}
export declare class TcpRouteTimeout extends core.Schema<TcpRouteTimeoutArgs> {
    idle?: Idle;
}
export interface TcpRouteArgs extends core.SchemaArgs {
    action: Action;
    timeout?: TcpRouteTimeout;
}
export declare class TcpRoute extends core.Schema<TcpRouteArgs> {
    action: Action;
    timeout?: TcpRouteTimeout;
}
export interface GrpcRouteRetryPolicyArgs extends core.SchemaArgs {
    grpcRetryEvents?: core.Array<string> | core.ArrayOut<core.StringOut>;
    httpRetryEvents?: core.Array<string> | core.ArrayOut<core.StringOut>;
    maxRetries: number | core.NumberOut;
    perRetryTimeout: PerRetryTimeout;
    tcpRetryEvents?: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class GrpcRouteRetryPolicy extends core.Schema<GrpcRouteRetryPolicyArgs> {
    grpcRetryEvents?: core.Array<string> | core.ArrayOut<core.StringOut>;
    httpRetryEvents?: core.Array<string> | core.ArrayOut<core.StringOut>;
    maxRetries: number | core.NumberOut;
    perRetryTimeout: PerRetryTimeout;
    tcpRetryEvents?: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export interface MetadataArgs extends core.SchemaArgs {
    invert?: boolean | core.BooleanOut;
    match?: HeaderMatch;
    name: string | core.StringOut;
}
export declare class Metadata extends core.Schema<MetadataArgs> {
    invert?: boolean | core.BooleanOut;
    match?: HeaderMatch;
    name: string | core.StringOut;
}
export interface GrpcRouteMatchArgs extends core.SchemaArgs {
    metadata?: core.Array<Metadata> | core.ArrayOut<Metadata>;
    methodName?: string | core.StringOut;
    prefix?: string | core.StringOut;
    serviceName?: string | core.StringOut;
}
export declare class GrpcRouteMatch extends core.Schema<GrpcRouteMatchArgs> {
    metadata?: core.Array<Metadata> | core.ArrayOut<Metadata>;
    methodName?: string | core.StringOut;
    prefix?: string | core.StringOut;
    serviceName?: string | core.StringOut;
}
export interface GrpcRouteArgs extends core.SchemaArgs {
    action: Action;
    match?: GrpcRouteMatch;
    retryPolicy?: GrpcRouteRetryPolicy;
    timeout?: HttpRouteTimeout;
}
export declare class GrpcRoute extends core.Schema<GrpcRouteArgs> {
    action: Action;
    match?: GrpcRouteMatch;
    retryPolicy?: GrpcRouteRetryPolicy;
    timeout?: HttpRouteTimeout;
}
export interface Http2RouteArgs extends core.SchemaArgs {
    action: Action;
    match: HttpRouteMatch;
    retryPolicy?: HttpRouteRetryPolicy;
    timeout?: HttpRouteTimeout;
}
export declare class Http2Route extends core.Schema<Http2RouteArgs> {
    action: Action;
    match: HttpRouteMatch;
    retryPolicy?: HttpRouteRetryPolicy;
    timeout?: HttpRouteTimeout;
}
export interface SpecArgs extends core.SchemaArgs {
    grpcRoute?: GrpcRoute;
    http2Route?: Http2Route;
    httpRoute?: HttpRoute;
    priority?: number | core.NumberOut;
    tcpRoute?: TcpRoute;
}
export declare class Spec extends core.Schema<SpecArgs> {
    grpcRoute?: GrpcRoute;
    http2Route?: Http2Route;
    httpRoute?: HttpRoute;
    priority?: number | core.NumberOut;
    tcpRoute?: TcpRoute;
}
export interface RouteArgs 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>;
    virtualRouterName: string | core.StringOut;
}
export declare class Route extends core.Resource<RouteArgs> {
    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>;
    virtualRouterName: string | core.StringOut;
    constructor(name: string, args?: RouteArgs);
    getNamespace(): string;
}
//# sourceMappingURL=route.d.ts.map