import { Arr, Tuple, Union, Error } from "../meta-types"; import { Head, Tail, Reverse, DoesExtend, Get, Prepend, IsObject } from "../utils"; import { ParseSchema } from "."; export declare type ParseArrSchema = "items" extends keyof S ? IsObject extends true ? Arr> : S["items"] extends any[] ? Union, S>> : Error<'Invalid value in "items" property'> : Arr; export declare type ParseTuple = { stop: R; continue: S extends any[] ? ParseTuple, Prepend>, R>> : never; }[S extends [any, ...any[]] ? "continue" : "stop"]; declare type FromTreeTuple = T extends any[] ? ApplyAdditionalItems, "additionalItems" extends keyof S ? S["additionalItems"] : true> : never; declare type ApplyBoundaries = { stop: { result: Max extends undefined ? R | Tuple, false> : HasMax extends true ? R | Tuple, false> : Max extends T["length"] ? Tuple, false> : IsLongerThan, Max> extends true ? never : R | Tuple, false>; hasEncounteredMin: DoesExtend; hasEncounteredMax: HasMax extends true ? true : Max extends T["length"] ? true : IsLongerThan, Max>; completeTuple: C; }; continue: ApplyBoundaries, Min, Max, T["length"] extends Max ? Tuple, false> : R | Tuple, false>, HasMin extends true ? true : DoesExtend, HasMax extends true ? true : DoesExtend, C>; }[Min extends T["length"] ? "stop" : T extends [any, ...any[]] ? "continue" : "stop"]; declare type IsLongerThan = { continue: T["length"] extends N ? true : IsLongerThan, N>; stop: T["length"] extends N ? true : R; }[T extends [any, ...any[]] ? "continue" : "stop"]; declare type ApplyAdditionalItems = Get extends true ? Get extends true ? Get : Error<'"minItems" property is lower than "maxItems"'> : A extends false ? Get extends true ? Get : Error<'"minItems" property is higher than allowed number of items'> : A extends true ? Get extends true ? Get | Tuple>> : Tuple>> : IsObject extends true ? Get extends true ? Get | Tuple>, true, ParseSchema> : Tuple>, true, ParseSchema> : Error<'Invalid value in "additionalItems" property'>; export {};