export declare class UnknownError extends Error {
    data: unknown;
    readonly name = "UnknownError";
    constructor(data: unknown);
}
/**
 * Assertion statement
 * @throws Throws if data is instance of error
 * @export
 *  const request = () =>  P.canFail(()=> axios.get(url))
 *  const result = await request.then(P.assertError)
 * @category Utility
 */
export declare function assertError<T>(data: T | Error): T;
/**
 * Ensures that err is Error instance
 * @signature
 *    P.ensureError(any)
 * @example
 *    const request = doRequest().catch(P.ensureError)
 *    if (P.isError(request)) return
 * @category Utility
 */
export declare function ensureError(err: unknown): Error;
export declare type CanGetError<T> = Error | T;
/**
 * Similar to try catch statement. If function throws insisted callback this function will return `Error` instance
 * @example
 *    const err = P.canFail(()=> JSON.parse(data))
 *    if (P.isError(err)) {
 *        console.log(err)
 *    }
 *
 *
 *    const request = await canFail(() => axios.get(url))
 *    if (P.isError(request)) return
 * @category Utility
 */
export declare function canFail<T>(fn: () => Promise<T>): Promise<CanGetError<T>>;
export declare function canFail<T>(fn: () => T): CanGetError<T>;
//# sourceMappingURL=errors.d.ts.map