import { MatchBuilder } from '../../lib/builders/match_builder';
import { UrlMatchBuilder } from '../../lib/builders/url_match_builder';
export interface Request {
    basicAuthCredentials?: {
        password: string;
        username: string;
    };
    bodyPatterns?: MatchBuilder[];
    cookies?: {
        [key: string]: MatchBuilder;
    };
    headers?: {
        [key: string]: MatchBuilder;
    };
    method?: string;
    queryParameters?: {
        [key: string]: MatchBuilder;
    };
    urlMatchBuilder?: UrlMatchBuilder;
}
export interface RequestJSON extends Request {
    url?: string;
    urlPath?: string;
    urlPathPattern?: string;
    urlPattern?: string;
}
export interface RequestBuilder {
    isADelete: RequestBuilder;
    isAGet: RequestBuilder;
    isAHead: RequestBuilder;
    isAnOptions: RequestBuilder;
    isAnyVerb: RequestBuilder;
    isAPost: RequestBuilder;
    isAPut: RequestBuilder;
    isATrace: RequestBuilder;
    withBody: MatchBuilder;
    withUrl: UrlMatchBuilder;
    withUrlPath: UrlMatchBuilder;
    withBasicAuth(username: string, password: string): RequestBuilder;
    withCookie(key: string): MatchBuilder;
    withHeader(key: string): MatchBuilder;
    withQueryParam(key: string): MatchBuilder;
}
export declare class RequestBuilderImpl implements RequestBuilder {
    protected request: Partial<Request>;
    protected urlMatchBuilder: UrlMatchBuilder;
    clone(): RequestBuilderImpl;
    get isADelete(): this;
    get isAGet(): this;
    get isAHead(): this;
    get isAnOptions(): this;
    get isAnyVerb(): this;
    get isAPost(): this;
    get isAPut(): this;
    get isATrace(): this;
    toJSON: () => RequestJSON;
    withBasicAuth(username: string, password: string): RequestBuilder;
    get withBody(): MatchBuilder;
    withCookie(key: string): MatchBuilder;
    withHeader(key: string): MatchBuilder;
    withQueryParam(key: string): MatchBuilder;
    get withUrl(): UrlMatchBuilder;
    get withUrlPath(): UrlMatchBuilder;
}
