import { type ConfigManager } from '../config_manager.js';
import { type K8Factory } from '../../core/kube/k8_factory.js';
import { type SoloLogger } from '../logging.js';
import { type Lease, type LeaseRenewalService } from './lease.js';
/**
 * Manages the acquisition and renewal of leases.
 */
export declare class LeaseManager {
    private readonly _renewalService?;
    private readonly _logger?;
    private readonly k8Factory?;
    private readonly configManager?;
    /**
     * Creates a new lease manager.
     *
     * @param _renewalService - the lease renewal service.
     * @param _logger - the logger.
     * @param k8Factory - the Kubernetes client.
     * @param configManager - the configuration manager.
     */
    constructor(_renewalService?: LeaseRenewalService, _logger?: SoloLogger, k8Factory?: K8Factory, configManager?: ConfigManager);
    /**
     * Creates a new lease. This lease is not acquired until the `acquire` method is called.
     *
     * @returns a new lease instance.
     */
    create(): Promise<Lease>;
    /**
     * Retrieves the renewal service implementation.
     *
     * @returns the lease renewal service.
     */
    get renewalService(): LeaseRenewalService;
    /**
     * 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 LeaseAcquisitionError if the namespace does not exist and cannot be created.
     */
    private currentNamespace;
}
