import { Duckservable, Observable } from '../types/observable';
import { Store } from '../types/store';
export declare const getStoreObservable: <T>(callback: (store: Store) => Observable<T>) => Observable<T>;
/**
 * Merges multiple store objects using spread syntax.
 * Later objects take precedence over earlier ones.
 * Throws an error if any input is not an object.
 */
type DeepMerge<T, U> = {
    [K in keyof T | keyof U]: K extends keyof T ? K extends keyof U ? T[K] extends Record<string, any> ? U[K] extends Record<string, any> ? DeepMerge<T[K], U[K]> : U[K] : U[K] : T[K] : K extends keyof U ? U[K] : never;
};
type DeepMergeAll<T extends readonly any[]> = T extends readonly [
    infer First,
    ...infer Rest
] ? Rest extends readonly any[] ? DeepMerge<First, DeepMergeAll<Rest>> : First : {};
type StoreObject = Record<string, Record<string, Duckservable>>;
export declare const mergeStoreObjects: <const S extends readonly StoreObject[]>(...storeObjects: S) => DeepMergeAll<S>;
export {};
