import { FleetK8sResourceCommon, FleetWatchK8sResultsObject } from '../types';
type Data = FleetK8sResourceCommon | FleetK8sResourceCommon[];
type CacheEntry = {
    result?: FleetWatchK8sResultsObject<Data>;
    socket?: WebSocket;
    refCount: number;
    timestamp: number;
    resourceVersion?: string;
    timeout?: NodeJS.Timeout;
};
export declare const isCacheEntryValid: (entry: CacheEntry) => boolean;
export declare const isCacheEntryFresh: (entry: CacheEntry) => boolean;
export declare const getCacheEntryAge: (entry: CacheEntry) => number;
export declare const getSocketMonitoringInterval: () => number;
export type FleetK8sWatchResourceStore = {
    cache: Record<string, CacheEntry>;
    setResult: (key: string, data: Data | undefined, loaded: boolean, loadError?: any, resourceVersion?: string) => void;
    setSocket: (key: string, socket: WebSocket) => void;
    incrementRefCount: (key: string) => void;
    decrementRefCount: (key: string) => void;
    touchEntry: (key: string) => void;
    removeEntry: (key: string) => void;
    getResult: (key: string) => FleetWatchK8sResultsObject<Data> | undefined;
    getRefCount: (key: string) => number;
    getResourceVersion: (key: string) => string | undefined;
};
export declare const useFleetK8sWatchResourceStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<FleetK8sWatchResourceStore>, "subscribe"> & {
    subscribe: {
        (listener: (selectedState: FleetK8sWatchResourceStore, previousSelectedState: FleetK8sWatchResourceStore) => void): () => void;
        <U>(selector: (state: FleetK8sWatchResourceStore) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
            equalityFn?: ((a: U, b: U) => boolean) | undefined;
            fireImmediately?: boolean;
        } | undefined): () => void;
    };
}>;
export {};
//# sourceMappingURL=fleetK8sWatchResourceStore.d.ts.map