import { Prism } from 'monocle-ts'; import { Newtype } from 'newtype-ts'; export interface Optimistic extends Newtype<{ readonly Optimistic: unique symbol; phantom: A; }, string> { } export interface Request extends Newtype<{ readonly Request: unique symbol; phantom: A; }, string> { } export interface Failure extends Newtype<{ readonly Failure: unique symbol; phantom: A; }, string> { } export interface Success extends Newtype<{ readonly Success: unique symbol; phantom: A; }, string> { } export declare type ApiActionType = Optimistic | Request | Failure | Success; export declare const coerceApiActionTypeToString: (x: ApiActionType) => string; export declare type ApiActionTypes = { types: { optimistic: Optimistic; request: Request; failure: Failure; success: Success; }; guards: { isOptimistic: (x: ApiActionType) => x is Optimistic; isRequest: (x: ApiActionType) => x is Request; isFailure: (x: ApiActionType) => x is Failure; isSuccess: (x: ApiActionType) => x is Success; }; prisms: { optimistic: Prism>; request: Prism>; failure: Prism>; success: Prism>; }; }; export declare const mkApiActionTypes: (pathPrefix: A) => ApiActionTypes; export declare type GeneratedApiAction = Payload extends undefined ? Meta extends undefined ? { type: Type; } : { type: Type; meta: Meta; } : Meta extends undefined ? { type: Type; payload: Payload; } : { type: Type; payload: Payload; meta: Meta; }; export declare const mkApiAction: , Payload = undefined, Meta = undefined>(type: Type, payload?: Payload | undefined, meta?: Meta | undefined) => GeneratedApiAction;