export interface ITimingPhases {
    secure_handshake_ms: number;
    prepare: number;
    socket_wait_ms: number;
    dns_time_ms: number;
    tcp_connect_ms: number;
    time_to_first_byte_ms: number;
    download_time_ms: number;
    process_time_ms: number;
    total_time_ms: number;
}
export type AssertionStatus = 'info' | 'warning' | 'failure';
export interface IAssertion {
    source: string;
    description: string;
    status: AssertionStatus;
    value: any;
    expression: string;
}
export type VariableUsage = 'returnValue' | 'inResponse' | 'info' | 'input' | 'urlLink';
export interface IVariable {
    key: string;
    value: any;
    type: string;
    usage: VariableUsage;
}
export interface IBaseResult {
    name: string;
    duration_ms: number;
    success: boolean;
    start_timestamp_ms: number;
    end_timestamp_ms: number;
    content_length: number;
    metrics: ITimingPhases;
}
export interface IRequestResult extends IBaseResult {
    url: string;
    method: string;
    request_headers: object;
    status: number;
    status_text: string;
    headers: object;
    error?: Error;
}
export interface IStepResult extends IBaseResult {
    ignoreDuration: boolean;
    requests: IRequestResult[];
    assertions?: IAssertion[];
}
export interface ITestResults extends IBaseResult {
    description: string;
    base_url: string;
    value: number;
    type: string;
    result_version: string;
    producer: string;
    message: string;
    returncode: number;
    unit: string;
    errors?: Error[];
    steps: IStepResult[];
    variables?: IVariable[];
}
export declare function initBaseResult(result: IBaseResult, name: string): IBaseResult;
export declare function incrementTimingPhases(base: ITimingPhases, add: ITimingPhases): void;
export declare function roundTimingPhases(timings: ITimingPhases): void;
