import { Construct } from 'constructs';
import { CfnRoute } from './index';
/**
 * (experimental) Configuration for `HeaderMatch`.
 *
 * @experimental
 */
export interface HeaderMatchConfig {
    /**
     * (experimental) Route CFN configuration for the route header match.
     *
     * @experimental
     */
    readonly headerMatch: CfnRoute.HttpRouteHeaderProperty;
}
/**
 * (experimental) Used to generate header matching methods.
 *
 * @experimental
 */
export declare abstract class HeaderMatch {
    /**
     * (experimental) The value of the header with the given name in the request must match the specified value exactly.
     *
     * @param headerName the name of the header to match against.
     * @param headerValue The exact value to test against.
     * @experimental
     */
    static valueIs(headerName: string, headerValue: string): HeaderMatch;
    /**
     * (experimental) The value of the header with the given name in the request must not match the specified value exactly.
     *
     * @param headerName the name of the header to match against.
     * @param headerValue The exact value to test against.
     * @experimental
     */
    static valueIsNot(headerName: string, headerValue: string): HeaderMatch;
    /**
     * (experimental) The value of the header with the given name in the request must start with the specified characters.
     *
     * @param headerName the name of the header to match against.
     * @param prefix The prefix to test against.
     * @experimental
     */
    static valueStartsWith(headerName: string, prefix: string): HeaderMatch;
    /**
     * (experimental) The value of the header with the given name in the request must not start with the specified characters.
     *
     * @param headerName the name of the header to match against.
     * @param prefix The prefix to test against.
     * @experimental
     */
    static valueDoesNotStartWith(headerName: string, prefix: string): HeaderMatch;
    /**
     * (experimental) The value of the header with the given name in the request must end with the specified characters.
     *
     * @param headerName the name of the header to match against.
     * @param suffix The suffix to test against.
     * @experimental
     */
    static valueEndsWith(headerName: string, suffix: string): HeaderMatch;
    /**
     * (experimental) The value of the header with the given name in the request must not end with the specified characters.
     *
     * @param headerName the name of the header to match against.
     * @param suffix The suffix to test against.
     * @experimental
     */
    static valueDoesNotEndWith(headerName: string, suffix: string): HeaderMatch;
    /**
     * (experimental) The value of the header with the given name in the request must include the specified characters.
     *
     * @param headerName the name of the header to match against.
     * @param regex The regex to test against.
     * @experimental
     */
    static valueMatchesRegex(headerName: string, regex: string): HeaderMatch;
    /**
     * (experimental) The value of the header with the given name in the request must not include the specified characters.
     *
     * @param headerName the name of the header to match against.
     * @param regex The regex to test against.
     * @experimental
     */
    static valueDoesNotMatchRegex(headerName: string, regex: string): HeaderMatch;
    /**
     * (experimental) The value of the header with the given name in the request must be in a range of values.
     *
     * @param headerName the name of the header to match against.
     * @param start Match on values starting at and including this value.
     * @param end Match on values up to but not including this value.
     * @experimental
     */
    static valuesIsInRange(headerName: string, start: number, end: number): HeaderMatch;
    /**
     * (experimental) The value of the header with the given name in the request must not be in a range of values.
     *
     * @param headerName the name of the header to match against.
     * @param start Match on values starting at and including this value.
     * @param end Match on values up to but not including this value.
     * @experimental
     */
    static valuesIsNotInRange(headerName: string, start: number, end: number): HeaderMatch;
    /**
     * (experimental) Returns the header match configuration.
     *
     * @experimental
     */
    abstract bind(scope: Construct): HeaderMatchConfig;
}
