import type { Merge } from "./Merge"; import type { Args, Fn } from "../HKT"; import type { List } from "../List"; /** * Spread a {@link List} of objects into one object. * * Sig: `(os: List) => object` */ export type Spread> = OS extends [infer L extends object, ...infer R extends object[]] ? Merge> : object; /** * [Fn] Spread a {@link List} of objects into one object. * * Sig: `(os: List) => object` */ export default interface SpreadFn extends Fn<[List], object> { def: ([os]: Args) => Spread; }