import { type RecoilState, type RecoilValue } from 'recoil';
import { RequestExtrasSerializable } from '../../api/http';
import { type AnyVariable } from '../../types';
/**
 * Selector family type which constructs a selector from a given set of extras.
 */
export type SelectorFamily = (P: RequestExtrasSerializable) => RecoilValue<any>;
/**
 * Atom family type which constructs an atom from a given set of extras.
 */
export type AtomFamily = (P: RequestExtrasSerializable) => RecoilState<any>;
/**
 * Key -> atom
 */
export declare const atomRegistry: Map<string, RecoilState<any>>;
/**
 * Key -> atom family
 */
export declare const atomFamilyRegistry: Map<string, AtomFamily>;
/**
 * Atom family function => {extras => atom}
 *
 * Stores all instances of a given atom family, as a map of seriailzed extras to atom.
 */
export declare const atomFamilyMembersRegistry: Map<AtomFamily, Map<string | null, RecoilState<any>>>;
/**
 * Key -> selector
 */
export declare const selectorRegistry: Map<string, RecoilValue<any>>;
/**
 * Key -> selector family
 */
export declare const selectorFamilyRegistry: Map<string, SelectorFamily>;
/**
 * Selector family function => {extras => selector}
 *
 * Stores all instances of a given selector family, as a map of seriailzed extras to selector.
 */
export declare const selectorFamilyMembersRegistry: Map<SelectorFamily, Map<string | null, RecoilValue<any>>>;
/**
 * StreamVariable atom instances registry.
 * Key is serialized StreamAtomParams, value is the atom instance.
 * Used to track active stream connections and check if a stream variable is registered.
 */
export declare const streamAtomRegistry: Map<string, RecoilState<any>>;
/**
 * Key -> dependencies data for a selector
 */
export declare const depsRegistry: Map<string, {
    args: any[];
    result: any;
}>;
export type TriggerIndexValue = {
    /** Set to a unique key if force=True was set by the user */
    force_key: string | null;
    inc: number;
};
type RegistryKeyType = 'result-selector' | 'derived-selector' | 'selector-nested' | 'trigger' | 'filters';
/**
 * Get a unique registry key of a given type for a given variable.
 *
 * @param variable variable to get the key for
 * @param type type of the registry entry
 */
export declare function getRegistryKey<T>(variable: AnyVariable<T>, type: RegistryKeyType): string;
/**
 * Clear registries - to be used in tests only.
 */
export declare function clearRegistries_TEST(): void;
/**
 * Check whether a given variable is registered within the application
 * (More strictly, under the current RecoilRoot)
 *
 * @param variable variable to check
 */
export declare function isRegistered<T>(variable: AnyVariable<T>): boolean;
export {};
//# sourceMappingURL=store.d.ts.map