/// <reference types="@rbxts/compiler-types" />
import { InferTypeFromValidator2, InferValidator, InferValidators, Validator, ZirconValidator } from "./ZirconTypeValidator";
declare type ArrayType<T> = T extends ReadonlyArray<infer U> ? U : never;
export declare function ZirconGetValidatorType<V extends Validator>(validatorLike: V): ZirconValidator<unknown, unknown>;
export declare function ZirconTypeUnion<V extends ReadonlyArray<Validator>>(...validators: V): ZirconValidator<InferTypeFromValidator2<ArrayType<InferValidators<V>>>, never>;
export declare function ZirconArrayType<T extends Validator>(validator: T): ZirconValidator<InferTypeFromValidator2<InferValidator<T>>[], never>;
export interface ZirconUnionValidator<T extends ReadonlyArray<unknown>, U extends ReadonlyArray<unknown>> extends ZirconValidator<T[number], U[number]> {
}
export declare function ZirconUnionValidator<T extends ReadonlyArray<ZirconValidator<any, any>>>(validators: T): ZirconValidator<InferTypeFromValidator2<ArrayType<T>>, never>;
export {};
