import { Callbag, Source } from 'callbag'; import { Change, MsgType, State, SubState } from 'callbag-state'; import { Watcher } from './watcher'; export declare type KeyFunc = (t: T) => number | string; export declare type KeyMap = { [key: string]: { index: number; item: T; }; }; export declare type Addition = { index: number; item: T; }; export declare type Deletion = { index: number; item: T; }; export declare type Move = { oldIndex: number; newIndex: number; item: T; }; export declare type ListChanges = { additions: Addition[]; deletions: Deletion[]; moves: Move[]; }; export declare type KeyedChangeStream = Source<[Change, ListChanges]>; export declare type KeyedStateMsgType = MsgType | typeof _Latest | typeof _KeyChangeStream | typeof _Watcher; export declare type KeyedState = Callbag & { get(): T[]; set(t: T[]): void; clear(): void; keyfunc: (t: T) => string | number; state: State; changestream: KeyedChangeStream; watcher: Watcher; changes(): Source>; index(k: string | number): Source & { get(): number | undefined; }; key(k: string | number): SubState; }; export declare function isKeyedState(cb: Source): cb is KeyedState; export declare const _Latest = 100; export declare const _KeyChangeStream = 201; export declare const _Watcher = 202;