import { AuthManager } from '../auth/AuthManager';
import { App, AppListResponse, AppCreateRequest, AppUpdateRequest, AppDeviceRequest, AppGroupRequest, AppApproveRequest, CreateLabelRequest, CreateLabelResponse, AppDetailedResponse } from './types';
export declare class AppsAPI {
    private readonly baseUrl;
    private readonly authManager;
    private readonly accountsServer;
    constructor(baseUrl: string, authManager: AuthManager, accountsServer: string);
    private getHeaders;
    /**
     * Get a list of apps available in the App Repository
     */
    listApps({ limit, offset, }: {
        limit?: number;
        offset?: number;
    }): Promise<AppListResponse>;
    /**
     * Add either a Store app or enterprise app to the MDM Server
     */
    createApp(app: AppCreateRequest): Promise<App>;
    /**
     * Get details of a particular app
     */
    getApp(appId: string): Promise<AppDetailedResponse>;
    /**
     * Create app channel for maintaining multiple versions of enterprise apps
     */
    createLabel(request: CreateLabelRequest): Promise<CreateLabelResponse>;
    /**
     * Associate an app to particular devices
     */
    associateDevices(appId: number, releaseLabelId: number, request: AppDeviceRequest): Promise<void>;
    /**
     * Associate an app to particular groups
     */
    associateGroups(appId: number, releaseLabelId: number, request: AppGroupRequest): Promise<void>;
    /**
     * Update an app in the App Repository
     */
    updateApp(appId: number, releaseLabelId: number, request: AppUpdateRequest): Promise<AppDetailedResponse>;
    /**
     * Approve app version
     */
    approveAppVersion(appId: number, releaseLabelId: number, request: AppApproveRequest): Promise<void>;
    /**
     * Disassociate an app from a device
     */
    disassociateDevice(appId: number, deviceId: number): Promise<void>;
    /**
     * Disassociate an app from a group
     */
    disassociateGroup(appId: number, groupId: number): Promise<void>;
    /**
     * Delete an existing app from the MDM App Repository
     */
    deleteApp(appId: number): Promise<void>;
    /**
     * Delete specific app version
     */
    deleteAppVersion(appId: number, releaseLabelId: number): Promise<void>;
}
