export declare class ApiError<T = any> extends Error {
    code: string;
    status: number;
    i18n?: string;
    id?: string;
    detail?: T;
    isApiError: boolean;
    constructor(status: number, error: ErrorType, args?: {
        message?: string;
        detail?: T;
        stack?: any;
        status?: number;
    });
}
export declare class GenericError<T = any> extends ApiError<T> {
    constructor(error?: ErrorType, args?: ErrorArgs<T>);
}
export declare class BadRequestError<T = any> extends ApiError<T> {
    constructor(error?: ErrorType, args?: ErrorArgs<T>);
}
export declare class NotFoundError<T = any> extends ApiError<T> {
    constructor(error?: ErrorType, args?: ErrorArgs<T>);
}
export declare class ForbiddenError<T = any> extends ApiError<T> {
    constructor(error?: ErrorType, args?: ErrorArgs<T>);
}
export declare class InternalServerError<T = any> extends ApiError<T> {
    constructor(error?: ErrorType, args?: ErrorArgs<T>);
}
export declare class UnauthorizedError<T = any> extends ApiError<T> {
    constructor(error?: ErrorType, args?: ErrorArgs<T>);
}
export declare class ValidationError<T = any> extends ApiError<T> {
    constructor(error?: ErrorType, args?: ErrorArgs<T>);
}
export declare class AuthenticationError<T = any> extends ApiError<T> {
    constructor(error?: ErrorType, args?: ErrorArgs<T>);
}
export interface ErrorType {
    code: string;
    message: string;
    i18n?: string;
}
export interface ErrorArgs<T> {
    message?: string;
    status?: number;
    detail?: T;
    stack?: any;
}
