import type { RookStore, RookContext, UseStoreHookReturn, RookStoreReducer, RookReducers, RookComponent } from "./type";
export declare const createUseRook: <Store extends RookStore>(context: RookContext<Store>) => <StoreKey extends keyof Store>(key?: StoreKey) => UseStoreHookReturn<Store, StoreKey>;
export declare function createRook<Store extends RookStore>({ defaultStore, storeReducer, reducers, }: {
    init?: undefined;
    defaultStore: Store;
    storeReducer?: RookStoreReducer<Store>;
    reducers?: RookReducers<Store>;
}): [
    RookComponent,
    <StoreKey extends Extract<keyof Store, string> | undefined = undefined>(key?: StoreKey) => UseStoreHookReturn<Store, StoreKey>
];
export declare function createRook<const DefaultStore extends RookStore, const Store extends RookStore>({ defaultStore, init, storeReducer, reducers, }: {
    defaultStore?: DefaultStore;
    init: (initStore: DefaultStore) => Promise<Store>;
    storeReducer?: RookStoreReducer<Store>;
    reducers?: RookReducers<Store>;
}): [
    RookComponent,
    <StoreKey extends Extract<keyof Store, string> | undefined = undefined>(key?: StoreKey) => UseStoreHookReturn<Store, StoreKey>
];
export declare const createStoreRook: <Store extends RookStore>(defaultStore: Store, { reducers, storeReducer, }?: {
    reducers?: RookReducers<Store>;
    storeReducer?: RookStoreReducer<Store>;
}) => [RookComponent, <StoreKey extends Extract<keyof Store, string> | undefined = undefined>(key?: StoreKey) => UseStoreHookReturn<Store, StoreKey>];
