import { ComputedRef, DeepReadonly, Ref } from 'vue'; import { PromiseOr } from '@myparcel/ts-utils'; export interface StorableMap { storage: Ref>; clear(): void; get(key: K): T1; has(key: K): boolean; set(key: K, value: T1): T1; } export interface RequestHandler { data: DeepReadonly>; loading: ComputedRef; load(): Promise; } export interface UseRequestOptions { fallback?: T; onError?(error: unknown, queryKey: RequestKey): PromiseOr; onSuccess?(data: T): PromiseOr; } export type RequestKey = (string | object | RequestKey)[]; export type RequestStorage = StorableMap;