import { type HttpMetaParams } from "./http.js"; import { type Encoding } from "./serializer.js"; export interface Action { readonly type: T; readonly path: string; readonly data: unknown; readonly meta: HttpMetaParams; readonly raw: boolean; } export type AnyAction = Action; export interface ActionDispatcher { dispatch(action: T): U | Promise; [Symbol.dispose]?(): void; } export interface ActionDispatcherHook { beforeDispatch(action: T): T; dispatch(action: T): U | Promise | false; afterDispatch(action: T, result: U | Promise): U; }