import { type StoreLike, type StoreSubscribe } from './stores.js';
interface QueryLike {
queryKey: readonly unknown[];
state: {
status: string;
fetchStatus?: string;
dataUpdatedAt?: number;
error?: {
message?: string;
} | null;
data?: unknown;
};
isStale?: () => boolean;
}
interface QueryCacheLike {
getAll: () => QueryLike[];
subscribe: (listener: () => void) => () => void;
}
interface QueryClientLike {
getQueryCache: () => QueryCacheLike;
}
export interface QuerySnapshot {
status: string;
fetchStatus: string | undefined;
isStale: boolean | undefined;
dataUpdatedAt: number | undefined;
error: string | null;
data: unknown;
}
export declare function tanstackQueryStore(client: QueryClientLike): StoreLike;
interface JotaiStoreLike {
get: (atom: A) => unknown;
sub: (atom: A, listener: () => void) => () => void;
}
export declare function jotaiStore(store: JotaiStoreLike, atoms: Record): StoreLike;
interface ActorLike {
getSnapshot: () => unknown;
subscribe: (listener: () => void) => {
unsubscribe: () => void;
};
}
export declare function xstateStore(actor: ActorLike): StoreLike;
export declare function valtioStore(proxy: T, snapshot: (p: T) => unknown, subscribe: (p: T, listener: () => void) => () => void): StoreLike;
export declare function mobxStore(observable: T, toJS: (value: T) => unknown, reaction: (track: () => unknown, effect: () => void) => () => void): StoreLike;
interface RecoilLoadableLike {
state: string;
contents: unknown;
}
interface RecoilSnapshotLike {
getLoadable: (atom: A) => RecoilLoadableLike;
}
export interface RecoilAtomSnapshot {
status: string;
value: unknown;
error: string | null;
}
export declare function recoilStore(atoms: Record, snapshot: () => RecoilSnapshotLike, subscribe: StoreSubscribe): StoreLike;
interface SvelteReadable {
subscribe: (run: (value: unknown) => void) => (() => void) | {
unsubscribe: () => void;
};
}
export declare function svelteStore(readable: SvelteReadable, warn?: (message: string) => void): StoreLike;
interface PiniaStoreLike {
$state: object;
$subscribe: (callback: (mutation: unknown, state: unknown) => void, options?: {
detached?: boolean;
flush?: 'pre' | 'post' | 'sync';
}) => () => void;
}
export declare function piniaStore(store: PiniaStoreLike): StoreLike;
export declare function pushStore(initial: unknown): {
store: StoreLike;
push: (value: unknown) => void;
};
export {};