// TypeScript Version: 3.0 declare module '@restart/context/mapContextToProps' { import * as React from 'react'; type Omit = Pick>; type GetProps = C extends React.ComponentType ? P : never; export interface ContextInjectedComponent< TComponent, TInjectedProps, TExtraProps > extends React.ForwardRefExoticComponent< Omit, TInjectedProps> & TExtraProps > {} // Single Context function mapContextToProps( context: React.Context | [React.Context], mapToProps: (ctxValue: TContext, props: TOwnProps) => TContextProps, Component: TComponent, ): ContextInjectedComponent; function mapContextToProps( context: React.Context | [React.Context], mapToProps: (ctxValue: TContext, props: TOwnProps) => TContextProps, ): ( component: TComponent, ) => ContextInjectedComponent; // 2 Contexts function mapContextToProps< TComponent, TContext1, TContext2, TContextProps, TOwnProps >( context: [React.Context, React.Context], mapToProps: ( c1: TContext1, c2: TContext2, props: TOwnProps, ) => TContextProps, Component: TComponent, ): ContextInjectedComponent; function mapContextToProps( context: [React.Context, React.Context], mapToProps: ( c1: TContext1, c2: TContext2, props: TOwnProps, ) => TContextProps, ): ( component: TComponent, ) => ContextInjectedComponent; // 3 Contexts function mapContextToProps< TComponent, TContext1, TContext2, TContext3, TContextProps, TOwnProps >( context: [ React.Context, React.Context, React.Context ], mapToProps: ( c1: TContext1, c2: TContext2, c3: TContext3, props: TOwnProps, ) => TContextProps, Component: TComponent, ): ContextInjectedComponent; function mapContextToProps< TContext1, TContext2, TContext3, TContextProps, TOwnProps >( context: [ React.Context, React.Context, React.Context ], mapToProps: ( c1: TContext1, c2: TContext2, c3: TContext3, props: TOwnProps, ) => TContextProps, ): ( component: TComponent, ) => ContextInjectedComponent; // 4 Contexts function mapContextToProps< TComponent, TContext1, TContext2, TContext3, TContext4, TContextProps, TOwnProps >( context: [ React.Context, React.Context, React.Context, React.Context ], mapToProps: ( c1: TContext1, c2: TContext2, c3: TContext3, c4: TContext4, props: TOwnProps, ) => TContextProps, Component: TComponent, ): ContextInjectedComponent; function mapContextToProps< TContext1, TContext2, TContext3, TContext4, TContextProps, TOwnProps >( context: [ React.Context, React.Context, React.Context, React.Context ], mapToProps: ( c1: TContext1, c2: TContext2, c3: TContext3, c4: TContext4, props: TOwnProps, ) => TContextProps, ): ( component: TComponent, ) => ContextInjectedComponent; export default mapContextToProps; }