/**
 * Merges objects together while keeping their getters alive.
 * Taken from SolidJS: {https://github.com/solidjs/solid/blob/24abc825c0996fd2bc8c1de1491efe9a7e743aff/packages/solid/src/server/rendering.ts#L82-L115}
 * */
export declare function mergeObjects<T>(source: T): T;
export declare function mergeObjects<T, U>(source: T, source1: U): T & U;
export declare function mergeObjects<T, U, V>(source: T, source1: U, source2: V): T & U & V;
export declare function mergeObjects<T, U, V, W>(source: T, source1: U, source2: V, source3: W): T & U & V & W;
/**
 * Merges objects together by eagerly resolving all values into a flat object.
 *
 * Unlike `mergeObjects`, this does NOT preserve getters — values are read once
 * and stored as plain data properties. This prevents the getter-chain
 * accumulation that causes O(N) lookups when the result is repeatedly passed
 * back as a source in subsequent merges (e.g., inside `$effect.pre` loops).
 *
 * Later sources take precedence; `undefined` values do not override.
 *
 * @see https://github.com/TanStack/table/issues/6235
 */
export declare function flatMerge<T>(source: T): T;
export declare function flatMerge<T, U>(source: T, source1: U): T & U;
export declare function flatMerge<T, U, V>(source: T, source1: U, source2: V): T & U & V;
export declare function flatMerge<T, U, V, W>(source: T, source1: U, source2: V, source3: W): T & U & V & W;
