/**
 * @packageDocumentation
 * @module utils
 */
import { HttpClient } from '@angular/common/http';
import { OnDestroy } from '@angular/core';
import { Observable } from 'rxjs';
import { K8sUtilService } from './k8s-util.service';
export declare class FeatureGateService implements OnDestroy {
    private readonly http;
    private readonly k8sUtils;
    constructor(http: HttpClient, k8sUtils: K8sUtilService);
    private settings;
    private readonly requestFeatureGates$;
    private readonly receivedFeatureGates$;
    subscription: import("rxjs").Subscription;
    /** @ignore */
    ngOnDestroy(): void;
    private isLoaded;
    private _isEnabled;
    /**
     * check gate status
     * @param gate - specified feature gate
     * @param cluster - check gate for specified cluster
     */
    isEnabled(gate: string, cluster?: string): Observable<boolean>;
    /**
     * filter list with gate, send items without feature gate as begin push (can skip by passing `skipNoFeatureGatePush` argument with true)
     * @param items - list need filter
     * @param gateAccessor - how to get gate from item
     * @param cluster - check gate for specified cluster
     * @param filterMethod - filter method, default to list filter, can filter deep with createRecursiveFilter or totally custom method.
     * @param skipNoFeatureGatePush - skip begin push , default false.
     */
    filterEnabled<T>(items: T[], gateAccessor: (item: T) => string, cluster?: string, filterMethod?: (items: T[], condition: (item: T) => boolean) => T[], skipNoFeatureGatePush?: boolean): Observable<T[]>;
    /**
     * refetch cached feature gate settings
     * @param cluster - specified cluster, refetch all already cached settings when cluster is empty
     */
    refetchCache(cluster?: string): void;
}
