import type { JsonValue } from './JsonObject.ts'; /** Omits the keys of T that start with the given prefix. */ export type OmitStartsWith = { [K in keyof T as K extends `${Prefix}${string}` ? never : K]: T[K]; }; /** Recursively omits keys that start with the given prefix, including in nested objects and arrays. */ export type DeepOmitStartsWith = T extends (infer U)[] ? DeepOmitStartsWith[] : T extends object ? { [K in keyof T as K extends string ? K extends `${Prefix}${string}` ? never : K : K]: DeepOmitStartsWith; } : T; /** Recursively removes all non-string keys from an object type, including in nested objects and arrays. */ export type DeepRestrictToStringKeys = { [K in keyof T as K extends string ? K : never]: T[K] extends (infer U)[] ? DeepRestrictToStringKeys[] : T[K] extends object ? DeepRestrictToStringKeys : T[K]; }; /** Recursively restricts an object type to only JSON-compatible values, excluding non-serializable types. */ export type DeepRestrictToJson = { [K in keyof T as K extends string ? K : never]: T[K] extends (infer U)[] ? DeepRestrictToJson[] : T[K] extends object ? DeepRestrictToJson : T[K] extends JsonValue ? T[K] : never; }; //# sourceMappingURL=OmitStartsWith.d.ts.map