import { type OnStateChange, type ResetState, type SetState, type StateMeta } from './state.js'; export type ReadonlyStore = { get(): T; onChange: OnStateChange; }; /** * A store tracks a value and its changes. */ export type Store = ReadonlyStore & { set: SetState; reset: ResetState; }; /** * The Store Value type. */ export type StoreValue> = ReturnType; /** * creates a object style store to track a value and its changes. * * @param init initial value T * @param meta optional meta data for custom logger. * @returns { get, set, update, onChange, reset } * * @example * ```ts * const store = app.states.createStore(0) * * store.get() // 0 * store.set(1) // 1 * store.update(v => v + 1) // 2 * store.onChange(v => console.log(v)) // trigger when set or update * store.reset() // reset value to the initial value * ``` */ export declare function createStore(value: T, meta?: StateMeta): Store; /** * Convert a store to a readonly store. */ export declare function toReadonlyStore>(store: S): S extends Store ? ReadonlyStore : never; //# sourceMappingURL=store.d.ts.map