/**
 * SPDX-License-Identifier: Apache-2.0
 */
import { Migration } from './migration.js';
import { type DeploymentName, type EmailAddress, type NamespaceNameAsString, type RemoteConfigMetadataStructure, type Version } from './types.js';
import { type Optional, type ToObject, type Validate } from '../../../types/index.js';
/**
 * Represent the remote config metadata object and handles:
 * - Validation
 * - Reading
 * - Making a migration
 * - Converting from and to plain object
 */
export declare class RemoteConfigMetadata implements RemoteConfigMetadataStructure, Validate, ToObject<RemoteConfigMetadataStructure> {
    readonly namespace: NamespaceNameAsString;
    readonly deploymentName: DeploymentName;
    readonly lastUpdatedAt: Date;
    readonly lastUpdateBy: EmailAddress;
    readonly soloVersion: Version;
    soloChartVersion: Version;
    hederaPlatformVersion: Version;
    hederaMirrorNodeChartVersion: Version;
    hederaExplorerChartVersion: Version;
    hederaJsonRpcRelayChartVersion: Version;
    private _migration?;
    constructor(namespace: NamespaceNameAsString, deploymentName: DeploymentName, lastUpdatedAt: Date, lastUpdateBy: EmailAddress, soloVersion: Version, soloChartVersion?: Version, hederaPlatformVersion?: Version, hederaMirrorNodeChartVersion?: Version, hederaExplorerChartVersion?: Version, hederaJsonRpcRelayChartVersion?: Version, migration?: Migration);
    /** Simplifies making a migration */
    makeMigration(email: EmailAddress, fromVersion: Version): void;
    /** Retrieves the migration if such exists */
    get migration(): Optional<Migration>;
    /** Handles conversion from a plain object to instance */
    static fromObject(metadata: RemoteConfigMetadataStructure): RemoteConfigMetadata;
    validate(): void;
    toObject(): RemoteConfigMetadataStructure;
}
