import { IResponseRedirect, ResponseRedirect } from './ResponseRedirect.js';
import { ISentRequest, SentRequest } from './SentRequest.js';
import { IErrorResponse, ErrorResponse } from './ErrorResponse.js';
import { IResponse, Response } from './Response.js';
import { IRequestsSize, RequestsSize } from './RequestsSize.js';
import { ResponseRedirect as LegacyRedirect } from './legacy/request/ArcResponse.js';
import { AssertionResult } from './http-flows/HttpAssertion.js';
export declare const Kind = "Core#ResponseLog";
/**
 * Describes a request / response pair associated with a request.
 */
export interface IRequestLog {
    kind: typeof Kind;
    /**
     * Describes an HTTP request sent by the transport.
     */
    request?: ISentRequest;
    /**
     * The last response made with this request, if any.
     */
    response?: IResponse | IErrorResponse;
    /**
     * The list of redirects, if any.
     */
    redirects?: IResponseRedirect[];
    /**
     * Request and response size. Some HTTP clients may not give this information.
     */
    size?: IRequestsSize;
    /**
     * Optional request ID defined on an HTTP project that triggered this log.
     */
    requestId?: string;
    /**
     * The assertions result performed on the response.
     * Note, Error response can also be passed through tests.
     */
    assertions?: AssertionResult[];
}
/**
 * A request / response pair associated with a request.
 */
export declare class RequestLog {
    kind: string;
    /**
     * Describes an HTTP request sent by the transport.
     */
    request?: SentRequest;
    /**
     * The last response made with this request, if any.
     */
    response?: Response | ErrorResponse;
    /**
     * The list of redirects, if any.
     */
    redirects?: ResponseRedirect[];
    /**
     * Request and response size. Some HTTP clients may not give this information.
     */
    size?: RequestsSize;
    /**
     * Optional request ID defined on an HTTP project that triggered this log.
     */
    requestId?: string;
    /**
     * The assertions result performed on the response.
     * Note, Error response can also be passed through tests.
     */
    assertions?: AssertionResult[];
    static fromRequest(request: ISentRequest): RequestLog;
    static fromRequestResponse(request: ISentRequest, response: IResponse | IErrorResponse): RequestLog;
    /**
     * @param input The response definition used to restore the state.
     */
    constructor(input?: string | IRequestLog);
    /**
     * Creates a new response clearing anything that is so far defined.
     */
    new(init: IRequestLog): void;
    toJSON(): IRequestLog;
    /**
     * Adds a redirect to this log.
     * It checks whether the redirects array has been initialized.
     */
    addRedirect(redirect: IResponseRedirect): ResponseRedirect;
    addLegacyRedirect(redirect: LegacyRedirect): Promise<ResponseRedirect>;
}
//# sourceMappingURL=RequestLog.d.ts.map