import type { Client as ObjectsClient } from '@iobroker/db-objects-redis';
import type { Client as StatesClient } from '@iobroker/db-states-redis';
import type { logger } from '@iobroker/js-controller-common';
interface AdapterAutoUpgradeOptions {
    /** The objects DB client */
    objects: ObjectsClient;
    /** The states DB client */
    states: StatesClient;
    /** Logger which needs to be prefixed */
    logger: ReturnType<typeof logger>;
    /** Prefix for log messages */
    logPrefix: string;
}
interface UpgradedAdapter {
    /** Name of the adapter */
    name: string;
    /** Version before upgrade */
    oldVersion: string;
    /** Newly installed version */
    newVersion: string;
}
interface UpgradeAdaptersResult {
    /** Adapters which were successfully upgraded */
    upgradedAdapters: UpgradedAdapter[];
    /** Adapters which were failed to upgrade */
    failedAdapters: UpgradedAdapter[];
}
export declare class AdapterAutoUpgradeManager {
    private readonly objects;
    private readonly states;
    /** Mapping from semver range to range identifier */
    private SEMVER_RANGE_MAPPING;
    /** Prefix for log messages */
    private readonly logPrefix;
    /** Logger which needs to be prefixed */
    private logger;
    constructor(options: AdapterAutoUpgradeOptions);
    /**
     * Checks if auto upgrade is enabled for the current configured repository
     */
    isAutoUpgradeEnabled(): Promise<boolean>;
    /**
     * Checks the current `system.repositories` object and checks if one needs to be performed according to the adapter configuration
     */
    upgradeAdapters(): Promise<UpgradeAdaptersResult>;
    /**
     * Upgrade specified adapter to given version
     *
     * @param options information of the adapter to install, e.g. version and name, sa well as active repo
     */
    private upgradeAdapter;
    /**
     * Get the current active repository name
     */
    private getConfiguredRepositoryName;
    /**
     * Get the repository information for the given repository
     *
     * @param name Name of the repository
     */
    private getRepository;
    /**
     * Get the auto upgrade configuration of all adapters
     */
    private getAutoUpdateConfiguration;
    /**
     * Get the default upgrade policy from the system config
     */
    private getDefaultUpgradePolicy;
}
export {};
//# sourceMappingURL=adapterAutoUpgradeManager.d.ts.map