/**
 * Created by IR on 3/16/17.
 */
import { Constructor } from "../utils/types";
export declare function isErrorOfType<T extends Error>(e: any, _exceptionType: Constructor<T>): T | undefined;
export declare abstract class CustomException extends Error {
    exceptionType: string;
    isInstanceOf: (_exceptionType: Function) => boolean;
    cause?: Error;
    protected constructor(exceptionType: Function, message: string, cause?: any);
}
export declare class Exception extends CustomException {
    constructor(message: string, cause?: Error);
}
export declare class BadImplementationException extends CustomException {
    constructor(message: string, cause?: Error);
}
export declare class ImplementationMissingException extends CustomException {
    constructor(message: string, cause?: Error);
}
export declare class MUSTNeverHappenException extends CustomException {
    constructor(message: string, cause?: Error);
}
export declare class NotImplementedYetException extends CustomException {
    constructor(message: string, cause?: Error);
}
export declare class ThisShouldNotHappenException extends CustomException {
    constructor(message: string, cause?: Error);
}
export declare class DontCallthisException extends CustomException {
    constructor(message: string, cause?: Error);
}
export declare class WhoCallthisException extends CustomException {
    constructor(message: string, cause?: Error);
}
export declare class AssertionException extends CustomException {
    constructor(message: string, cause?: Error);
}
