import { IHttpRequest, Kind as HttpRequestKind } from '../models/HttpRequest.js';
import { IRequestAuthorization } from '../models/RequestAuthorization.js';
import { IRequestConfig } from '../models/RequestConfig.js';
import Proxy, { IProxyResult } from './Proxy.js';
import { HttpCertificate } from '../models/ClientCertificate.js';
import { IRequestLog } from '../models/RequestLog.js';
import { IHttpFlow } from '../models/http-flows/HttpFlows.js';
import { IHttpAssertion } from '../models/http-flows/HttpAssertion.js';
export interface IRequestProxyInit {
    kind: typeof HttpRequestKind;
    /**
     * The request to execute.
     */
    request: IHttpRequest;
    /**
     * The authorization data to apply.
     */
    authorization?: IRequestAuthorization[];
    /**
     * The request configuration.
     */
    config?: IRequestConfig;
    /**
     * The list of execution variables to use with the request.
     */
    variables?: Record<string, string>;
    /**
     * The certificate data to use with the request.
     */
    certificate?: HttpCertificate;
    /**
     * The request flows to execute with the request.
     */
    flows?: IHttpFlow[];
    /**
     * Assertions to execute with the request.
     */
    assertions?: IHttpAssertion[];
    /**
     * A signal to be sent to the proxy bindings to abort the request on demand.
     */
    signal?: AbortSignal | null;
}
/**
 * Proxies a single HTTP request
 */
export default class RequestProxy extends Proxy {
    init?: IRequestProxyInit;
    configure(init: IRequestProxyInit): Promise<void>;
    execute(): Promise<IProxyResult<IRequestLog>>;
}
//# sourceMappingURL=RequestProxy.d.ts.map