import { Boom as InternalBoom } from '@meshwatch/types';
import { FormErrorKeys, FormErrorsBoom } from '../validation/types';
export declare function validationBoom<T>(errors?: T): InternalBoom<T>;
export declare function boomify<T>(error: Error, options?: {
    statusCode?: number;
    message?: string;
    override?: boolean;
}): InternalBoom<T>;
export declare function isBoom<T, K = undefined | FormErrorKeys<T>>(body: T | FormErrorsBoom<K>): body is FormErrorsBoom<K>;
declare abstract class ServiceException extends Error {
    httpStatusCode: number;
    constructor(message: string, httpStatusCode: number, name: string);
}
export declare class DatabaseException extends ServiceException {
    constructor(message: string);
}
export declare class NotFoundException extends ServiceException {
    constructor(message: string);
}
export declare class ForbiddenException extends ServiceException {
    constructor(message: string);
}
export declare class BadRequestException extends ServiceException {
    constructor(message: string);
}
export declare class UnreachableCaseError extends ServiceException {
    constructor(val: never);
}
export {};
