/**
 * 🌪️ *filter*
 *
 * Filter the type `T` to ensure it is a union.
 *
 * @example
 * ```ts
 * type R = IsUnion<'a' | 'b'> // 'a' | 'b'
 * type R = IsUnion<boolean> // boolean
 * type R = IsUnion<number> // never
 * ```
 */
export type UnionType<T, Then = T, Else = never> = UnionType.Device<T, Then, Else>;
/**
 * 🎭 *validate*
 *
 * Validate the type `T` is a union.
 *
 * @author Nurbol Alpysbayev
 * @see https://stackoverflow.com/questions/53953814/typescript-check-if-a-type-is-a-union
 *
 * @example
 * ```ts
 * type R = IsUnion<'a' | 'b'> // true
 * type R = IsUnion<boolean> // true
 * type R = IsUnion<number> // false
 * ```
 */
export type IsUnion<T, Then = true, Else = false> = UnionType.Device<T, Then, Else>;
export declare namespace UnionType {
    type Device<T, Then, Else, U = T> = (T extends unknown ? (U extends T ? 1 : 2) : never) extends 1 ? Else : Then;
}
//# sourceMappingURL=union.d.ts.map