/// <reference types="node" />
import type { InspectOptions } from 'util';
import type { Maybe } from "../Maybe";
export declare type ErrorHandler<T> = T | ((err: any) => T);
/**
 * Gets the value from the value or handler/
 * @param err The error that was thrown
 * @param handlerOrValue Maybe either actual value, or a function from the error
 * to a value
 */
export declare function fromHandler<T>(err: any, handlerOrValue: ErrorHandler<T>): T;
/**
 * Gets the value from the value or handler/
 * @param err The error that was thrown
 * @param handlerOrValue Maybe either actual value, or a function from the error
 * to a value
 */
export declare function fromHandler<T>(err: any, handlerOrValue?: ErrorHandler<T>): Maybe<T>;
export interface ErrorLike {
    message: string;
}
export declare function isErrorLike(err: any): err is ErrorLike;
export declare const DEF_INSPECT_OPT: InspectOptions;
/**
 * Converts the data to JSON. \
 * If the data cannot be represented as JSON (circular references, invalid chars, etc')
 * it is inspected, and the inspection result is JSON stringified.
 * @param data The data to serialize
 * @param inspectionDepth If simple JSON serialization fails, specify the inspections
 * depth for the data
 * @returns Data serialized as string
 */
export declare function safeJSONSerialize(data: unknown, inspectionDepth?: number): string;
/**
 * Parse stringified data. \
 * Opposite of `JSON.stringify` that doesn't throw on undefined.
 * @param json Anything that may return from `JSON.stringify`
 * @returns The parsed data
 */
export declare function parseJSONStringified(json: Maybe<string>): unknown;
