import Runtype, { type Parsed, type Static } from "./Runtype.js"; import Spread from "./Spread.js"; import type HasSymbolIterator from "./utils-internal/HasSymbolIterator.js"; /** * Validates that a value fulfills all of the given runtypes. * * Possible failures: * * - `TYPE_INCORRECT` with `details` reporting failures for each runtype */ interface Intersect extends Runtype<{ [K in keyof R]: (_: Static) => unknown; }[number] extends (_: infer I) => unknown ? I : unknown, R extends [...(readonly unknown[]), infer R] ? R extends Runtype.Core ? Parsed : never : unknown> { tag: "intersect"; intersectees: R; [Symbol.iterator]: R["length"] extends 1 ? R[0] extends Runtype.Spreadable ? HasSymbolIterator extends true ? () => Iterator> : never : never : never; } declare const Intersect: (...intersectees: R) => Intersect; export default Intersect;