import { type KubeConfig, type CoreV1Api } from '@kubernetes/client-node';
import { type Pods } from '../../../resources/pod/pods.js';
import { NamespaceName } from '../../../../../types/namespace/namespace-name.js';
import { PodReference } from '../../../resources/pod/pod-reference.js';
import { type Pod } from '../../../resources/pod/pod.js';
import { K8ClientBase } from '../../k8-client-base.js';
import { type ContainerName } from '../../../resources/container/container-name.js';
export declare class K8ClientPods extends K8ClientBase implements Pods {
    private readonly kubeClient;
    private readonly kubeConfig;
    private readonly logger;
    constructor(kubeClient: CoreV1Api, kubeConfig: KubeConfig);
    readByReference(podReference: PodReference): Pod;
    read(podReference: PodReference): Promise<Pod>;
    list(namespace: NamespaceName, labels: string[]): Promise<Pod[]>;
    waitForReadyStatus(namespace: NamespaceName, labels: string[], maxAttempts?: number, delay?: number): Promise<Pod[]>;
    /**
     * Check pods for conditions
     * @param namespace - namespace
     * @param conditionsMap - a map of conditions and values
     * @param [labels] - pod labels
     * @param [maxAttempts] - maximum attempts to check
     * @param [delay] - delay between checks in milliseconds
     */
    private waitForPodConditions;
    waitForRunningPhase(namespace: NamespaceName, labels: string[], maxAttempts: number, delay: number, podItemPredicate?: (items: Pod) => boolean): Promise<Pod[]>;
    listForAllNamespaces(labels: string[]): Promise<Pod[]>;
    create(podReference: PodReference, labels: Record<string, string>, containerName: ContainerName, containerImage: string, containerCommand: string[], startupProbeCommand: string[]): Promise<Pod>;
}
