export declare const $RAW: unique symbol, $NODE: unique symbol; export declare const DevHooks: { onStoreNodeUpdate: OnStoreNodeUpdate | null; }; type DataNode = { (): any; $(value?: any): void; }; type DataNodes = Record; export type OnStoreNodeUpdate = (state: StoreNode, property: PropertyKey, value: StoreNode | NotWrappable, prev: StoreNode | NotWrappable) => void; export interface StoreNode { [$NODE]?: DataNodes; [key: PropertyKey]: any; } export declare namespace SolidStore { interface Unwrappable { } } export type NotWrappable = string | number | bigint | symbol | boolean | Function | null | undefined | SolidStore.Unwrappable[keyof SolidStore.Unwrappable]; export type Store = T; export declare function isWrappable(obj: T | NotWrappable): obj is T; /** * Returns the underlying data in the store without a proxy. * @param item store proxy object * @example * ```js * const initial = {z...}; * const [state, setState] = createStore(initial); * initial === state; // => false * initial === unwrap(state); // => true * ``` */ export declare function unwrap(item: T, set?: Set): T; export declare function getDataNodes(target: StoreNode): DataNodes; export declare function getDataNode(nodes: DataNodes, property: PropertyKey, value: any): DataNode; export declare function proxyDescriptor(target: StoreNode, property: PropertyKey): TypedPropertyDescriptor | undefined; export declare function trackSelf(target: StoreNode): void; export declare function ownKeys(target: StoreNode): (string | symbol)[]; export declare function setProperty(state: StoreNode, property: PropertyKey, value: any, deleting?: boolean): void; export declare function updatePath(current: StoreNode, path: any[], traversed?: PropertyKey[]): void; /** @deprecated */ export type DeepReadonly = 0 extends 1 & T ? T : T extends NotWrappable ? T : { readonly [K in keyof T]: DeepReadonly; }; /** @deprecated */ export type DeepMutable = 0 extends 1 & T ? T : T extends NotWrappable ? T : { -readonly [K in keyof T]: DeepMutable; }; export type CustomPartial = T extends readonly unknown[] ? "0" extends keyof T ? { [K in Extract]?: T[K]; } : { [x: number]: T[number]; } : Partial; export type PickMutable = { [K in keyof T as (() => U extends { [V in K]: T[V]; } ? 1 : 2) extends () => U extends { -readonly [V in K]: T[V]; } ? 1 : 2 ? K : never]: T[K]; }; export type StorePathRange = { from?: number; to?: number; by?: number; }; export type ArrayFilterFn = (item: T, index: number) => boolean; export type StoreSetter = T | CustomPartial | ((prevState: T, traversed: U) => T | CustomPartial); export type Part = KeyOf> = K | ([K] extends [never] ? never : readonly K[]) | ([T] extends [readonly unknown[]] ? ArrayFilterFn | StorePathRange : never); type W = Exclude; type KeyOf = number extends keyof T ? 0 extends 1 & T ? keyof T : [T] extends [never] ? never : [ T ] extends [readonly unknown[]] ? number : keyof T : keyof T; type MutableKeyOf = KeyOf & keyof PickMutable; type Rest = KeyOf> = [T] extends [never] ? never : K extends MutableKeyOf ? [Part, ...RestSetterOrContinue] : K extends KeyOf ? [Part, ...RestContinue] : never; type RestContinue = 0 extends 1 & T ? [...Part[], StoreSetter] : Rest, U>; type RestSetterOrContinue = [StoreSetter] | RestContinue; export interface SetStoreFunction { >, K2 extends KeyOf[K1]>>, K3 extends KeyOf[K1]>[K2]>>, K4 extends KeyOf[K1]>[K2]>[K3]>>, K5 extends KeyOf[K1]>[K2]>[K3]>[K4]>>, K6 extends KeyOf[K1]>[K2]>[K3]>[K4]>[K5]>>, K7 extends MutableKeyOf[K1]>[K2]>[K3]>[K4]>[K5]>[K6]>>>(k1: Part, K1>, k2: Part[K1]>, K2>, k3: Part[K1]>[K2]>, K3>, k4: Part[K1]>[K2]>[K3]>, K4>, k5: Part[K1]>[K2]>[K3]>[K4]>, K5>, k6: Part[K1]>[K2]>[K3]>[K4]>[K5]>, K6>, k7: Part[K1]>[K2]>[K3]>[K4]>[K5]>[K6]>, K7>, setter: StoreSetter[K1]>[K2]>[K3]>[K4]>[K5]>[K6]>[K7], [ K7, K6, K5, K4, K3, K2, K1 ]>): void; >, K2 extends KeyOf[K1]>>, K3 extends KeyOf[K1]>[K2]>>, K4 extends KeyOf[K1]>[K2]>[K3]>>, K5 extends KeyOf[K1]>[K2]>[K3]>[K4]>>, K6 extends MutableKeyOf[K1]>[K2]>[K3]>[K4]>[K5]>>>(k1: Part, K1>, k2: Part[K1]>, K2>, k3: Part[K1]>[K2]>, K3>, k4: Part[K1]>[K2]>[K3]>, K4>, k5: Part[K1]>[K2]>[K3]>[K4]>, K5>, k6: Part[K1]>[K2]>[K3]>[K4]>[K5]>, K6>, setter: StoreSetter[K1]>[K2]>[K3]>[K4]>[K5]>[K6], [K6, K5, K4, K3, K2, K1]>): void; >, K2 extends KeyOf[K1]>>, K3 extends KeyOf[K1]>[K2]>>, K4 extends KeyOf[K1]>[K2]>[K3]>>, K5 extends MutableKeyOf[K1]>[K2]>[K3]>[K4]>>>(k1: Part, K1>, k2: Part[K1]>, K2>, k3: Part[K1]>[K2]>, K3>, k4: Part[K1]>[K2]>[K3]>, K4>, k5: Part[K1]>[K2]>[K3]>[K4]>, K5>, setter: StoreSetter[K1]>[K2]>[K3]>[K4]>[K5], [K5, K4, K3, K2, K1]>): void; >, K2 extends KeyOf[K1]>>, K3 extends KeyOf[K1]>[K2]>>, K4 extends MutableKeyOf[K1]>[K2]>[K3]>>>(k1: Part, K1>, k2: Part[K1]>, K2>, k3: Part[K1]>[K2]>, K3>, k4: Part[K1]>[K2]>[K3]>, K4>, setter: StoreSetter[K1]>[K2]>[K3]>[K4], [K4, K3, K2, K1]>): void; >, K2 extends KeyOf[K1]>>, K3 extends MutableKeyOf[K1]>[K2]>>>(k1: Part, K1>, k2: Part[K1]>, K2>, k3: Part[K1]>[K2]>, K3>, setter: StoreSetter[K1]>[K2]>[K3], [K3, K2, K1]>): void; >, K2 extends MutableKeyOf[K1]>>>(k1: Part, K1>, k2: Part[K1]>, K2>, setter: StoreSetter[K1]>[K2], [K2, K1]>): void; >>(k1: Part, K1>, setter: StoreSetter[K1], [K1]>): void; (setter: StoreSetter): void; >, K2 extends KeyOf[K1]>>, K3 extends KeyOf[K1]>[K2]>>, K4 extends KeyOf[K1]>[K2]>[K3]>>, K5 extends KeyOf[K1]>[K2]>[K3]>[K4]>>, K6 extends KeyOf[K1]>[K2]>[K3]>[K4]>[K5]>>, K7 extends KeyOf[K1]>[K2]>[K3]>[K4]>[K5]>[K6]>>>(k1: Part, K1>, k2: Part[K1]>, K2>, k3: Part[K1]>[K2]>, K3>, k4: Part[K1]>[K2]>[K3]>, K4>, k5: Part[K1]>[K2]>[K3]>[K4]>, K5>, k6: Part[K1]>[K2]>[K3]>[K4]>[K5]>, K6>, k7: Part[K1]>[K2]>[K3]>[K4]>[K5]>[K6]>, K7>, ...rest: Rest[K1]>[K2]>[K3]>[K4]>[K5]>[K6]>[K7], [K7, K6, K5, K4, K3, K2, K1]>): void; } /** * creates a reactive store that can be read through a proxy object and written with a setter function * * @description https://www.solidjs.com/docs/latest/api#createstore */ export declare function createStore(...[store, options]: {} extends T ? [store?: T | Store, options?: { name?: string; }] : [store: T | Store, options?: { name?: string; }]): [get: Store, set: SetStoreFunction]; export {};