export * from './Expand'; export * from './Patch'; export * from './PrefilledDocument'; export type IfEquals = (() => T extends X ? 1 : 2) extends () => T extends Y ? 1 : 2 ? A : B; export type IsExtends = A extends B ? true : false; export type ReadonlyKeys = { [P in keyof T]-?: IfEquals<{ [Q in P]: T[P]; }, { -readonly [Q in P]: T[P]; }, never, P>; }[keyof T]; export type WritableKeys = { [P in keyof T]-?: IfEquals<{ [Q in P]: T[P]; }, { -readonly [Q in P]: T[P]; }, P>; }[keyof T]; export type RequireKeys = { [X in Exclude]?: T[X]; } & { [P in K]-?: T[P]; }; export type SelectKeysByType = { [K in keyof T]: T[K] extends V ? K : never; }[keyof T];