import { IModelsError, IModelsErrorCode, IModelsErrorDetail, IModelsOriginalError } from "../types";
export interface IModelsApiError {
    code: string;
    statusCode?: number;
    message?: string;
    details?: IModelsApiErrorDetail[];
}
interface IModelsApiErrorDetail {
    code: string;
    message: string;
    target: string;
}
export declare class IModelsErrorBaseImpl extends Error {
    code: IModelsErrorCode;
    originalError: IModelsOriginalError | undefined;
    constructor(params: {
        code: IModelsErrorCode;
        message: string;
        originalError: IModelsOriginalError | undefined;
    });
}
export declare class IModelsErrorImpl extends IModelsErrorBaseImpl implements IModelsError {
    details?: IModelsErrorDetail[];
    statusCode?: number;
    constructor(params: {
        code: IModelsErrorCode;
        message: string;
        originalError: IModelsOriginalError | undefined;
        details: IModelsErrorDetail[] | undefined;
        statusCode: number | undefined;
    });
}
export interface ResponseInfo {
    statusCode?: number;
    body?: unknown;
}
export declare class IModelsErrorParser {
    protected static readonly _defaultErrorMessage = "Unknown error occurred";
    protected static readonly _defaultUnauthorizedMessage = "Authorization failed";
    static parse(response: ResponseInfo, originalError: IModelsOriginalError): Error;
    protected static parseCode(errorCode: string | undefined): IModelsErrorCode;
    private static adjustErrorCodeCaseToMatchEnum;
    private static parseDetails;
    private static parseAndFormatMessage;
    private static createUnrecognizedError;
    private static createUnauthorizedError;
}
export {};
//# sourceMappingURL=IModelsErrorParser.d.ts.map