import { KubernetesRequestBody, ObjectsByEntityResponse, WorkloadsByEntityRequest, CustomObjectsByEntityRequest } from '@backstage/plugin-kubernetes-common';
import { Event } from 'kubernetes-models/v1';
import { JsonObject } from '@backstage/types';
/** @public */
export declare const kubernetesApiRef: import("@backstage/core-plugin-api").ApiRef<KubernetesApi>;
/** @public */
export declare const kubernetesProxyApiRef: import("@backstage/core-plugin-api").ApiRef<KubernetesProxyApi>;
/** @public */
export declare const kubernetesClusterLinkFormatterApiRef: import("@backstage/core-plugin-api").ApiRef<KubernetesClusterLinkFormatterApi>;
/** @public */
export interface KubernetesApi {
    getObjectsByEntity(requestBody: KubernetesRequestBody): Promise<ObjectsByEntityResponse>;
    getClusters(): Promise<{
        name: string;
        authProvider: string;
        oidcTokenProvider?: string;
    }[]>;
    getCluster(clusterName: string): Promise<{
        name: string;
        authProvider: string;
        oidcTokenProvider?: string;
        dashboardUrl?: string;
    } | undefined>;
    getWorkloadsByEntity(request: WorkloadsByEntityRequest): Promise<ObjectsByEntityResponse>;
    getCustomObjectsByEntity(request: CustomObjectsByEntityRequest): Promise<ObjectsByEntityResponse>;
    proxy(options: {
        clusterName: string;
        path: string;
        init?: RequestInit;
    }): Promise<Response>;
}
/** @public */
export interface KubernetesProxyApi {
    getPodLogs(request: {
        podName: string;
        namespace: string;
        clusterName: string;
        containerName: string;
        previous?: boolean;
    }): Promise<{
        text: string;
    }>;
    deletePod(request: {
        podName: string;
        namespace: string;
        clusterName: string;
    }): Promise<{
        text: string;
    }>;
    getEventsByInvolvedObjectName(request: {
        clusterName: string;
        involvedObjectName: string;
        namespace: string;
    }): Promise<Event[]>;
}
/**
 * @public
 */
export type FormatClusterLinkOptions = {
    dashboardUrl?: string;
    dashboardApp?: string;
    dashboardParameters?: JsonObject;
    object: any;
    kind: string;
};
/** @public */
export interface KubernetesClusterLinkFormatterApi {
    formatClusterLink(options: FormatClusterLinkOptions): Promise<string | undefined>;
}
