import type { XSchema } from '../types/schema.mjs'; import type { XMinItems } from '../types/minItems.mjs'; import type { XMaxItems } from '../types/maxItems.mjs'; import type { XAdditionalItems } from '../types/additionalItems.mjs'; import type { XStaticSchema } from './schema.mjs'; import type { XLessThan } from './_comparer.mjs'; type XWithElements = (Schemas extends [infer Left extends XSchema, ...infer Right extends XSchema[]] ? XWithElements]> : Result); type XWithMaxItemsRemap = (Elements extends [infer Left extends unknown, ...infer Right extends unknown[]] ? XLessThan extends true ? XWithMaxItemsRemap : Result : Result); type XWithMaxItems ? XWithMaxItemsRemap : Elements> = Result; type XNeedsAdditionalItems ? XLessThan : true)> = Result; type XWithMinItemsRemap = (Elements extends [infer Left, ...infer Right] ? XLessThan extends true ? XWithMinItemsRemap : XWithMinItemsRemap : Result); type XWithMinItems ? MinItems : 0, Result extends unknown[] = XWithMinItemsRemap> = Result; type XWithAdditionalItems ? (Schema extends true ? [...Elements, ...unknown[]] : Schema extends false ? [...Elements] : [ ...Elements, ...XStaticSchema[] ]) : [...Elements, ...unknown[]]> = Result; export type XStaticElements, WithMaxItems extends unknown[] = XWithMaxItems, NeedsAdditional extends boolean = XNeedsAdditionalItems, WithMinItems extends unknown[] = XWithMinItems, WithAdditionalItems extends unknown[] = NeedsAdditional extends true ? XWithAdditionalItems : WithMinItems> = WithAdditionalItems; export {};