import { type ConfigManager } from '../config-manager.js';
import { type K8Factory } from '../../integration/kube/k8-factory.js';
import { type SoloLogger } from '../logging/solo-logger.js';
import { type Lock, type LockRenewalService } from './lock.js';
import { type RemoteConfigRuntimeStateApi } from '../../business/runtime-state/api/remote-config-runtime-state-api.js';
/**
 * Manages the acquisition and renewal of locks.
 */
export declare class LockManager {
    private readonly _renewalService?;
    private readonly _logger?;
    private readonly k8Factory?;
    private readonly configManager?;
    private readonly remoteConfigRuntimeState?;
    /**
     * Creates a new lock manager.
     *
     * @param _renewalService - the lock renewal service.
     * @param _logger - the logger.
     * @param k8Factory - the Kubernetes client.
     * @param configManager - the configuration manager.
     * @param remoteConfigRuntimeState
     */
    constructor(_renewalService?: LockRenewalService, _logger?: SoloLogger, k8Factory?: K8Factory, configManager?: ConfigManager, remoteConfigRuntimeState?: RemoteConfigRuntimeStateApi);
    /**
     * Creates a new lease. This lease is not acquired until the `acquire` method is called.
     *
     * @returns a new lease instance.
     */
    create(): Promise<Lock>;
    /**
     * Retrieves the renewal service implementation.
     *
     * @returns the lease renewal service.
     */
    get renewalService(): LockRenewalService;
    /**
     * Retrieves the logger instance.
     *
     * @returns the logger.
     */
    get logger(): SoloLogger;
    /**
     * Retrieves the user or configuration supplied namespace to use for lease acquisition.
     *
     * @returns the namespace to use for lease acquisition or null if no namespace is specified.
     * @throws LockAcquisitionError if the namespace does not exist and cannot be created.
     */
    private currentNamespace;
}
