| import {Except} from './except'; | 
| import {ConditionalKeys} from './conditional-keys'; | 
|   | 
| /** | 
| Exclude keys from a shape that matches the given `Condition`. | 
|   | 
| This is useful when you want to create a new type with a specific set of keys from a shape. For example, you might want to exclude all the primitive properties from a class and form a new shape containing everything but the primitive properties. | 
|   | 
| @example | 
| ``` | 
| import {Primitive, ConditionalExcept} from 'type-fest'; | 
|   | 
| class Awesome { | 
|     name: string; | 
|     successes: number; | 
|     failures: bigint; | 
|   | 
|     run() {} | 
| } | 
|   | 
| type ExceptPrimitivesFromAwesome = ConditionalExcept<Awesome, Primitive>; | 
| //=> {run: () => void} | 
| ``` | 
|   | 
| @example | 
| ``` | 
| import {ConditionalExcept} from 'type-fest'; | 
|   | 
| interface Example { | 
|     a: string; | 
|     b: string | number; | 
|     c: () => void; | 
|     d: {}; | 
| } | 
|   | 
| type NonStringKeysOnly = ConditionalExcept<Example, string>; | 
| //=> {b: string | number; c: () => void; d: {}} | 
| ``` | 
| */ | 
| export type ConditionalExcept<Base, Condition> = Except< | 
|     Base, | 
|     ConditionalKeys<Base, Condition> | 
| >; |