/// declare module "recompose" { import type * as PropTypes from "prop-types"; import * as React from "react"; import { ComponentClass, ComponentType as Component, FunctionComponent } from "react"; type mapper = (input: TInner) => TOutter; type predicate = mapper; type predicateDiff = (current: T, next: T) => boolean; // Diff / Omit taken from https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html type Omit = Pick>; interface Observer { next(props: T): void; complete(): void; } interface Subscription { unsubscribe(): void; } interface Subscribable { subscribe(observer: Observer): Subscription; } interface ComponentEnhancer { (component: Component): ComponentClass; } // Injects props and removes them from the prop requirements. // Will not pass through the injected props if they are passed in during // render. Also adds new prop requirements from TNeedsProps. export interface InferableComponentEnhancerWithProps {

( component: Component

, ): React.ComponentClass & TNeedsProps>; } // Injects props and removes them from the prop requirements. // Will not pass through the injected props if they are passed in during // render. export type InferableComponentEnhancer = InferableComponentEnhancerWithProps; // Injects default props and makes them optional. Will still pass through // the injected props if they are passed in during render. export type DefaultingInferableComponentEnhancer = InferableComponentEnhancerWithProps< TInjectedProps, Partial >; // Higher-order components: https://github.com/acdlite/recompose/blob/master/docs/API.md#higher-order-components // mapProps: https://github.com/acdlite/recompose/blob/master/docs/API.md#mapprops export function mapProps( propsMapper: mapper, ): InferableComponentEnhancerWithProps; // withProps: https://github.com/acdlite/recompose/blob/master/docs/API.md#withprops export function withProps( createProps: TInner | mapper, ): InferableComponentEnhancerWithProps; // withPropsOnChange: https://github.com/acdlite/recompose/blob/master/docs/API.md#withpropsonchange export function withPropsOnChange( shouldMapOrKeys: string[] | predicateDiff, createProps: mapper, ): InferableComponentEnhancerWithProps; // withHandlers: https://github.com/acdlite/recompose/blob/master/docs/API.md#withhandlers type EventHandler = Function; // This type is required to infer TOutter type HandleCreatorsStructure = { [handlerName: string]: mapper; }; // This type is required to infer THandlers type HandleCreatorsHandlers = { [P in keyof THandlers]: (props: TOutter) => THandlers[P]; }; type HandleCreators = & HandleCreatorsStructure & HandleCreatorsHandlers; type HandleCreatorsFactory = (initialProps: TOutter) => HandleCreators; export function withHandlers( handlerCreators: | HandleCreators | HandleCreatorsFactory, ): InferableComponentEnhancerWithProps; // defaultProps: https://github.com/acdlite/recompose/blob/master/docs/API.md#defaultprops export function defaultProps( props: T, ): DefaultingInferableComponentEnhancer; // renameProp: https://github.com/acdlite/recompose/blob/master/docs/API.md#renameProp export function renameProp( outterName: string, innerName: string, ): ComponentEnhancer; // renameProps: https://github.com/acdlite/recompose/blob/master/docs/API.md#renameProps type NameMap = { [outterName: string]: string; }; export function renameProps( nameMap: NameMap, ): ComponentEnhancer; // flattenProp: https://github.com/acdlite/recompose/blob/master/docs/API.md#flattenProp export function flattenProp( propName: string, ): ComponentEnhancer; // withState: https://github.com/acdlite/recompose/blob/master/docs/API.md#withState type stateProps< TState, TStateName extends string, TStateUpdaterName extends string, > = & { [stateName in TStateName]: TState } & { [stateUpdateName in TStateUpdaterName]: (state: TState) => TState }; export function withState< TOutter, TState, TStateName extends string, TStateUpdaterName extends string, >( stateName: TStateName, stateUpdaterName: TStateUpdaterName, initialState: TState | mapper, ): InferableComponentEnhancerWithProps< stateProps, TOutter >; // withStateHandlers: https://github.com/acdlite/recompose/blob/master/docs/API.md#withstatehandlers type StateHandler = (...payload: any[]) => Partial | undefined; type StateHandlerMap = { [updaterName: string]: StateHandler; }; type StateUpdaters = { [updaterName in keyof TUpdaters]: (state: TState, props: TOutter) => TUpdaters[updaterName]; }; export function withStateHandlers, TOutter = {}>( createProps: TState | mapper, stateUpdaters: StateUpdaters, ): InferableComponentEnhancerWithProps; // withReducer: https://github.com/acdlite/recompose/blob/master/docs/API.md#withReducer type reducer = (s: TState, a: TAction) => TState; type reducerProps< TState, TAction, TStateName extends string, TDispatchName extends string, > = & { [stateName in TStateName]: TState } & { [dispatchName in TDispatchName]: (a: TAction) => void }; export function withReducer< TOutter, TState, TAction, TStateName extends string, TDispatchName extends string, >( stateName: TStateName, dispatchName: TDispatchName, reducer: reducer, initialState: TState | mapper, ): InferableComponentEnhancerWithProps< reducerProps, TOutter >; // branch: https://github.com/acdlite/recompose/blob/master/docs/API.md#branch export function branch( test: predicate, trueEnhancer: ComponentEnhancer | InferableComponentEnhancer<{}>, falseEnhancer?: ComponentEnhancer | InferableComponentEnhancer<{}>, ): ComponentEnhancer; // renderComponent: https://github.com/acdlite/recompose/blob/master/docs/API.md#renderComponent export function renderComponent( component: string | Component, ): ComponentEnhancer; // renderNothing: https://github.com/acdlite/recompose/blob/master/docs/API.md#renderNothing export const renderNothing: InferableComponentEnhancer<{}>; // shouldUpdate: https://github.com/acdlite/recompose/blob/master/docs/API.md#shouldUpdate export function shouldUpdate( test: predicateDiff, ): InferableComponentEnhancer<{}>; // pure: https://github.com/acdlite/recompose/blob/master/docs/API.md#pure export function pure(component: Component): Component; // onlyUpdateForKeys: https://github.com/acdlite/recompose/blob/master/docs/API.md#onlyUpdateForKeys export function onlyUpdateForKeys( propKeys: string[], ): InferableComponentEnhancer<{}>; export function onlyUpdateForKeys( propKeys: Array, ): InferableComponentEnhancer<{}>; // onlyUpdateForPropTypes: https://github.com/acdlite/recompose/blob/master/docs/API.md#onlyUpdateForPropTypes export const onlyUpdateForPropTypes: InferableComponentEnhancer<{}>; // withContext: https://github.com/acdlite/recompose/blob/master/docs/API.md#withContext export function withContext( childContextTypes: PropTypes.ValidationMap, getChildContext: mapper, ): InferableComponentEnhancer<{}>; // getContext: https://github.com/acdlite/recompose/blob/master/docs/API.md#getContext export function getContext( contextTypes: PropTypes.ValidationMap, ): InferableComponentEnhancer; interface _ReactLifeCycleFunctionsThisArguments { props: TProps; state: TState; setState( f: (prevState: TState, props: TProps) => Pick, callback?: () => any, ): void; setState(state: Pick, callback?: () => any): void; forceUpdate(callBack?: () => any): void; context: any; refs: { [key: string]: React.ReactInstance; }; } type ReactLifeCycleFunctionsThisArguments = & _ReactLifeCycleFunctionsThisArguments & TInstance; // lifecycle: https://github.com/acdlite/recompose/blob/master/docs/API.md#lifecycle interface ReactLifeCycleFunctions { componentWillMount?: | ((this: ReactLifeCycleFunctionsThisArguments) => void) | undefined; UNSAFE_componentWillMount?(this: ReactLifeCycleFunctionsThisArguments): void; componentDidMount?: | ((this: ReactLifeCycleFunctionsThisArguments) => void) | undefined; componentWillReceiveProps?: | ((this: ReactLifeCycleFunctionsThisArguments, nextProps: TProps) => void) | undefined; UNSAFE_componentWillReceiveProps?( this: ReactLifeCycleFunctionsThisArguments, nextProps: TProps, ): void; shouldComponentUpdate?: | (( this: ReactLifeCycleFunctionsThisArguments, nextProps: TProps, nextState: TState, ) => boolean) | undefined; componentWillUpdate?: | (( this: ReactLifeCycleFunctionsThisArguments, nextProps: TProps, nextState: TState, ) => void) | undefined; UNSAFE_componentWillUpdate?( this: ReactLifeCycleFunctionsThisArguments, nextProps: TProps, nextState: TState, ): void; componentDidUpdate?: | (( this: ReactLifeCycleFunctionsThisArguments, prevProps: TProps, prevState: TState, ) => void) | undefined; componentWillUnmount?: | ((this: ReactLifeCycleFunctionsThisArguments) => void) | undefined; componentDidCatch?: | (( this: ReactLifeCycleFunctionsThisArguments, error: Error, info: React.ErrorInfo, ) => void) | undefined; } export function lifecycle( spec: ReactLifeCycleFunctions & TInstance, ): InferableComponentEnhancer<{}>; // toClass: https://github.com/acdlite/recompose/blob/master/docs/API.md#toClass export const toClass: InferableComponentEnhancer<{}>; // toRenderProps: https://github.com/acdlite/recompose/blob/master/docs/API.md#torenderprops export function toRenderProps( hoc: InferableComponentEnhancerWithProps, ): FunctionComponent React.ReactElement }>; // fromRenderProps: https://github.com/acdlite/recompose/blob/master/docs/API.md#fromrenderprops export function fromRenderProps( RenderPropsComponent: Component, propsMapper: (props: TRenderProps) => TInner, renderPropName?: string, ): ComponentEnhancer; // Static property helpers: https://github.com/acdlite/recompose/blob/master/docs/API.md#static-property-helpers // setStatic: https://github.com/acdlite/recompose/blob/master/docs/API.md#setStatic export function setStatic( key: string, value: any, ): >(component: T) => T; // setPropTypes: https://github.com/acdlite/recompose/blob/master/docs/API.md#setPropTypes export function setPropTypes

( propTypes: PropTypes.ValidationMap

, ): >(component: T) => T; // setDisplayName: https://github.com/acdlite/recompose/blob/master/docs/API.md#setDisplayName export function setDisplayName( displayName: string, ): >(component: T) => T; // Utilities: https://github.com/acdlite/recompose/blob/master/docs/API.md#utilities // compose: https://github.com/acdlite/recompose/blob/master/docs/API.md#compose export function compose( ...functions: Function[] ): ComponentEnhancer; // export function compose( // ...functions: Array // ): ComponentEnhancer; // export function compose( // ...functions: Array // ): ComponentEnhancer; // getDisplayName: https://github.com/acdlite/recompose/blob/master/docs/API.md#getDisplayName export function getDisplayName( component: Component, ): string; // wrapDisplayName: https://github.com/acdlite/recompose/blob/master/docs/API.md#wrapDisplayName export function wrapDisplayName( component: Component, wrapperName: string, ): string; // shallowEqual: https://github.com/acdlite/recompose/blob/master/docs/API.md#shallowEqual export function shallowEqual( a: Object, b: Object, ): boolean; // isClassComponent: https://github.com/acdlite/recompose/blob/master/docs/API.md#isClassComponent export function isClassComponent( value: any, ): boolean; // createEagerElement: https://github.com/acdlite/recompose/blob/master/docs/API.md#createEagerElement export function createEagerElement( type: Component | string, props?: Object, children?: React.ReactNode, ): React.ReactElement; // createEagerFactory: https://github.com/acdlite/recompose/blob/master/docs/API.md#createEagerFactory type componentFactory = (props?: Object, children?: React.ReactNode) => React.ReactElement; export function createEagerFactory( type: Component | string, ): componentFactory; // createSink: https://github.com/acdlite/recompose/blob/master/docs/API.md#createSink export function createSink( callback: (props: Object) => void, ): React.ComponentClass; // ??? // componentFromProp: https://github.com/acdlite/recompose/blob/master/docs/API.md#componentFromProp export function componentFromProp( propName: string, ): FunctionComponent; // nest: https://github.com/acdlite/recompose/blob/master/docs/API.md#nest export function nest( ...Components: Array> ): React.ComponentClass; // ??? // hoistStatics: https://github.com/acdlite/recompose/blob/master/docs/API.md#hoistStatics export function hoistStatics( hoc: InferableComponentEnhancer, blacklist?: { [key: string]: boolean }, ): InferableComponentEnhancer; // Observable utilities: https://github.com/acdlite/recompose/blob/master/docs/API.md#observable-utilities // componentFromStream: https://github.com/acdlite/recompose/blob/master/docs/API.md#componentFromStream export function componentFromStream( propsToReactNode: mapper, Subscribable>, ): Component; // ??? // componentFromStreamWithConfig: https://github.com/acdlite/recompose/blob/master/docs/API.md#componentfromstreamwithconfig export function componentFromStreamWithConfig(config: ObservableConfig): ( propsToReactNode: mapper, Subscribable>, ) => Component; // mapPropsStream: https://github.com/acdlite/recompose/blob/master/docs/API.md#mapPropsStream export function mapPropsStream( transform: mapper, Subscribable>, ): ComponentEnhancer; // mapPropsStreamWithConfig: https://github.com/acdlite/recompose/blob/master/docs/API.md#mappropsstreamwithconfig export function mapPropsStreamWithConfig(config: ObservableConfig): ( transform: mapper, Subscribable>, ) => ComponentEnhancer; // createEventHandler: https://github.com/acdlite/recompose/blob/master/docs/API.md#createEventHandler type EventHandlerOf> = { handler: (value: T) => void; stream: TSubs; }; export function createEventHandler>(): EventHandlerOf; // createEventHandlerWithConfig: https://github.com/acdlite/recompose/blob/master/docs/API.md#createEventHandlerWithConfig export function createEventHandlerWithConfig( config: ObservableConfig, ): >() => EventHandlerOf; // setObservableConfig: https://github.com/acdlite/recompose/blob/master/docs/API.md#setObservableConfig type ObservableConfig = { fromESObservable?: ((observable: Subscribable) => any) | undefined; toESObservable?: ((stream: any) => Subscribable) | undefined; }; export function setObservableConfig(config: ObservableConfig): void; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#rxjs declare module "recompose/rxjsObservableConfig" { import { ObservableConfig } from "recompose"; const rxjsconfig: ObservableConfig; export default rxjsconfig; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#rxjs-4-legacy declare module "recompose/rxjs4ObservableConfig" { import { ObservableConfig } from "recompose"; const rxjs4config: ObservableConfig; export default rxjs4config; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#most declare module "recompose/mostObservableConfig" { import { ObservableConfig } from "recompose"; const mostConfig: ObservableConfig; export default mostConfig; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#xstream declare module "recompose/xstreamObservableConfig" { import { ObservableConfig } from "recompose"; const xstreamConfig: ObservableConfig; export default xstreamConfig; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#bacon declare module "recompose/baconObservableConfig" { import { ObservableConfig } from "recompose"; const baconConfig: ObservableConfig; export default baconConfig; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#kefir declare module "recompose/kefirObservableConfig" { import { ObservableConfig } from "recompose"; const kefirConfig: ObservableConfig; export default kefirConfig; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#mapprops declare module "recompose/mapProps" { import { mapProps } from "recompose"; export default mapProps; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#withprops declare module "recompose/withProps" { import { withProps } from "recompose"; export default withProps; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#withpropsonchange declare module "recompose/withPropsOnChange" { import { withPropsOnChange } from "recompose"; export default withPropsOnChange; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#withhandlers declare module "recompose/withHandlers" { import { withHandlers } from "recompose"; export default withHandlers; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#defaultprops declare module "recompose/defaultProps" { import { defaultProps } from "recompose"; export default defaultProps; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#renameprop declare module "recompose/renameProp" { import { renameProp } from "recompose"; export default renameProp; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#renameprops declare module "recompose/renameProps" { import { renameProps } from "recompose"; export default renameProps; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#flattenprop declare module "recompose/flattenProp" { import { flattenProp } from "recompose"; export default flattenProp; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#withstate declare module "recompose/withState" { import { withState } from "recompose"; export default withState; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#withstatehandlers declare module "recompose/withStateHandlers" { import { withStateHandlers } from "recompose"; export default withStateHandlers; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#withreducer declare module "recompose/withReducer" { import { withReducer } from "recompose"; export default withReducer; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#branch declare module "recompose/branch" { import { branch } from "recompose"; export default branch; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#rendercomponent declare module "recompose/renderComponent" { import { renderComponent } from "recompose"; export default renderComponent; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#rendernothing declare module "recompose/renderNothing" { import { renderNothing } from "recompose"; export default renderNothing; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#shouldupdate declare module "recompose/shouldUpdate" { import { shouldUpdate } from "recompose"; export default shouldUpdate; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#pure declare module "recompose/pure" { import { pure } from "recompose"; export default pure; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#onlyupdateforkeys declare module "recompose/onlyUpdateForKeys" { import { onlyUpdateForKeys } from "recompose"; export default onlyUpdateForKeys; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#onlyupdateforproptypes declare module "recompose/onlyUpdateForPropTypes" { import { onlyUpdateForPropTypes } from "recompose"; export default onlyUpdateForPropTypes; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#withcontext declare module "recompose/withContext" { import { withContext } from "recompose"; export default withContext; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#getcontext declare module "recompose/getContext" { import { getContext } from "recompose"; export default getContext; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#lifecycle declare module "recompose/lifecycle" { import { lifecycle } from "recompose"; export default lifecycle; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#toclass declare module "recompose/toClass" { import { toClass } from "recompose"; export default toClass; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#torenderprops declare module "recompose/toRenderProps" { import { toRenderProps } from "recompose"; export default toRenderProps; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#fromrenderprops declare module "recompose/fromRenderProps" { import { fromRenderProps } from "recompose"; export default fromRenderProps; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#setstatic declare module "recompose/setStatic" { import { setStatic } from "recompose"; export default setStatic; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#setproptypes declare module "recompose/setPropTypes" { import { setPropTypes } from "recompose"; export default setPropTypes; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#setdisplayname declare module "recompose/setDisplayName" { import { setDisplayName } from "recompose"; export default setDisplayName; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#compose declare module "recompose/compose" { import { compose } from "recompose"; export default compose; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#getdisplayname declare module "recompose/getDisplayName" { import { getDisplayName } from "recompose"; export default getDisplayName; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#wrapdisplayname declare module "recompose/wrapDisplayName" { import { wrapDisplayName } from "recompose"; export default wrapDisplayName; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#shallowequal declare module "recompose/shallowEqual" { import { shallowEqual } from "recompose"; export default shallowEqual; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#isclasscomponent declare module "recompose/isClassComponent" { import { isClassComponent } from "recompose"; export default isClassComponent; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#createsink declare module "recompose/createSink" { import { createSink } from "recompose"; export default createSink; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#componentfromprop declare module "recompose/componentFromProp" { import { componentFromProp } from "recompose"; export default componentFromProp; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#nest declare module "recompose/nest" { import { nest } from "recompose"; export default nest; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#hoiststatics declare module "recompose/hoistStatics" { import { hoistStatics } from "recompose"; export default hoistStatics; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#componentfromstream declare module "recompose/componentFromStream" { import { componentFromStream } from "recompose"; export { componentFromStreamWithConfig } from "recompose"; export default componentFromStream; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#mappropsstream declare module "recompose/mapPropsStream" { import { mapPropsStream } from "recompose"; export { mapPropsStreamWithConfig } from "recompose"; export default mapPropsStream; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#createeventhandler declare module "recompose/createEventHandler" { import { createEventHandler } from "recompose"; export { createEventHandlerWithConfig } from "recompose"; export default createEventHandler; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#setobservableconfig declare module "recompose/setObservableConfig" { import { setObservableConfig } from "recompose"; export default setObservableConfig; }