export type CaseType<Tag, Props> = {
    readonly type: Tag;
} & Props;
export type CaseCtorType<Tag, Props, A extends any[]> = {
    new (...args: A): CaseType<Tag, Props>;
};
export type CaseClassType<Tag, Props, A extends any[]> = {
    readonly Type: Tag;
    new (...args: A): CaseType<Tag, Props>;
};
export declare function CaseCreator<Tag, Props, A extends any[]>(typeTag: Tag, fn: (...args: A) => Props): CaseClassType<Tag, Props, A>;
export declare function FallbackPropCreator<Props>(fn: () => Props): (props?: Props) => Props;
//# sourceMappingURL=index.d.ts.map