UNPKG

ayanami

Version:
13 lines (12 loc) 1.06 kB
import * as React from 'react'; import { Ayanami, ActionMethodOfAyanami, ConstructorOf, Omit } from './core'; declare type ConnectedComponent<P, S, A> = React.FunctionComponent<Omit<P, keyof S | keyof A>>; declare type ConnectComponent<S, A> = <P>(Component: React.ComponentType<P>) => ConnectedComponent<P, S, A>; export interface ComponentConnectedWithAyanami<M extends Ayanami<S>, S> { (): ConnectComponent<Record<string, unknown>, Record<string, unknown>>; <MS>(mapStateToProps: (state: S) => MS): ConnectComponent<MS, Record<string, unknown>>; <MS, MA>(mapStateToProps: (state: S) => MS, mapActionsToProps: (actions: ActionMethodOfAyanami<M, S>) => MA): ConnectComponent<MS, MA>; <MA>(mapStateToProps: null, mapActionsToProps: (actions: ActionMethodOfAyanami<M, S>) => MA): ConnectComponent<Record<string, unknown>, MA>; } export declare function connectAyanami<M extends Ayanami<S>, S>(AyanamiClass: ConstructorOf<M>): M extends Ayanami<infer SS> ? ComponentConnectedWithAyanami<M, SS> : ComponentConnectedWithAyanami<M, S>; export {};