export type TMergeBuilder = { with: (next: B) => TMergeBuilder; done: () => T; }; export declare function mergeChain(initial: A): TMergeBuilder; type TMergeTupleToIntersection = T extends [infer First extends object, ...infer Rest extends object[]] ? First & TMergeTupleToIntersection : {}; export declare function mergeAll(...args: T): TMergeTupleToIntersection; export {};