Files
v10/dist/dev/core/store.d.ts
T

25 lines
1.4 KiB
TypeScript

import { State, StateChange, SubscribeOptions, UnknownState } from "./state.js";
import { Slice } from "./slice.js";
import { StoreCallbacks } from "./config.js";
//#region src/core/store.d.ts
interface StoreOptions<Target, State> extends StoreCallbacks<Target, State> {}
declare function createStore<Target = unknown>(): <State>(slice: Slice<Target, State>, options?: StoreOptions<Target, State>) => Store<Target, State>;
declare function isStore(value: unknown): value is AnyStore;
interface BaseStore<Target = unknown, State$1 = UnknownState> {
[key: string]: unknown;
readonly $state: State<State$1>;
readonly target: Target | null;
readonly destroyed: boolean;
readonly state: State$1;
attach(target: Target): () => void;
destroy(): void;
subscribe(callback: StateChange, options?: SubscribeOptions): () => void;
}
type Store<Target = unknown, State = UnknownState> = BaseStore<Target, State> & State;
type AnyStore<Target = any> = BaseStore<Target, object>;
type UnknownStore<Target = unknown> = Store<Target, UnknownState>;
type InferStoreTarget<S extends AnyStore> = S extends Store<infer T, any> ? T : never;
type InferStoreState<S extends AnyStore> = S extends Store<any, infer State> ? State : never;
//#endregion
export { AnyStore, BaseStore, InferStoreState, InferStoreTarget, Store, StoreOptions, UnknownStore, createStore, isStore };
//# sourceMappingURL=store.d.ts.map