import { Schema, symbol, type StrictOptions } from "../schema";
import type { Merge } from "../static";
import type { IUnionOptions } from "./union";
export type StaticUnionAllOf<T extends Schema[]> = T extends [
    infer U,
    ...infer Rest
] ? U extends Schema ? Rest extends Schema[] ? Merge<U[typeof symbol]["static"] & StaticUnionAllOf<Rest>> : U[typeof symbol]["static"] : never : {};
export declare const allOf: <const T extends Schema[], const O extends IUnionOptions>(schemas: T, options?: StrictOptions<IUnionOptions, O>) => Schema<O, StaticUnionAllOf<T>, StaticUnionAllOf<T>> & O;
