import type { AppiumLogger } from '@appium/types';
import type { LockdownInfo } from '../commands/types';
import type { XCUITestDriverOpts } from '../driver';
/**
 * Shape returned by {@linkcode utilities.getDeviceTime} in appium-ios-device.
 */
export interface DeviceTimeLockdownFields {
    /** UTC timestamp in seconds since 1970-01-01T00:00:00Z */
    timestamp: number;
    /** UTC offset in minutes */
    utcOffset: number;
}
/**
 * Unified lockdown access for real devices.
 *
 * On iOS/tvOS 18+ attempts a tunnel registry RemoteXPC connection and lockdown over RSD
 * (`createLockdownServiceByTunnel`). When that path is unavailable, uses
 * {@linkcode utilities} from `appium-ios-device` (USB/local usbmux).
 */
export declare class LockdownClient {
    private readonly udid;
    private readonly log;
    private readonly remotexpc;
    private readonly strategy;
    private readonly remoteXpcConnection;
    private constructor();
    /**
     * @param udid - Device UDID
     * @param opts - Driver options (used for iOS version gating)
     * @param log - Logger
     */
    static createForDevice(udid: string, opts: XCUITestDriverOpts, log?: AppiumLogger): Promise<LockdownClient>;
    private static coerceFiniteNumber;
    close(): Promise<void>;
    /**
     * Full lockdown `GetValue` payload (`GetValue` with no key/domain).
     */
    getDeviceInfo(): Promise<LockdownInfo>;
    /**
     * Device ProductVersion from lockdown.
     *
     * Uses the same lockdown selection strategy as {@linkcode getDeviceInfo}.
     * If a RemoteXPC lockdown payload does not include ProductVersion, throws.
     */
    getOSVersion(): Promise<string>;
    /**
     * Fields needed to format device local time (same contract as {@linkcode utilities.getDeviceTime}).
     */
    getDeviceTimeFields(): Promise<DeviceTimeLockdownFields>;
    /**
     * Legacy ios-device can provide inconsistent offset payloads. Normalize to a final offset in
     * minutes for consumers.
     */
    private normalizeUtcOffsetMinutes;
    private runWithRemotexpcUsbmuxLockdown;
    private runWithRemotexpcLockdown;
    private runWithRemotexpcLockdownRequiringValue;
    private getRemotexpcLockdownLabel;
    /**
     * Runs an operation with lockdown over the RSD tunnel.
     */
    private runWithTunnelLockdown;
}
//# sourceMappingURL=lockdown-client.d.ts.map