import { BaseReducer } from './BaseReducer'; import { RequestSuccessAction, HttpTransform } from '../actions/BaseRequestAction'; import { IActionPayload } from '../actions/BaseAction'; export interface IMetaAction { metaKey: string | number | symbol | boolean; actionName: string; } export declare type MetasLoading = { pick: (value: M) => boolean; }; export declare type ComposeMeta = Readonly<{ actionType: string; loading: boolean; message?: string; }>; export declare type Meta = ComposeMeta & Readonly; export declare type Metas = Partial<{ [key: string]: Meta; }> & { pick: (value: M) => Meta; }; export interface IMetaRestore extends IActionPayload<{ key: string; value: Meta | Metas; }> { } export interface IMetaStash { [key: string]: Metas | Meta | 'meta-used'; } export declare const USED_FLAG = "meta-used"; export declare const DEFAULT_META: Meta; export declare const METAS_PICK_METHOD: { pick: (value: any) => Meta; }; export declare const DEFAULT_METAS: Metas; interface Data { [key: string]: Metas | Meta; } declare class MetaReducer extends BaseReducer { protected stash: IMetaStash; constructor(); protected getMeta(name: string): T | undefined; protected isRestore(action: RequestSuccessAction | IMetaRestore): action is IMetaRestore; protected reducer(state: Data | undefined, action: RequestSuccessAction | IMetaRestore): Data; } export declare const metaReducer: MetaReducer; export {};