import { Component } from './component'; import { Data } from './types'; declare type StoreUpdateHandler = (state: any, changes: Record) => void; export interface StoreUpdateEntry { keys?: string[]; component?: Component; handler?: StoreUpdateHandler; } export declare class Store { data: T; sync: boolean; private listeners; constructor(data?: T); /** * Returns current store data */ get(): T; /** * Updates data in store */ set(data: Partial): void; /** * Subscribes to changes in given store * @param handler Function to invoke when store changes * @param keys Run handler only if given top-level keys are changed * @returns Object that should be used to unsubscribe from updates */ subscribe(handler: StoreUpdateHandler, keys?: string[]): StoreUpdateEntry; /** * Unsubscribes from further updates */ unsubscribe(obj: StoreUpdateEntry): void; /** * Watches for updates of given `keys` in store and runs `component` render on change */ watch(component: Component, keys?: string[]): void; /** * Stops watching for store updates for given component */ unwatch(component: Component): void; } export {};