import * as I from "../index"; import { Book } from "./book"; export declare type Books = { [id: number]: Book; }; export declare namespace Books { const empty: Books; const at: ((key: number) => (outer: I.Cursor<{ [key: number]: Book; }, I.Action<"AT", I.At | I.Action<"TITLE", I.Action<"REPLACE", string>> | I.Action<"SET_TITLE", string> | I.Action<"ADD_AUTHOR", string>>>>) => I.Cursor | I.Action<"TITLE", I.Action<"REPLACE", string>> | I.Action<"SET_TITLE", string> | I.Action<"ADD_AUTHOR", string>>) & { update: (key: number, action: I.Action<"SET_PRICE", number> | I.Action<"TITLE", I.Action<"REPLACE", string>> | I.Action<"SET_TITLE", string> | I.Action<"ADD_AUTHOR", string>) => I.Action<"AT", I.At | I.Action<"TITLE", I.Action<"REPLACE", string>> | I.Action<"SET_TITLE", string> | I.Action<"ADD_AUTHOR", string>>>; } & I.ActionDefinition<{ [key: number]: Book; }, "AT", I.At | I.Action<"TITLE", I.Action<"REPLACE", string>> | I.Action<"SET_TITLE", string> | I.Action<"ADD_AUTHOR", string>>>; const remove: I.ActionCreator<{ [key: number]: Book; }, "REMOVE", number>; const reduce: I.ReducerBuilder<{ [id: number]: Book; }, I.Action<"AT", I.At | I.Action<"TITLE", I.Action<"REPLACE", string>> | I.Action<"SET_TITLE", string> | I.Action<"ADD_AUTHOR", string>>> | I.Action<"REMOVE", number>>; } export interface Shelf { readonly description: string; readonly books: Books; } export declare namespace Shelf { const setDescription: I.ActionCreator; const books: I.ReferenceDefinition<"BOOKS", Shelf, { [id: number]: Book; }, I.Action<"AT", I.At | I.Action<"TITLE", I.Action<"REPLACE", string>> | I.Action<"SET_TITLE", string> | I.Action<"ADD_AUTHOR", string>>> | I.Action<"REMOVE", number>>; const empty: Shelf; const reduce: I.ReducerBuilder | I.Action<"BOOKS", I.Action<"AT", I.At | I.Action<"TITLE", I.Action<"REPLACE", string>> | I.Action<"SET_TITLE", string> | I.Action<"ADD_AUTHOR", string>>> | I.Action<"REMOVE", number>>>; }