import { AuthManager } from '../auth/AuthManager';
import { Device, DeviceListResponse, DeviceQueryParams, DeviceSummaryResponse, DeviceCertificatesResponse, DeviceRestrictionsResponse, DeviceFileVaultResponse, DeviceFirmwareResponse, DeviceFirmwarePasswordResponse, DeviceLocationsResponse, DeviceProfilesResponse, DeviceAppsResponse, DeviceActionsResponse, DeviceCommandHistoryResponse, DevicePrivacyResponse, DeviceActionName, DeviceActionRequest, BulkActionRequest, BulkActionResponse } from './types';
export declare class DevicesAPI {
    private readonly baseUrl;
    private readonly authManager;
    private readonly accountsServer;
    constructor(baseUrl: string, authManager: AuthManager, accountsServer: string);
    private getHeaders;
    /**
     * Get a list of managed devices
     */
    listDevices(params?: DeviceQueryParams): Promise<DeviceListResponse>;
    /**
     * Get details of a specific device
     */
    getDevice(deviceId: string, summary?: boolean): Promise<Device>;
    /**
     * Update device details
     */
    updateDevice(deviceId: string, updateData: Partial<Device>): Promise<Device>;
    /**
     * Get device summary
     */
    getDeviceSummary(deviceId: string): Promise<DeviceSummaryResponse>;
    /**
     * Get device certificates
     */
    getDeviceCertificates(deviceId: string, expiry?: string): Promise<DeviceCertificatesResponse>;
    /**
     * Get device restrictions
     */
    getDeviceRestrictions(deviceId: string): Promise<DeviceRestrictionsResponse>;
    /**
     * Get FileVault details
     */
    getFileVaultDetails(deviceId: string): Promise<DeviceFileVaultResponse>;
    /**
     * Get firmware details
     */
    getFirmwareDetails(deviceId: string): Promise<DeviceFirmwareResponse>;
    /**
     * Get firmware password
     */
    getFirmwarePassword(deviceId: string): Promise<DeviceFirmwarePasswordResponse>;
    /**
     * Get device locations
     */
    getDeviceLocations(deviceId: string): Promise<DeviceLocationsResponse>;
    /**
     * Get device locations with address
     */
    getDeviceLocationsWithAddress(deviceId: string, exportBatchId?: string): Promise<DeviceLocationsResponse>;
    /**
     * Request device location with address
     */
    requestDeviceLocation(deviceId: string, data: {
        no_of_days?: number;
        from?: number;
        to?: number;
    }): Promise<{
        export_batch_id: string;
    }>;
    /**
     * Get device profiles
     */
    getDeviceProfiles(deviceId: string, summary?: boolean): Promise<DeviceProfilesResponse>;
    /**
     * Associate profiles to device
     */
    associateProfiles(deviceId: string, profileIds: number[]): Promise<void>;
    /**
     * Disassociate profiles from device
     */
    disassociateProfiles(deviceId: string, profileIds: number[]): Promise<void>;
    /**
     * Get device apps
     */
    getDeviceApps(deviceId: string, includeDetails?: boolean): Promise<DeviceAppsResponse>;
    /**
     * Associate apps to device
     */
    associateApps(deviceId: string, appDetails: Array<{
        app_id: string;
        release_label_id: string;
    }>, options?: {
        invite_user?: boolean;
        do_not_uninstall?: boolean;
        notify_user_via_email?: boolean;
        silent_install?: boolean;
    }): Promise<void>;
    /**
     * Disassociate apps from device
     */
    disassociateApps(deviceId: string, appIds: string[]): Promise<void>;
    /**
     * Get device actions
     */
    getDeviceActions(deviceId: string): Promise<DeviceActionsResponse>;
    /**
     * Perform action on device
     */
    performAction(deviceId: string, actionName: DeviceActionName, actionData?: DeviceActionRequest): Promise<void>;
    /**
     * Get device scan status
     */
    getScanStatus(deviceId: string): Promise<{
        status_description: string;
        status_code: number;
        kb_url: string;
    }>;
    /**
     * Get device privacy settings
     */
    getDevicePrivacy(deviceId: string): Promise<DevicePrivacyResponse>;
    /**
     * Execute bulk device command
     */
    executeBulkCommand(commandName: string, request: BulkActionRequest): Promise<BulkActionResponse>;
    /**
     * Get command history for device
     */
    getCommandHistory(deviceId: string, options?: {
        start_time?: number;
        end_time?: number;
        days?: number;
        limit?: number;
    }): Promise<DeviceCommandHistoryResponse>;
    /**
     * Get last initiated command status
     */
    getRecentCommandStatus(deviceId: string): Promise<{
        status_description: string;
        status_code: number;
        command_name: string;
        kb_url: string;
    }>;
    /**
     * Perform Knox action on device
     */
    performKnoxAction(deviceId: string, actionName: DeviceActionName): Promise<void>;
    /**
     * Remove pending action
     */
    removeAction(deviceId: string, actionName: string): Promise<void>;
}
