export declare type ActionType = ActionType.Static | ActionType.Dynamic; export declare namespace ActionType { interface Static { scope: string; name: string; } interface Dynamic<$Payload extends {}> extends Static { _payload?: $Payload; } } export declare class ActionTypeFactory { private _scope; constructor(scope: string); create(name: string): ActionType.Static; create<$Payload>(name: string): ActionType.Dynamic<$Payload>; } export declare type Action<$Payload> = Action.Static | Action.Dynamic<$Payload>; export declare namespace Action { interface Static { type: ActionType.Static; payload?: undefined; asyncStatus?: undefined; } interface Dynamic<$Payload> { type: ActionType.Dynamic<$Payload>; payload: $Payload; asyncStatus?: 'resolved' | 'rejected'; } }