/**
 * It's a bit tricky to extends native errors
 * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error
 */
import { ErrorBody, Token, TokenBody } from './TokenGenerator/types';
declare class HttpError extends Error {
    baseResponse: Response;
    constructor(message: null | string, baseResponse: Response);
    /**
     * Get the JSON of the baseResponse directly, if possible
     */
    responseJson(): Promise<Record<string, unknown>>;
}
declare class OauthError extends Error {
    previousError: HttpError | undefined;
    constructor(message: null | string, previousError?: HttpError);
}
declare class InvalidGrantError extends OauthError {
    previousError: HttpError | undefined;
    constructor(message: null | string, previousError?: HttpError);
}
declare class InvalidScopeError extends OauthError {
    previousError: HttpError | undefined;
    constructor(message: null | string, previousError?: HttpError);
}
declare class BadRequestError extends HttpError {
    baseResponse: Response;
    constructor(message: null | string, baseResponse: Response);
}
declare class UnauthorizedError extends BadRequestError {
    baseResponse: Response;
    constructor(message: null | string, baseResponse: Response);
}
declare class ForbiddenError extends BadRequestError {
    baseResponse: Response;
    constructor(message: null | string, baseResponse: Response);
}
declare class ResourceNotFoundError extends BadRequestError {
    baseResponse: Response;
    constructor(message: null | string, baseResponse: Response);
}
declare class ConflictError extends BadRequestError {
    baseResponse: Response;
    constructor(message: null | string, baseResponse: Response);
}
declare class InternalServerError extends HttpError {
    baseResponse: Response;
    constructor(message: null | string, baseResponse: Response);
}
/**
 * @returns {HttpError}
 */
declare function getHttpErrorFromResponse(originalResponse: Response): HttpError;
declare function isOauthError(body: TokenBody<Token>): body is ErrorBody;
export { UnauthorizedError, BadRequestError, ConflictError, ForbiddenError, HttpError, InternalServerError, ResourceNotFoundError, getHttpErrorFromResponse, OauthError, InvalidGrantError, InvalidScopeError, isOauthError, };
