import { IStore, StoreEvent } from "./model"; export declare type DeferEventsFn = (runQueuedEvents: () => void) => void; export interface IStoreOptions { /** * Only used if you don't provide a specific processQueue fn */ deepCopyStateForEvent?: (v: T) => T; /** * Provide your own function to defer the batched processing * of dispatched events. By default uses window.requestAnimationFrame */ deferEvents?: DeferEventsFn; processQueue?: (state: T, fns: StoreEvent[]) => T; } export declare class StoreFsm { private readonly store; private readonly getState; private readonly setState; private readonly deepCopyStateForEvent; private readonly deferEvents; private queue; private fsm; private myRunQueuedEvents; constructor(store: IStore, getState: () => V, setState: (state: V) => void, opts?: IStoreOptions); dispatch(f: StoreEvent): void; dispatchSync(f: StoreEvent): void; private runQueuedEvents; private applyEventsToState; private processQueue; }