import type { TQueryKey } from "./types.js"; /** * Execute fetch with deduplication * If same key is already fetching, return existing promise * * @param key Query key * @param fetcher Function to fetch data * @param onFinally Callback to run when fetch completes * @returns Promise with fetched data */ export declare function executeFetch(key: string, fetcher: (signal: AbortSignal) => Promise, onFinally?: () => void): Promise; /** * Cancel in-flight request for a key * * @param key Query key */ export declare function cancelFetch(key: string): void; /** * Execute fetch with retry logic * * @param fetcher Function to fetch data * @param retry Number of retries or boolean * @param retryDelay Delay between retries in ms or function * @param signal AbortSignal to cancel request * @returns Promise with fetched data */ export declare function executeWithRetry(fetcher: (signal: AbortSignal) => Promise, retry: number | boolean, retryDelay: number | ((attempt: number) => number), signal: AbortSignal): Promise; /** * Default retry delay with exponential backoff * * @param attempt Current attempt number * @returns Delay in milliseconds */ export declare function defaultRetryDelay(attempt: number): number; /** * Setup window focus refetch listener * * @param callback Function to call when window gains focus * @returns Cleanup function to remove listener */ export declare function setupFocusRefetch(callback: () => void): () => void; /** * Setup reconnect refetch listener * * @param callback Function to call when network reconnects * @returns Cleanup function to remove listener */ export declare function setupReconnectRefetch(callback: () => void): () => void; /** * Resolve query key (static or reactive) * * @param key Query key * @returns Resolved string key */ export declare function resolveQueryKey(key: TQueryKey): string;