export declare type ValidTargetType = number | string | symbol; export interface Dispatch { (action: Action): void; (thunk: Thunk): Promise; } export interface Thunk { (dispatch: Dispatch): Promise; } export interface Action { type: string; payload?: TPayload; meta?: TMeta; } export interface TargetedAction extends Action { target?: ValidTargetType | ValidTargetType[]; broadcast: boolean; } export interface ActionDescriptor { type: string; create(payload?: TPayload, meta?: TMeta): Action; is(action: Action): action is Action; } export declare function createActionDescriptor(type: string): ActionDescriptor; export interface TargetedActionDescriptorCreator { unicast(target: ValidTargetType, payload?: TPayload, meta?: TMeta): TargetedAction; multicast(targets: ValidTargetType[], payload?: TPayload, meta?: TMeta): TargetedAction; broadcast(payload?: TPayload, meta?: TMeta): TargetedAction; } export interface TargetedActionDescriptor { type: string; create: TargetedActionDescriptorCreator; is(id: ValidTargetType, action: Action): action is TargetedAction; } export declare function createTargetedActionDescriptor(type: string): TargetedActionDescriptor;