// Type definitions for react-resolver 3.1 // Project: https://github.com/ericclemmons/react-resolver // Definitions by: forabi // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.8 import { ComponentType, StatelessComponent, Factory } from 'react'; export interface Resolver { resolve

( factory: Factory

, ): Promise<{ data: any; Resolved: StatelessComponent

; }>; render(factory: Factory, root: Node | null): void; } export const Resolver: Resolver; export type ResolveFn = (props: Props) => Promise; /** Use this for gaining access to a context as a prop without the boilerplate of setting `contextTypes`. */ export function context( prop: K, ): ( component: ComponentType, ) => StatelessComponent>; /** * Use `@client(LoaderComponent)` (or `client(LoaderComponent)(YourComponent)`) * for when you want to skip server-side rendering of part of your view and * perform it only on the client. */ export function client( loadingComponent: ComponentType, ): ( component: ComponentType, ) => StatelessComponent; export function resolve< OwnProps, K extends string, V, MoreProps = { [x: string]: any } >( prop: K, resolveFn: ResolveFn, ): ( component: ComponentType, ) => StatelessComponent; export function resolve< OwnProps, ResolvableProps = { [x: string]: any }, MoreProps = { [x: string]: any } >( resolversMap: { [K in keyof ResolvableProps]: ResolveFn< OwnProps & MoreProps, ResolvableProps[K] > }, ): ( component: ComponentType< OwnProps & { [K in keyof ResolvableProps]?: ResolvableProps[K] } >, ) => StatelessComponent;