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;