import { t as Maybe } from "./Maybe-BVpZiDsE.cjs";
import { EmptyObject, IsEqual } from "type-fest";

//#region src/types/EmptyObject.d.ts
/**
 * Represents an empty object, either with or without properties.
 */
type EmptyObject$1<T extends object = never> = IsEqual<T, never> extends true ? EmptyObject : KeyedEmptyObject<T>;
/**
 * Represents an empty object with keys from another object.
 * @example
 * ```ts
 * type A = KeyedEmptyObject<{ a: string; b: number }>;
 * // type A = { a?: never; b?: never }
 * ```
 */
type KeyedEmptyObject<T extends object> = { [K in keyof T]?: never };
//#endregion
//#region src/functions/isEmpty/isEmpty.d.ts
/**
 * Returns whether the input value is empty.
 * @param value The value to check.
 * @returns Whether the input value is empty.
 * @example
 * ```ts
 * isEmpty('') // true
 * isEmpty('abc') // false
 * ```
 */
declare function isEmpty(value: string): value is '';
/**
 * Returns whether the input value is empty.
 * @param value The value to check.
 * @returns Whether the input value is empty.
 * @example
 * ```ts
 * isEmpty(0) // true
 * isEmpty(1) // false
 * ```
 */
declare function isEmpty(value: number): value is number;
/**
 * Returns whether the input value is empty.
 * @param value The value to check.
 * @returns Whether the input value is empty.
 * @example
 * ```ts
 * isEmpty(new Map()) // true
 * isEmpty(new Map([['a', 1]])) // false
 *
 * isEmpty(new Set()) // true
 * isEmpty(new Set([1])) // false
 * ```
 */
declare function isEmpty(value: Maybe<ReadonlyMap<unknown, unknown> | ReadonlySet<unknown>>): boolean;
/**
 * Returns whether the input value is empty.
 * @param value The value to check.
 * @returns Whether the input value is empty.
 * @example
 * ```ts
 * isEmpty([]) // true
 * isEmpty([1]) // false
 * ```
 */
declare function isEmpty<T extends readonly unknown[] | EmptyArray>(value: Maybe<T>): value is Maybe<T & EmptyArray>;
/**
 * Returns whether the input value is empty.
 * @param value The value to check.
 * @returns Whether the input value is empty.
 * @example
 * ```ts
 * isEmpty({}) // true
 * isEmpty({ a: 1 }) // false
 * ```
 */
declare function isEmpty<T extends object>(value: Maybe<EmptyObject$1<T> | T>): value is T & Record<string, never>;
/**
 * Returns whether the input value is empty.
 * @param value The value to check.
 * @returns Whether the input value is empty.
 * @example
 * ```ts
 * isEmpty(null) // true
 * isEmpty(undefined) // true
 * isEmpty(0) // true
 * isEmpty('') // true
 * isEmpty([]) // true
 * isEmpty({}) // true
 * isEmpty(new Map()) // true
 * isEmpty(new Set()) // true
 * isEmpty(false) // true
 *
 * isEmpty(true) // false
 * isEmpty(1) // false
 * isEmpty('abc') // false
 * isEmpty([1]) // false
 * isEmpty({ a: 1 }) // false
 * isEmpty(new Map([['a', 1]])) // false
 * isEmpty(new Set([1])) // false
 * ```
 */
declare function isEmpty<T>(value: Maybe<T>): boolean;
type EmptyArray = [];
//#endregion
export { IsEqual as i, EmptyObject$1 as n, KeyedEmptyObject as r, isEmpty as t };
//# sourceMappingURL=isEmpty-D-wvko_c.d.cts.map