UNPKG

@wordpress/data

Version:
48 lines 1.7 kB
declare type MapOf<T> = { [name: string]: T; }; export declare type ActionCreator = Function | Generator; export declare type Resolver = Function | Generator; export declare type Selector = Function; export declare type AnyConfig = ReduxStoreConfig<any, any, any>; export interface StoreInstance<Config extends AnyConfig> { getSelectors: () => SelectorsOf<Config>; getActions: () => ActionCreatorsOf<Config>; subscribe: (listener: () => void) => () => void; } export interface StoreDescriptor<Config extends AnyConfig> { /** * Store Name */ name: string; /** * Creates a store instance */ instantiate: (registry: DataRegistry) => StoreInstance<Config>; } export interface ReduxStoreConfig<State, ActionCreators extends MapOf<ActionCreator>, Selectors extends MapOf<Selector>> { initialState?: State; reducer: (state: any, action: any) => any; actions?: ActionCreators; resolvers?: MapOf<Resolver>; selectors?: Selectors; controls?: MapOf<Function>; } export interface DataRegistry { register: (store: StoreDescriptor<any>) => void; } export interface DataEmitter { emit: () => void; subscribe: (listener: () => void) => () => void; pause: () => void; resume: () => void; isPaused: boolean; } declare type ActionCreatorsOf<Config extends AnyConfig> = Config extends ReduxStoreConfig<any, infer ActionCreators, any> ? { [name in keyof ActionCreators]: Function | Generator; } : never; declare type SelectorsOf<Config extends AnyConfig> = Config extends ReduxStoreConfig<any, any, infer Selectors> ? { [name in keyof Selectors]: Function; } : never; export {}; //# sourceMappingURL=types.d.ts.map