import { ReadonlySignal } from "@preact-signals/unified-signals"; import type { IfNever, Opaque, ReadonlyKeysOf, SetReadonly } from "type-fest"; import { AnyRecord } from "../hooks"; import { FlatStoreSetter } from "./setter"; export type FlatStore> = Opaque; export type ReadonlyFlatStore> = Readonly>; /** * * @param initialState this value will be **mutated** and proxied * @returns */ export declare const flatStore: >(initialState: T) => FlatStore; type FlatStoreOfSignals = >(initialState: T) => FlatStore>; export type FlatStoreOfSignalsBody> = SetReadonly<{ [TKey in keyof T]: T[TKey] extends ReadonlySignal ? TValue : T[TKey]; }, ReadonlySignalsKeys>; export type ReadonlySignalsKeys = keyof { [TKey in keyof T as IfNever, never, T[TKey] extends ReadonlySignal ? TKey : never>]: T[TKey]; }; /** * * @param initialState this value will be **mutated** and proxied * @returns */ export declare const flatStoreOfSignals: FlatStoreOfSignals; export declare const createFlatStore: >(initialState: T) => readonly [FlatStore, FlatStoreSetter]; export declare const createFlatStoreOfSignals: >(initialState: T) => readonly [ FlatStore>, FlatStoreSetter> ]; export {};