/**
 * @module Utilities
 */
export declare const RESULT: {
    readonly FAILURE: "failure";
    readonly SUCCESS: "success";
};
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export type ResultFailure<TError = unknown> = {
    type: (typeof RESULT)["FAILURE"];
    error: TError;
};
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export type ResultSuccess<TValue = unknown> = {
    type: (typeof RESULT)["SUCCESS"];
    value: TValue;
};
/**
 * The `Result` type represents either success or failure.
 *
 * @example
 * ```ts
 * import { Result, resultFailure, resultSuccess, RESULT } from "@daiso-tech/core/utilities";
 *
 * function random(): Result<string, Error> {
 *   const nbr = Math.round(Math.random() * 100);
 *   if (nbr > 50) {
 *     // The resultFailure function return a failed result
 *     return resultFailure(new Error("Unexpected error occured"));
 *   }
 *   // The resultSuccess function return a success result
 *   return resultSuccess("Function succeded");
 * }
 *
 * const result = random();
 *
 * // Checking for failure
 * if (result.type === RESULT.FAILURE) {
 *   console.log("Error occured:", result.error);
 * }
 *
 * // Checking for success
 * if (result.type === RESULT.SUCCESS) {
 *   console.log("Result was successful:", result.value);
 * }
 * ```
 *
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export type Result<TValue = unknown, TError = unknown> = ResultFailure<TError> | ResultSuccess<TValue>;
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export type InferResultError<TValue> = TValue extends Result ? Extract<TValue, ResultFailure>["error"] : unknown;
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export type InferResultSuccess<TValue> = TValue extends Result ? Extract<TValue, ResultSuccess>["value"] : TValue;
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export declare function isResultFailure<TError = unknown>(value: unknown): value is ResultFailure<TError>;
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export declare function isResultSuccess<TSuccess = unknown>(value: unknown): value is ResultSuccess<TSuccess>;
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export declare function isResult<TValue = unknown, TError = unknown>(value: unknown): value is Result<TValue, TError>;
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export declare function resultFailure<TError = unknown>(error: TError): ResultFailure<TError>;
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export declare function resultSuccess<TValue>(value: TValue): ResultSuccess<TValue>;
