import { Construct } from 'constructs';
import { CfnGatewayRoute, CfnRoute } from './appmesh.generated';
/**
 * (experimental) The type returned from the `bind()` method in {@link HttpRoutePathMatch}.
 *
 * @experimental
 */
export interface HttpRoutePathMatchConfig {
    /**
     * (experimental) Route configuration for matching on the complete URL path of the request.
     *
     * @default - no matching will be performed on the complete URL path
     * @experimental
     */
    readonly wholePathMatch?: CfnRoute.HttpPathMatchProperty;
    /**
     * (experimental) Route configuration for matching on the prefix of the URL path of the request.
     *
     * @default - no matching will be performed on the prefix of the URL path
     * @experimental
     */
    readonly prefixPathMatch?: string;
}
/**
 * (experimental) Defines HTTP route matching based on the URL path of the request.
 *
 * @experimental
 */
export declare abstract class HttpRoutePathMatch {
    /**
     * (experimental) The value of the path must match the specified value exactly.
     *
     * The provided `path` must start with the '/' character.
     *
     * @param path the exact path to match on.
     * @experimental
     */
    static exactly(path: string): HttpRoutePathMatch;
    /**
     * (experimental) The value of the path must match the specified regex.
     *
     * @param regex the regex used to match the path.
     * @experimental
     */
    static regex(regex: string): HttpRoutePathMatch;
    /**
     * (experimental) The value of the path must match the specified prefix.
     *
     * @param prefix the value to use to match the beginning of the path part of the URL of the request.
     * @experimental
     */
    static startsWith(prefix: string): HttpRoutePathMatch;
    /**
     * (experimental) Returns the route path match configuration.
     *
     * @experimental
     */
    abstract bind(scope: Construct): HttpRoutePathMatchConfig;
}
/**
 * (experimental) The type returned from the `bind()` method in {@link HttpGatewayRoutePathMatch}.
 *
 * @experimental
 */
export interface HttpGatewayRoutePathMatchConfig {
    /**
     * (experimental) Gateway route configuration for matching on the complete URL path of the request.
     *
     * @default - no matching will be performed on the complete URL path
     * @experimental
     */
    readonly wholePathMatch?: CfnGatewayRoute.HttpPathMatchProperty;
    /**
     * (experimental) Gateway route configuration for matching on the prefix of the URL path of the request.
     *
     * @default - no matching will be performed on the prefix of the URL path
     * @experimental
     */
    readonly prefixPathMatch?: string;
    /**
     * (experimental) Gateway route configuration for rewriting the complete URL path of the request..
     *
     * @default - no rewrite will be performed on the request's complete URL path
     * @experimental
     */
    readonly wholePathRewrite?: CfnGatewayRoute.HttpGatewayRoutePathRewriteProperty;
    /**
     * (experimental) Gateway route configuration for rewriting the prefix of the URL path of the request.
     *
     * @default - rewrites the request's URL path to '/'
     * @experimental
     */
    readonly prefixPathRewrite?: CfnGatewayRoute.HttpGatewayRoutePrefixRewriteProperty;
}
/**
 * (experimental) Defines HTTP gateway route matching based on the URL path of the request.
 *
 * @experimental
 */
export declare abstract class HttpGatewayRoutePathMatch {
    /**
     * (experimental) The value of the path must match the specified prefix.
     *
     * @param prefix the value to use to match the beginning of the path part of the URL of the request.
     * @param rewriteTo Specify either disabling automatic rewrite or rewriting to specified prefix path.
     * @experimental
     */
    static startsWith(prefix: string, rewriteTo?: string): HttpGatewayRoutePathMatch;
    /**
     * (experimental) The value of the path must match the specified value exactly.
     *
     * The provided `path` must start with the '/' character.
     *
     * @param path the exact path to match on.
     * @param rewriteTo the value to substitute for the matched part of the path of the gateway request URL As a default, retains original request's URL path.
     * @experimental
     */
    static exactly(path: string, rewriteTo?: string): HttpGatewayRoutePathMatch;
    /**
     * (experimental) The value of the path must match the specified regex.
     *
     * @param regex the regex used to match the path.
     * @param rewriteTo the value to substitute for the matched part of the path of the gateway request URL As a default, retains original request's URL path.
     * @experimental
     */
    static regex(regex: string, rewriteTo?: string): HttpGatewayRoutePathMatch;
    /**
     * (experimental) Returns the gateway route path match configuration.
     *
     * @experimental
     */
    abstract bind(scope: Construct): HttpGatewayRoutePathMatchConfig;
}
