import { Silo } from "./types";
declare type SiloMap<T> = {
    [K in keyof T]: T[K] extends Silo<infer S, infer M> ? Silo<S, M> : never;
};
declare type CombinedState<T> = {
    [K in keyof T]: T[K] extends Silo<infer S, infer M> ? Silo<S, M>["initialState"] : never;
};
declare type CombinedSilo<S extends SiloMap<S>> = Silo<CombinedState<S>, {}> & {
    all: SiloMap<S>;
};
/**
 * Combine silos.
 * @param silos Silos to combine
 * @returns Combined silos
 */
export declare function combineSilos<S extends SiloMap<S>>(silos: S): CombinedSilo<S>;
export {};
