import * as I from "../index"; export interface Product { readonly price: number; } export declare namespace Product { const empty: Product; const setPrice: I.ActionCreator; const reduce: I.ReducerBuilder>; } export declare namespace Product { type Cursor = typeof Product.reduce.cursorType; } export interface Book extends Product { readonly title: string; readonly authors: string[]; } export declare namespace Book { const title: I.ReferenceDefinition<"TITLE", Book, string, I.Action<"REPLACE", string>>; const setTitle: I.ActionCreator; const addAuthor: I.ActionCreator; const empty: Book; const reduce: I.ReducerBuilder | I.Action<"TITLE", I.Action<"REPLACE", string>> | I.Action<"SET_TITLE", string> | I.Action<"ADD_AUTHOR", string>>; type Cursor = typeof Book.reduce.cursorType; } export declare type Flavour = "sweet" | "savoury" | "none"; export interface Food extends Product { readonly flavour: Flavour; } export declare namespace Food { const flavour: I.ReferenceDefinition<"FLAVOUR", Food, Flavour, I.Action<"REPLACE", Flavour>>; const empty: Food; const reduce: I.ReducerBuilder | I.Action<"FLAVOUR", I.Action<"REPLACE", Flavour>>>; type Cursor = typeof Food.reduce.cursorType; }