import { Node, Schema, type ISchemaOptions, type StrictOptions, type WalkOptions } from "../schema/schema"; import type { Merge, Static, StaticCoerced } from "../static"; export type StaticUnion2 = T extends [ infer U, ...infer Rest ] ? U extends Schema ? Rest extends Schema[] ? StaticUnion | Static : Static : never : never; export type StaticUnion = { [K in keyof T]: T[K] extends Schema ? Static : never; }[number]; export type StaticUnionCoerced = { [K in keyof T]: T[K] extends Schema ? StaticCoerced : never; }[number]; export type StaticUnionCoercedOptions = O extends { coerce: (...args: any[]) => infer C; } ? C : T extends [infer U, ...infer Rest] ? U extends Schema ? Rest extends Schema[] ? StaticUnionCoerced | StaticCoerced : StaticCoerced : never : never; export interface IUnionOptions extends ISchemaOptions { } declare const unionTypeSymbol: unique symbol; export declare class UnionSchema extends Schema, StaticUnionCoercedOptions> { [unionTypeSymbol]: "oneOf" | "anyOf"; constructor(schemas: T, type: "oneOf" | "anyOf", options?: IUnionOptions); get schemas(): any; children(opts?: WalkOptions): Node[]; } export declare const anyOf: (schemas: T, options?: StrictOptions) => Schema, StaticUnionCoercedOptions> & Merge; export declare const oneOf: (schemas: T, options?: StrictOptions) => Schema, StaticUnionCoercedOptions> & O; export {};