import { AxiosResponse } from 'axios';
import { Optional } from '../../common';
import { ClassConstructor } from 'class-transformer';
export interface ApiResponseStatus {
    statusCode: number;
    message: string;
}
export declare class ApiError extends Error {
    readonly status: ApiResponseStatus;
    constructor(message: string, status: ApiResponseStatus);
}
export declare class BaseRequest {
    constructor();
}
export declare class BaseResponse {
    constructor();
    message?: string;
    msg?: string;
    status: number;
}
export declare class Request<PayloadType extends BaseRequest> {
    private url;
    private headers;
    private payload;
    constructor(url: string, headers: Record<string, string>, payload?: PayloadType | undefined);
    get<ResponseType>(as?: ClassConstructor<ResponseType>, saveToFile?: Optional<string>): Promise<AxiosResponse<ResponseType | ResponseType[]>>;
    post<ResponseType extends BaseResponse>(as?: ClassConstructor<ResponseType>, saveToFile?: Optional<string>): Promise<AxiosResponse<ResponseType>>;
}
export declare function request<PayloadType extends BaseRequest = BaseRequest>(url: string, headers: Record<string, string>, payload?: PayloadType | undefined): Request<PayloadType>;
//# sourceMappingURL=request.util.d.ts.map