import { RemoteConfigValidatorApi } from './api/remote-config-validator-api.js';
import { DeploymentStateSchema } from '../../../data/schema/model/remote/deployment-state-schema.js';
import { NamespaceName } from '../../../types/namespace/namespace-name.js';
import { type BaseStateSchema } from '../../../data/schema/model/remote/state/base-state-schema.js';
import { type LocalConfigRuntimeState } from '../../../business/runtime-state/config/local/local-config-runtime-state.js';
import { type ChartManager } from '../../chart-manager.js';
import { type ComponentId } from '../../../types/index.js';
import { type K8Factory } from '../../../integration/kube/k8-factory.js';
/**
 * Static class is used to validate that components in the remote config
 * are present in the kubernetes cluster, and throw errors if there is mismatch.
 */
export declare class RemoteConfigValidator implements RemoteConfigValidatorApi {
    private readonly k8Factory?;
    private readonly localConfig?;
    private readonly chartManager?;
    constructor(k8Factory?: K8Factory, localConfig?: LocalConfigRuntimeState, chartManager?: ChartManager);
    private static consensusNodeSkipConditionCallback;
    static componentValidationsMapping: Record<string, {
        getLabelsCallback: (id: ComponentId, legacyReleaseName?: string) => string[];
        displayName: string;
        skipCondition?: (component: BaseStateSchema) => boolean;
        legacyReleaseName?: string;
    }>;
    validateComponents(namespace: NamespaceName, skipConsensusNodes: boolean, state: Readonly<DeploymentStateSchema>): Promise<void>;
    private validateComponentGroup;
    /**
     * Generic handler that throws errors.
     *
     * @param displayName - name to display in error message
     * @param component - component which is not found in the cluster
     * @param error - original error for the kube client
     * @param labels - labels used to find the component
     */
    private static buildValidationError;
    static buildValidationErrorMessage(displayName: string, component: BaseStateSchema, labels?: string[]): string;
}
