import { AssertionOptions, AssertionsAndVariablesStepDescriptor, AssertionsAndVariablesStepDescriptorAssertion, AssertionsAndVariablesStepDescriptorVariable } from '../types/AssertionsAndVariablesStepDescriptor';
import { AbstractAssertionsAndVariablesStep } from './AbstractAssertionsAndVariablesStep';
import { MablAction } from '../MablAction';
export declare class SendHttpRequestStep extends AbstractAssertionsAndVariablesStep<SendHttpRequestDescriptorAssertion, SendHttpRequestDescriptorVariable, SendHttpRequestDescriptor> {
    static readonly stepName = "SendHttpRequest";
    static readonly actionCode = "send_http_request";
    static readonly mablScriptStepNames: string[];
    static readonly yamlMablScriptNames: string[];
    constructor(descriptor: SendHttpRequestDescriptor);
    private isValidDescriptor;
    static fromYaml(_stepName: string, stepArgs: {
        [key: string]: any;
    }): SendHttpRequestStep;
    static fromLegacyMablscript(args: any[], _actions: MablAction[]): SendHttpRequestStep;
}
export interface SendHttpRequestDescriptor extends AssertionsAndVariablesStepDescriptor<SendHttpRequestDescriptorAssertion, SendHttpRequestDescriptorVariable> {
    request: HttpRequest;
    options?: SendHttpRequestOptions;
}
export interface SendHttpRequestDescriptorVariable extends AssertionsAndVariablesStepDescriptorVariable {
    source: SendHttpRequestVariableSource;
}
export interface SendHttpRequestDescriptorAssertion extends AssertionsAndVariablesStepDescriptorAssertion {
    source: SendHttpRequestVariableSource;
}
export interface SendHttpRequestOptions extends AssertionOptions {
    loadResponseCookies?: boolean;
}
export type HttpRequestMethod = 'GET' | 'DELETE' | 'HEAD' | 'OPTIONS' | 'POST' | 'PUT' | 'PATCH' | 'LINK' | 'UNLINK';
export interface HttpRequest {
    url: string;
    method: HttpRequestMethod;
    authorization?: HttpAuthorizationBasic | HttpAuthorizationBearer;
    headers?: HttpHeader[];
    body?: string;
}
export interface HttpAuthorizationBasic {
    type: 'basic';
    properties: {
        username?: string;
        password?: string;
    };
}
export interface HttpAuthorizationBearer {
    type: 'bearer';
    properties: {
        token: string;
    };
}
export interface HttpHeader {
    name: string;
    value: string;
}
export interface ApiRequestResponseChain {
    requestId: string;
    request: {
        body?: string;
        headers: Record<string, string[] | string | number | boolean>;
        method: HttpRequestMethod;
        protocol?: string;
        url: string;
        request_sent_time: number;
    };
    response?: {
        body?: object | string;
        headers: Record<string, string[]>;
        response_received_time: number;
        response_size: number;
        status: number;
    };
    error?: {
        code?: string;
        message: string;
        error_received_time: number;
    };
}
export declare enum SendHttpRequestVariableSource {
    Body = "body",
    Header = "header",
    Json = "json",
    Response = "response",
    Status = "status"
}
//# sourceMappingURL=SendHttpRequestStep.d.ts.map