export type MainFn = (sources: So) => Si; export type Reducer = (state: T | undefined) => T | undefined; export type Getter = (state: T | undefined) => R | undefined; export type Setter = (state: T | undefined, childState: R | undefined) => T | undefined; export type Lens = { get: Getter; set: Setter; }; export type ItemScopeFn = (key: string) => string | object; export type ItemKeyFn = (state: S, index?: number) => string; export type Scope = string | number | Lens; export type InternalInstances = { dict: Map, arr: Array, };