import { MetadataObject } from "./types/meta";
import { IKubernetesRESTClient, WatchOptions } from "./client";
import { ListWatchErrorStrategy } from "./resource_listwatch_error";
import { WatchHandle } from "./watch";
import { WatchEvent } from "./types/meta/v1";
import { Counter, Gauge } from "prom-client";
export interface ListWatchOptions<R extends MetadataObject> extends WatchOptions {
    onResync?: (objs: R[]) => any;
    skipAddEventsOnResync?: boolean;
    errorStrategy?: ListWatchErrorStrategy;
}
export interface ListWatchMetrics {
    watchResyncErrorCount: Counter<"baseURL">;
    watchOpenCount: Gauge<"baseURL">;
}
export declare class ListWatch<TObj extends MetadataObject> {
    private readonly state;
    private readonly baseURL;
    private readonly resourceBaseURL;
    private readonly opts;
    private readonly client;
    private readonly metrics;
    private readonly onWatchEvent;
    private readonly onWatchError;
    private readonly errorStrategy;
    constructor(onWatchEvent: (event: WatchEvent<TObj>) => any, onWatchError: ((error: any) => any) | undefined, client: IKubernetesRESTClient, baseURL: string, resourceBaseURL: string, opts: ListWatchOptions<TObj>, metrics: ListWatchMetrics);
    private handler;
    private resync;
    run(): WatchHandle;
    private handleWatchIterationError;
}
