import type { ActivationState, AppInfo, PortForwardResult, iOSDeviceInfo } from "../types";
/**
 * AppleDeviceKit - iOS device operations wrapper
 *
 * Uses idevice command-line tools for iOS device operations.
 * Each instance is associated with a specific device by UDID.
 */
export declare class AppleDeviceKit {
    private readonly port;
    private deviceId;
    constructor(udid: string, port: number);
    /**
     * Get detailed device information
     */
    getDeviceInfo(): Promise<iOSDeviceInfo>;
    /**
     * Check if device is paired/trusted with this computer
     */
    isPaired(): Promise<boolean>;
    /**
     * Wait for device to be paired
     * Polls the pairing status until successful or timeout
     *
     * @param timeout Timeout in milliseconds (default: 120000)
     * @param pollInterval Poll interval in milliseconds (default: 1000)
     */
    waitForPairing(timeout?: number, pollInterval?: number): Promise<boolean>;
    /**
     * Attempt to pair/trust the device
     * User must accept the trust dialog on the device
     */
    pair(): Promise<boolean>;
    /**
     * Trust/pair the device - initiates pairing and waits for user to accept
     *
     * This is the recommended method for establishing trust with a device.
     * It will:
     * 1. Check if already paired
     * 2. If not, initiate pairing (shows "Trust This Computer?" on device)
     * 3. Wait for user to accept the trust dialog
     *
     * @param timeout Timeout in milliseconds to wait for user acceptance (default: 60000)
     * @param onWaitingForTrust Callback when waiting for user to accept trust dialog
     * @returns true if device is now trusted
     */
    trustDevice(timeout?: number, onWaitingForTrust?: () => void): Promise<boolean>;
    /**
     * Unpair/untrust the device
     */
    unpair(): Promise<boolean>;
    /**
     * Install an IPA file on the device (install agent)
     *
     * @param ipaPath Path to the IPA file
     */
    installApp(ipaPath: string): Promise<void>;
    /**
     * Uninstall an app by bundle ID (uninstall agent)
     *
     * @param bundleId Application bundle identifier
     */
    uninstallApp(bundleId: string): Promise<void>;
    /**
     * Check if an app is installed on the device
     *
     * @param bundleId Application bundle identifier
     */
    isAppInstalled(bundleId: string): Promise<boolean>;
    /**
     * List all installed user applications
     */
    listApps(): Promise<AppInfo[]>;
    /**
     * Launch an application on the device
     *
     * @param bundleId Application bundle identifier
     * @param args Application arguments
     */
    launchApp(bundleId: string, args?: string[]): Promise<void>;
    /**
     * Start port forwarding and wait for it to be ready.
     * we need port forwarding to be able to connect to the device from the computer
     * and communicate with it using the local port.
     *
     * @param localPort Local port to listen on
     * @param devicePort Device port to forward to
     * @param _timeout Timeout in milliseconds (reserved for future use)
     */
    startPortForwardAsync(localPort: number, devicePort: number, _timeout?: number): Promise<PortForwardResult>;
    /**
     * Get the activation state of the device
     */
    getActivationState(): Promise<ActivationState>;
    /**
     * Activate the device (register in apple servers), an activated device belongs to someone (a user/company).
     * A device that is on hello screen cannot pass the wifi step unless it is activated.
     * the activate save us the need of the device to be connected to the internet to do the activation
     * and register in apple servers.
     *
     * Note: This requires a valid activation record or Apple server access
     *
     * precondition: the device must be paired and trusted
     */
    activate(): Promise<boolean>;
    /**
     * Get the device UDID
     */
    getDeviceId(): string;
    /**
     * Get the logical port number
     */
    getPort(): number;
}
//# sourceMappingURL=appleDeviceKit.d.ts.map