import { Exclude } from '../Union/Exclude'; import { Match } from '../Any/_Internal'; import { Is } from '../Any/Is'; import { At } from '../Any/At'; import { Keys } from '../Any/Keys'; /** * @hidden */ export declare type _ExcludeMatch = { [K in keyof O]-?: { 1: never; 0: K; }[Is, match>]; }[keyof O]; /** * @hidden */ declare type ExcludeMatch = O extends unknown ? _ExcludeMatch : never; /** * Exclude the keys of `O1` out of the keys of `O` * (If `match = 'default'`, no type checks are done) * @param O to remove the keys from * @param O1 to remove the keys out * @param match (?=`'default'`) to change precision * @returns [[Key]] * @example * ```ts * ``` */ export declare type ExcludeKeys = { 'default': Exclude, Keys>; 'contains->': ExcludeMatch'>; 'extends->': ExcludeMatch'>; '<-contains': ExcludeMatch; '<-extends': ExcludeMatch; 'equals': ExcludeMatch; }[match]; export {};