import { Object, Any, Never, Union, Error } from "../meta-types"; import { IsObject } from "../utils"; import { ParseSchema } from "."; export declare type ParseObjectSchema = "properties" extends keyof S ? Object<{ [key in keyof S["properties"]]: ParseSchema; }, GetRequired, "additionalProperties" extends keyof S ? S["additionalProperties"] extends false ? false : true : true, GetOpenProps> : Object<{}, GetRequired, true, GetOpenProps>; declare type GetRequired = S extends { required: ReadonlyArray; } ? S["required"][number] : never; declare type GetOpenProps = "additionalProperties" extends keyof S ? "patternProperties" extends keyof S ? AdditionalAndPatternProps : AdditionalProps : "patternProperties" extends keyof S ? PatternProps : Any; declare type AdditionalProps = A extends false ? Never : A extends true ? Any : IsObject extends true ? ParseSchema : Error<'Invalid value in "additionalProperties" property'>; declare type PatternProps

= { type: "union"; values: { [key in keyof P]: ParseSchema; }[keyof P]; }; declare type AdditionalAndPatternProps = A extends boolean ? Union<{ [key in keyof P]: ParseSchema; }[keyof P]> : IsObject extends true ? Union | { [key in keyof P]: ParseSchema; }[keyof P]> : never; export {};