import type { XSchema } from '../types/schema.mjs'; import type { XRequired } from '../types/required.mjs'; import type { XStaticSchema } from './schema.mjs'; type XIsReadonly = (Schema extends { readOnly: true; } ? true : Schema extends { '~readonly': true; } ? true : false); type XRequiredArray ? Keys : []> = Result; type XReadonlyKeys, ReadonlyProperties extends Record = { [Key in keyof Properties as XIsReadonly extends true ? Key : never]: unknown; }, Result extends PropertyKey = keyof ReadonlyProperties> = Result; type XRequiredKeys, RequiredArray extends string[], Result extends PropertyKey = RequiredArray extends [] ? never : Extract> = Result; type XUnknownKeys, RequiredArray extends string[], Result extends PropertyKey = Exclude> = Result; type XOptionalKeys, RequiredArray extends string[], Result extends PropertyKey = RequiredArray extends [] ? keyof Properties : Exclude> = Result; type XReadonlyOptionalProperties> = { readonly [Key in Extract]?: XStaticSchema; }; type XReadonlyRequiredProperties> = { readonly [Key in Extract]: XStaticSchema; }; type XOptionalProperties> = { [Key in Extract]?: XStaticSchema; }; type XRequiredProperties> = { [Key in Extract]: XStaticSchema; }; type XUnknownProperties = { [Key in UnknownKeys]: unknown; }; export type XStaticProperties, RequiredArray extends string[] = XRequiredArray, ReadonlyKeys extends PropertyKey = XReadonlyKeys, OptionalKeys extends PropertyKey = XOptionalKeys, RequiredKeys extends PropertyKey = XRequiredKeys, UnknownKeys extends PropertyKey = XUnknownKeys, ReadonlyOptionalProperties extends Record = XReadonlyOptionalProperties, Properties>, ReadonlyRequiredProperties extends Record = XReadonlyRequiredProperties, Properties>, OptionalProperties extends Record = XOptionalProperties, Properties>, RequiredProperties extends Record = XRequiredProperties, Properties>, UnknownProperties extends Record = XUnknownProperties, Result extends Record = (ReadonlyOptionalProperties & ReadonlyRequiredProperties & OptionalProperties & RequiredProperties & UnknownProperties)> = Result; export {};