import { AnyObject, SetStateAction } from "@ariakit/utils"; //#region src/index.d.ts type Listener = (state: S, prevState: S) => void | (() => void); type Sync = (keys: K[] | null, listener: Listener>) => () => void; type StoreSetup = (callback: () => void | (() => void)) => () => void; type StoreInit = () => () => void; type StoreSubscribe = Sync; type StoreSync = Sync; type StoreBatch = Sync; type StorePick = ReadonlyArray> = (keys: K) => Store>; type StoreOmit = ReadonlyArray> = (keys: K) => Store>; /** * Creates a store. * @param initialState Initial state. * @param stores Stores to extend. */ export declare function createStore(initialState: S, ...stores: Array> | undefined>): Store; export declare function setup(store?: T | null, ...args: Parameters): T extends Store ? ReturnType : void; export declare function init(store?: T | null, ...args: Parameters): T extends Store ? ReturnType : void; export declare function subscribe>(store?: T | null, ...args: Parameters, K>>): T extends Store ? ReturnType, K>> : void; export declare function sync>(store?: T | null, ...args: Parameters, K>>): T extends Store ? ReturnType, K>> : void; export declare function batch>(store?: T | null, ...args: Parameters, K>>): T extends Store ? ReturnType, K>> : void; export declare function omit>>(store?: T | null, ...args: Parameters, K>>): T extends Store ? ReturnType, K>> : void; export declare function pick>>(store?: T | null, ...args: Parameters, K>>): T extends Store ? ReturnType, K>> : void; /** * Merges multiple stores into a single store. */ export declare function mergeStore(...stores: Array | undefined>): Store; /** * Throws when a store prop is passed in conjunction with a default state. */ export declare function throwOnConflictingProps(props: AnyObject, store?: Store): void; /** * Store state type. */ export type State = AnyObject; /** * Initial state that can be passed to a store creator function. * @template S State type. * @template K Key type. */ export type StoreOptions = Partial>; /** * Props that can be passed to a store creator function. * @template S State type. */ export interface StoreProps { /** * Another store object that will be kept in sync with the original store. * * Live examples: * - [Navigation Menubar](https://ariakit.com/examples/menubar-navigation) */ store?: Store>; } /** * Extracts the state type from a store type. * @template T Store type. */ export type StoreState = T extends Store ? S : never; /** * Store. * @template S State type. */ export interface Store { /** * Returns the current store state. */ getState(): S; /** * Sets a state value. */ setState(key: K, value: SetStateAction): void; } //#endregion //# sourceMappingURL=index.d.ts.map