import { _Omit } from './Omit'; import { _Pick } from './Pick'; import { Key } from '../Any/Key'; import { Strict } from '../Union/Strict'; import { Boolean } from '../Boolean/_Internal'; import { ComputeRaw } from '../Any/Compute'; /** * @hidden */ declare type __Either = _Omit & ({ [P in K]: _Pick; }[K]); /** * @hidden */ declare type EitherStrict = Strict<__Either>; /** * @hidden */ declare type EitherLoose = ComputeRaw<__Either>; /** * @hidden */ export declare type _Either = { 1: EitherStrict; 0: EitherLoose; }[strict]; /** * Split `O` into a [[Union]] with `K` keys in such a way that none of * the keys are ever present with one another within the different unions. * @param O to split * @param K to split with * @param strict (?=`1`) to force excess property checks https://github.com/microsoft/TypeScript/issues/20863 * @returns [[Object]] [[Union]] * @example * ```ts * ``` */ export declare type Either = O extends unknown ? _Either : never; export {};