import { QueryClient } from "@tanstack/react-query"; import { PlatformOS } from "./platformUtils"; /** * Network monitoring options */ export interface NetworkMonitoringOptions { /** * Enable fetch API monitoring * @default false */ fetch?: boolean; /** * Enable XMLHttpRequest monitoring * @default false */ xhr?: boolean; /** * Enable WebSocket monitoring * @default false */ websocket?: boolean; } /** * Expo DevTools options */ export interface ExpoDevToolsOptions { /** * Enable Expo DevTools integration * @default false */ enabled?: boolean; } interface useSyncQueriesExternalProps { /** * React Query client instance * Optional: If not provided, React Query specific functionality will be disabled */ queryClient?: QueryClient; deviceName: string; /** * A unique identifier for this device that persists across app restarts. * This is crucial for proper device tracking, especially if you have multiple devices of the same type. * If you only have one iOS and one Android device, you can use 'ios' and 'android'. * For multiple devices of the same type, ensure this ID is unique and persistent. */ deviceId: string; extraDeviceInfo?: Record; socketURL: string; platform: PlatformOS; /** * Enable/disable logging for debugging purposes * @default false */ enableLogs?: boolean; /** * Optional storage implementation for storage viewer integration * Can be AsyncStorage from @react-native-async-storage/async-storage or any custom implementation * that follows the same interface */ storage?: { getAllKeys: () => Promise; getItem: (key: string) => Promise; setItem: (key: string, value: string) => Promise; removeItem: (key: string) => Promise; clear: () => Promise; }; /** * Network monitoring options * Configure which network request types to monitor * @default undefined (no monitoring) */ networkMonitoring?: NetworkMonitoringOptions; /** * Expo DevTools options * Configure Expo DevTools integration * @default undefined (no Expo DevTools integration) */ expoDevTools?: ExpoDevToolsOptions; } /** * Hook used by mobile devices to sync query state with the external dashboard * * Handles: * - Connection to the socket server * - Responding to dashboard requests * - Processing query actions from the dashboard * - Sending query state updates to the dashboard */ export declare function useSyncQueriesExternal({ queryClient, deviceName, socketURL, extraDeviceInfo, platform, deviceId, enableLogs, storage, networkMonitoring, }: useSyncQueriesExternalProps): { connect: () => void; disconnect: () => void; isConnected: boolean; socket: import("socket.io-client").Socket; }; export {};