import type { Disposer } from "@openlens/utilities";
import type { Logger } from "@openlens/logger";
import type { KubeObjectStoreLoadAllParams, KubeObjectStoreSubscribeParams } from "../../common/k8s-api/kube-object.store";
import type { ClusterContext } from "../cluster-frame-context/cluster-frame-context";
export interface KubeWatchSubscribeStoreOptions {
    /**
     * The namespaces to watch
     * @default all selected namespaces
     */
    namespaces?: string[];
    /**
     * A function that is called when listing fails. If set then blocks errors
     * from rejecting promises
     */
    onLoadFailure?: (err: any) => void;
}
interface Dependencies {
    readonly clusterContext: ClusterContext;
    readonly logger: Logger;
}
export interface SubscribableStore {
    readonly api: {
        readonly isNamespaced: boolean;
        readonly apiBase: string;
        readonly kind: string;
        readonly apiVersionWithGroup?: string;
    };
    loadAll(opts?: KubeObjectStoreLoadAllParams): Promise<unknown>;
    subscribe(opts?: KubeObjectStoreSubscribeParams): Disposer;
}
export type SubscribeStores = (stores: SubscribableStore[], opts?: KubeWatchSubscribeStoreOptions) => Disposer;
export declare class KubeWatchApi {
    #private;
    private readonly dependencies;
    constructor(dependencies: Dependencies);
    private subscribeStore;
    subscribeStores: SubscribeStores;
    protected log(message: any, meta: any): void;
}
export {};
