pretur.redux
Version:
35 lines (34 loc) • 1.73 kB
TypeScript
export declare type ValidTargetType = number | string | symbol;
export interface Dispatch {
(action: Action<any, any>): void;
(thunk: Thunk): Promise<void>;
}
export interface Thunk {
(dispatch: Dispatch): Promise<void>;
}
export interface Action<TPayload = undefined, TMeta = undefined> {
type: string;
payload?: TPayload;
meta?: TMeta;
}
export interface TargetedAction<TPayload = undefined, TMeta = undefined> extends Action<TPayload, TMeta> {
target?: ValidTargetType | ValidTargetType[];
broadcast: boolean;
}
export interface ActionDescriptor<TPayload = undefined, TMeta = undefined> {
type: string;
create(payload?: TPayload, meta?: TMeta): Action<TPayload, TMeta>;
is(action: Action<any, any>): action is Action<TPayload, TMeta>;
}
export declare function createActionDescriptor<TPayload = undefined, TMeta = undefined>(type: string): ActionDescriptor<TPayload, TMeta>;
export interface TargetedActionDescriptorCreator<TPayload = undefined, TMeta = undefined> {
unicast(target: ValidTargetType, payload?: TPayload, meta?: TMeta): TargetedAction<TPayload, TMeta>;
multicast(targets: ValidTargetType[], payload?: TPayload, meta?: TMeta): TargetedAction<TPayload, TMeta>;
broadcast(payload?: TPayload, meta?: TMeta): TargetedAction<TPayload, TMeta>;
}
export interface TargetedActionDescriptor<TPayload = undefined, TMeta = undefined> {
type: string;
create: TargetedActionDescriptorCreator<TPayload, TMeta>;
is(id: ValidTargetType, action: Action<any, any>): action is TargetedAction<TPayload, TMeta>;
}
export declare function createTargetedActionDescriptor<TPayload = undefined, TMeta = undefined>(type: string): TargetedActionDescriptor<TPayload, TMeta>;