import { Action, ActionKind, IApplicationSpec } from "./types"; export type SpecActions = Kind extends ActionKind ? TSpec["actions"][Kind] : never; export declare const clientSpecificActionKinds: Set<"L2" | "L3" | "Req">; export type ClientSpecificActionKinds = typeof clientSpecificActionKinds extends Set ? T : never; export declare const serverStoreAllowedActionKinds: Set<"L0" | "L1" | "L2" | "L3" | "Req">; export type ServerStoreAllowedActionKinds = typeof serverStoreAllowedActionKinds extends Set ? T : never; export type ServerStoreAction = SpecActions; export declare const clientToServerAllowedActionKinds: Set<"L3" | "Req">; export declare const clientAppAllowedActionKinds: Set<"L3" | "L4" | "Req">; type ClientAppAllowedActionKinds = typeof clientAppAllowedActionKinds extends Set ? T : never; export type ClientAppAction = SpecActions; export type ActionKindCreator = (kind: Kind) => ActionTypeCreator; export type ActionTypeCreator = (type: Type) => ActionPayloadCreator; export type ActionPayloadCreator = () => ActionCreator; export type ActionCreator = { (payload: TPayload): Action; type: Type; }; export type ActionKindOf = A extends ActionCreator ? Kind : never; export type ActionTypeOf = A extends ActionCreator ? Type : never; export type ActionPayloadOf = A extends ActionCreator ? TPayload : never; export type ActionFrom> = AC extends ActionCreator ? Action : never; export type AllActions>> = ActionFrom; export {};