import { Memory } from '../../../system/memory/index.mjs'; import { type TSchema } from '../../types/schema.mjs'; import { type TProperties } from '../../types/properties.mjs'; import { type TFromType } from './from_type.mjs'; import { type TEvaluateIntersect } from '../evaluate/evaluate.mjs'; type TCollapseIntersectProperties, RightKeys extends keyof Right = Exclude, SharedKeys extends keyof Left & keyof Right = Extract, LeftProperties extends TProperties = { [Key in LeftKeys]: Left[Key]; }, RightProperties extends TProperties = { [Key in RightKeys]: Right[Key]; }, SharedProperties extends TProperties = { [Key in SharedKeys]: TEvaluateIntersect<[Left[Key], Right[Key]]>; }, Unique extends TProperties = Memory.TAssign, Shared extends TProperties = Memory.TAssign> = Shared; export type TFromIntersect = (Types extends [infer Left extends TSchema, ...infer Right extends TSchema[]] ? TFromIntersect>> : { [Key in keyof Result]: Result[Key]; }); export declare function FromIntersect(types: [...Types]): TFromIntersect; export {};