import { HttpRequest, IHttpRequest } from '../../models/HttpRequest.js';
import { ISentRequest } from '../../models/SentRequest.js';
import { CookieJar } from '../../cookies/CookieJar.js';
import { IResponse } from '../../models/Response.js';
import { ErrorResponse, IErrorResponse } from '../../models/ErrorResponse.js';
import { IHttpStep } from '../../models/http-flows/HttpStep.js';
import { FlowValue } from './HttpFlowRunner.js';
import { FlowRequestDataEnum, FlowResponseDataEnum } from '../../models/http-flows/HttpFlows.js';
import { IReadDataSourceStep } from '../../models/http-flows/steps/data/ReadDataSourceStep.js';
import { IReadValueStep } from '../../models/http-flows/steps/data/ReadValueStep.js';
import { HttpResponse } from '../../models/HttpResponse.js';
import { IRoundStep } from '../../models/http-flows/steps/transformation/RoundStep.js';
import { ISubstringStep } from '../../models/http-flows/steps/transformation/SubstringStep.js';
import { IEqualAssertion } from '../../models/http-flows/steps/assertion/EqualAssertion.js';
import { INotEqualAssertion } from '../../models/http-flows/steps/assertion/NotEqualAssertion.js';
import { IGreaterThanAssertion } from '../../models/http-flows/steps/assertion/GreaterThanAssertion.js';
import { ILessThanAssertion } from '../../models/http-flows/steps/assertion/LessThanAssertion.js';
import { IIncludesAssertion } from '../../models/http-flows/steps/assertion/IncludesAssertion.js';
import { INotIncludesAssertion } from '../../models/http-flows/steps/assertion/NotIncludesAssertion.js';
import { IToBeAssertion } from '../../models/http-flows/steps/assertion/ToBeAssertion.js';
import { INotToBeAssertion } from '../../models/http-flows/steps/assertion/NotToBeAssertion.js';
import { ILengthOfAssertion } from '../../models/http-flows/steps/assertion/LengthOfAssertion.js';
import { IReadDataStep } from '../../models/http-flows/steps/data/ReadDataStep.js';
import { ISetDataStep } from '../../models/http-flows/steps/data/SetDataStep.js';
import { ISetVariableStep } from '../../models/http-flows/steps/data/SetVariableStep.js';
import { ISetCookieStep } from '../../models/http-flows/steps/data/SetCookieStep.js';
import { IDeleteCookieStep } from '../../models/http-flows/steps/data/DeleteCookieStep.js';
export interface IStepValue {
    value: FlowValue;
    type?: FlowRequestDataEnum | FlowResponseDataEnum;
    bodyMime?: string;
}
/**
 * A class that supports both assertions and flows.
 * The derived classes specializes in a specific user flow (either performing flow actions or running assertions).
 */
export declare class HttpFlows {
    /**
     * The cumulative list of all variables to be applied to the request and other properties.
     * The variables must be already processed for variables in values (evaluated).
     *
     * These variables are passed by reference. Changes made anywhere to the variables will result
     * with updating this list.
     */
    variables?: Record<string, string>;
    /**
     * An instance of a cookie jar (store) to put/read cookies.
     */
    cookies?: CookieJar;
    protected runStep(request: ISentRequest | IHttpRequest, step: IHttpStep, input: IStepValue, response?: IResponse | IErrorResponse): Promise<IStepValue>;
    /**
     * Produces the data source.
     */
    protected readDataSource(request: ISentRequest | IHttpRequest, step: IReadDataSourceStep, response?: IResponse | IErrorResponse): Promise<IStepValue>;
    protected processBody(input: HttpRequest | HttpResponse | ErrorResponse): Promise<IStepValue>;
    /**
     * Produces the value from the current input.
     */
    protected readValue(input: IStepValue, step: IReadValueStep): Promise<IStepValue>;
    protected toLowerCase(input: IStepValue): Promise<IStepValue>;
    protected toUpperCase(input: IStepValue): Promise<IStepValue>;
    protected asNumber(input: IStepValue): Promise<IStepValue>;
    protected round(input: IStepValue, step: IRoundStep): Promise<IStepValue>;
    protected trim(input: IStepValue): Promise<IStepValue>;
    protected substring(input: IStepValue, step: ISubstringStep): Promise<IStepValue>;
    protected assertEqual(input: IStepValue, step: IEqualAssertion): Promise<IStepValue>;
    protected assertNotEqual(input: IStepValue, step: INotEqualAssertion): Promise<IStepValue>;
    protected assertGreaterThan(input: IStepValue, step: IGreaterThanAssertion): Promise<IStepValue>;
    protected assertLessThan(input: IStepValue, step: ILessThanAssertion): Promise<IStepValue>;
    protected assertIncludes(input: IStepValue, step: IIncludesAssertion): Promise<IStepValue>;
    protected assertNotIncludes(input: IStepValue, step: INotIncludesAssertion): Promise<IStepValue>;
    protected assertOk(input: IStepValue): Promise<IStepValue>;
    protected assertNotOk(input: IStepValue): Promise<IStepValue>;
    protected toBe(input: IStepValue, step: IToBeAssertion): Promise<IStepValue>;
    protected notToBe(input: IStepValue, step: INotToBeAssertion): Promise<IStepValue>;
    protected isEmpty(input: IStepValue): Promise<IStepValue>;
    protected isNotEmpty(input: IStepValue): Promise<IStepValue>;
    protected lengthOf(input: IStepValue, step: ILengthOfAssertion): Promise<IStepValue>;
    protected isPrimitive(value: unknown): boolean;
    /**
     * A step that reads data from the request, response, or variables.
     *
     * @param step The step configuration.
     * @param request The HttpRequest or the SentRequest (for responses)
     * @param response When available, the response data
     * @returns The read value or undefined.
     */
    runReadDataStep(input: IStepValue, step: IReadDataStep, request: IHttpRequest | ISentRequest, response?: IResponse | IErrorResponse): Promise<IStepValue>;
    /**
     * A step that returns a pre-configured value.
     *
     * @param step The step configuration.
     * @returns The read value with applied data type.
     */
    runSetDataStep(input: IStepValue, step: ISetDataStep): IStepValue;
    /**
     * A step that sets a variable in the current environment.
     * Note, this passes the step value through.
     *
     * @param step The step configuration.
     * @param value The value to set. A value that is `null` or `undefined` deletes the variable.
     */
    runSetVariableStep(input: IStepValue, step: ISetVariableStep): IStepValue;
    /**
     * A step that sets a cookie.
     * Note, this passes the step value through.
     *
     * @param step The step configuration.
     * @param value The value to sent on the cookie.
     * @param request The request object.
     */
    runSetCookieStep(input: IStepValue, step: ISetCookieStep, request: IHttpRequest | ISentRequest): Promise<IStepValue>;
    /**
     * A step to delete cookies from the cookie jar.
     *
     * Note, this passes the step value through.
     */
    runDeleteCookieStep(input: IStepValue, step: IDeleteCookieStep, request: IHttpRequest | ISentRequest): Promise<IStepValue>;
}
//# sourceMappingURL=HttpFlows.d.ts.map