import React from 'react'; export type FactoryElement = (...args: any[]) => React.ComponentType; export type Factory = FactoryElement & { deps: FactoryElement[]; }; export type InjectorType = { provide: (factory: any, replacement: any) => InjectorType; get: (fac: any, parent?: any) => any; }; export declare const ERROR_MSG: { wrongRecipeType: string; noDep: (fac: any, parent: any) => string; notFunc: string; }; export declare function injector(map?: Map): InjectorType; export declare function flattenDeps(allDeps: Factory[], factory: any): Factory[]; export declare function provideRecipesToInjector(recipes: [Factory, Factory][], appInjector: InjectorType): InjectorType; export declare function typeCheckRecipe(recipe: any): boolean; export declare function withState(lenses?: any[], mapStateToProps?: (state: any) => any, actions?: {}): (Component: any) => import("react-redux").ConnectedComponent<({ state, ...props }: { [x: string]: any; state: any; }) => React.JSX.Element, import("react-redux").Omit<{ [x: string]: any; state: any; }, string | number>>;