import { Store } from ".";
export declare type AnyStores<S> = {
    [K in keyof S]: Store<any, any>;
};
export declare type StateOfStore<S extends Store<any, any>> = S extends Store<infer State, any> ? State : never;
declare type Actions<T> = {
    [P in keyof T]: undefined;
};
export declare type RootState<S extends AnyStores<S>> = {
    [K in keyof S]: StateOfStore<S[K]>;
};
export declare type Stores<S extends AnyStores<S>> = {
    [K in keyof S]: S[K];
};
export declare class Root<S extends AnyStores<S>> extends Store<RootState<S>, Actions<S>> {
    stores: Stores<S>;
    constructor(stores: Stores<S>);
    store<K extends keyof S>(s: K): Stores<S>[K];
    state<K extends keyof S>(s: K): RootState<S>[K];
}
export default Root;
