/**
 * @packageDocumentation
 * @module api
 */
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { KubernetesResource, KubernetesResourceList, Status } from '../core/public-api';
import { K8sApiResourceService } from './k8s-api-resource.service';
import { PageVisibilityService } from './page-visibility.service';
import { ErebusResourceDeleteParams, ErebusResourceListParams, ErebusResourceParams, ErebusResourcePatchParams, ErebusResourceWriteParams, GlobalResourceDeleteParams, GlobalResourceListParams, GlobalResourceParams, GlobalResourcePatchParams, GlobalResourceWriteParams, WatchAPIResponse, WatchErebusResourceListParams, WatchErebusResourceParams, WatchGlobalResourceListParams, WatchGlobalResourceParams, ErebusResourceBatchDeleteParams } from './types';
import * as i0 from "@angular/core";
export declare const TIMEOUT_SECONDS = 59;
export declare const SEARCH_URL_PREFIX = "/acp/v1/resources/search";
export declare class K8sApiService<R extends string = string> {
    private readonly http;
    private readonly k8sApiResource;
    private readonly pageVisibility;
    private readonly globalNamespace;
    constructor(http: HttpClient, k8sApiResource: K8sApiResourceService, pageVisibility: PageVisibilityService, globalNamespace: string);
    /**
     * 获取 Global 集群单个资源对象
     */
    getGlobalResource<T extends KubernetesResource>(params: GlobalResourceParams<R>): Observable<T>;
    /**
     * 监听 Global 集群单个资源对象
     */
    watchGlobalResource<T extends KubernetesResource>(params: WatchGlobalResourceParams<R>): Observable<T>;
    /**
     * 监听 Global 集群资源列表变化
     */
    watchGlobalResourceChange<T extends KubernetesResource>(seedVersion: string, params: WatchGlobalResourceListParams<R>): Observable<WatchAPIResponse<T>>;
    /**
     * 获取 Global 集群资源对象列表，包含分页信息
     */
    getGlobalResourceList<T extends KubernetesResource>(params: GlobalResourceListParams<R>): Observable<KubernetesResourceList<T>>;
    /**
     * 创建 Global 集群资源
     */
    postGlobalResource<T extends KubernetesResource>(params: GlobalResourceWriteParams<T, R>): Observable<T>;
    /**
     * 完整覆盖更新 Global 集群单个资源对象
     */
    putGlobalResource<T extends KubernetesResource>(params: GlobalResourceWriteParams<T, R>): Observable<T>;
    /**
     * 增量更新 Global 集群单个资源对象的部分属性
     */
    patchGlobalResource<T extends KubernetesResource>(params: GlobalResourcePatchParams<T, R>): Observable<T>;
    /**
     * 删除 Global 集群单个资源
     */
    deleteGlobalResource<S extends KubernetesResource = Status, T extends KubernetesResource = S extends Status ? KubernetesResource : S>(params: GlobalResourceDeleteParams<T, R>): Observable<S>;
    /**
     * 获取业务集群单个资源对象
     */
    getResource<T extends KubernetesResource>(params: ErebusResourceParams<R>): Observable<T>;
    /**
     * 监听业务集群单个资源对象
     */
    watchResource<T extends KubernetesResource>(params: WatchErebusResourceParams<R>): Observable<T>;
    /**
     * 监听资源列表变化
     */
    watchResourceChange<T extends KubernetesResource>(seedVersion: string, params: WatchErebusResourceListParams<R>): Observable<WatchAPIResponse<T>>;
    /**
     * 获取业务集群资源对象列表，包含分页信息
     */
    getResourceList<T extends KubernetesResource>(params: ErebusResourceListParams<R>): Observable<KubernetesResourceList<T>>;
    /**
     * 创建业务集群资源
     */
    postResource<T extends KubernetesResource>(params: ErebusResourceWriteParams<T, R>): Observable<T>;
    /**
     * 完整覆盖更新业务集群单个资源对象
     */
    putResource<T extends KubernetesResource>(params: ErebusResourceWriteParams<T, R>): Observable<T>;
    /**
     * 增量更新业务集群单个资源对象的部分属性
     */
    patchResource<T extends KubernetesResource>(params: ErebusResourcePatchParams<T, R>): Observable<T>;
    /**
     * 删除业务集群单个资源
     */
    deleteResource<S extends KubernetesResource = Status, T extends KubernetesResource = S extends Status ? KubernetesResource : S>(params: ErebusResourceDeleteParams<T, R>): Observable<S>;
    /**
     * 批量删除业务集群的资源
     */
    batchDeleteResource<S extends KubernetesResource = Status, T extends KubernetesResource = S extends Status ? KubernetesResource : S>(params: ErebusResourceBatchDeleteParams<R>): Observable<T>;
    private _getResourceDefinition;
    private _getApiPath;
    private _getNamespace;
    private _getName;
    /**
     * k8s list api 返回的结果里，items 缺失 kind 和 apiVersion 字段
     * 规则如 Service 类型对应 kind: ServiceList，去掉最后四个字符可得到资源的 kind
     * @internal
     */
    private _getNormalizedList;
    private _getResource;
    private _watchResource;
    private _keepWatchResourceChange;
    private _watchResourceChange;
    private _getResourceList;
    private _postResource;
    private _putResource;
    private _patchResource;
    private _deleteResource;
    private _batchDeleteResource;
    private readonly _getHeaders;
    private _getDowngradePolling;
    static ɵfac: i0.ɵɵFactoryDeclaration<K8sApiService<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<K8sApiService<any>>;
}
