import { ResourceBase, ResourceTag as Inner_ResourceTag } from "../../resource";
import { Value, List } from "../../data-types";
export declare class HttpRouteAction {
    WeightedTargets: List<WeightedTarget>;
    constructor(properties: HttpRouteAction);
}
export declare class GrpcRouteMetadataMatchMethod {
    Suffix?: Value<string>;
    Regex?: Value<string>;
    Exact?: Value<string>;
    Prefix?: Value<string>;
    Range?: MatchRange;
    constructor(properties: GrpcRouteMetadataMatchMethod);
}
export declare class HeaderMatchMethod {
    Suffix?: Value<string>;
    Regex?: Value<string>;
    Exact?: Value<string>;
    Prefix?: Value<string>;
    Range?: MatchRange;
    constructor(properties: HeaderMatchMethod);
}
export declare class GrpcRouteMetadata {
    Invert?: Value<boolean>;
    Name: Value<string>;
    Match?: GrpcRouteMetadataMatchMethod;
    constructor(properties: GrpcRouteMetadata);
}
export declare class GrpcRetryPolicy {
    MaxRetries: Value<number>;
    PerRetryTimeout: Duration;
    GrpcRetryEvents?: List<Value<string>>;
    HttpRetryEvents?: List<Value<string>>;
    TcpRetryEvents?: List<Value<string>>;
    constructor(properties: GrpcRetryPolicy);
}
export declare class Duration {
    Value: Value<number>;
    Unit: Value<string>;
    constructor(properties: Duration);
}
export declare class GrpcRouteAction {
    WeightedTargets: List<WeightedTarget>;
    constructor(properties: GrpcRouteAction);
}
export declare class HttpRoute {
    Action: HttpRouteAction;
    RetryPolicy?: HttpRetryPolicy;
    Match: HttpRouteMatch;
    constructor(properties: HttpRoute);
}
export declare class MatchRange {
    Start: Value<number>;
    End: Value<number>;
    constructor(properties: MatchRange);
}
export declare class RouteSpec {
    HttpRoute?: HttpRoute;
    Priority?: Value<number>;
    Http2Route?: HttpRoute;
    GrpcRoute?: GrpcRoute;
    TcpRoute?: TcpRoute;
    constructor(properties: RouteSpec);
}
export declare class GrpcRouteMatch {
    ServiceName?: Value<string>;
    Metadata?: List<GrpcRouteMetadata>;
    MethodName?: Value<string>;
    constructor(properties: GrpcRouteMatch);
}
export declare class TcpRouteAction {
    WeightedTargets: List<WeightedTarget>;
    constructor(properties: TcpRouteAction);
}
export declare class GrpcRoute {
    Action: GrpcRouteAction;
    RetryPolicy?: GrpcRetryPolicy;
    Match: GrpcRouteMatch;
    constructor(properties: GrpcRoute);
}
export declare class HttpRouteHeader {
    Invert?: Value<boolean>;
    Name: Value<string>;
    Match?: HeaderMatchMethod;
    constructor(properties: HttpRouteHeader);
}
export declare class HttpRouteMatch {
    Scheme?: Value<string>;
    Headers?: List<HttpRouteHeader>;
    Prefix: Value<string>;
    Method?: Value<string>;
    constructor(properties: HttpRouteMatch);
}
export declare class HttpRetryPolicy {
    MaxRetries: Value<number>;
    PerRetryTimeout: Duration;
    HttpRetryEvents?: List<Value<string>>;
    TcpRetryEvents?: List<Value<string>>;
    constructor(properties: HttpRetryPolicy);
}
export declare class TcpRoute {
    Action: TcpRouteAction;
    constructor(properties: TcpRoute);
}
export declare class WeightedTarget {
    VirtualNode: Value<string>;
    Weight: Value<number>;
    constructor(properties: WeightedTarget);
}
export interface RouteProperties {
    MeshName: Value<string>;
    VirtualRouterName: Value<string>;
    MeshOwner?: Value<string>;
    RouteName: Value<string>;
    Spec: RouteSpec;
    Tags?: List<Inner_ResourceTag>;
}
export default class Inner_Route extends ResourceBase<RouteProperties> {
    static HttpRouteAction: typeof HttpRouteAction;
    static GrpcRouteMetadataMatchMethod: typeof GrpcRouteMetadataMatchMethod;
    static HeaderMatchMethod: typeof HeaderMatchMethod;
    static GrpcRouteMetadata: typeof GrpcRouteMetadata;
    static GrpcRetryPolicy: typeof GrpcRetryPolicy;
    static Duration: typeof Duration;
    static GrpcRouteAction: typeof GrpcRouteAction;
    static HttpRoute: typeof HttpRoute;
    static MatchRange: typeof MatchRange;
    static RouteSpec: typeof RouteSpec;
    static GrpcRouteMatch: typeof GrpcRouteMatch;
    static TcpRouteAction: typeof TcpRouteAction;
    static GrpcRoute: typeof GrpcRoute;
    static HttpRouteHeader: typeof HttpRouteHeader;
    static HttpRouteMatch: typeof HttpRouteMatch;
    static HttpRetryPolicy: typeof HttpRetryPolicy;
    static TcpRoute: typeof TcpRoute;
    static WeightedTarget: typeof WeightedTarget;
    constructor(properties: RouteProperties);
}
