mirror of
https://github.com/zoriya/v10.git
synced 2026-08-16 02:45:09 +00:00
25 lines
1.4 KiB
TypeScript
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
|