import { AuthConfig, AuthState } from './auth/types';
import { DevicesAPI } from './devices/DevicesAPI';
import { GroupsAPI } from './groups/GroupsAPI';
import { FilesAPI } from './files/FilesAPI';
import { ProfilesAPI } from './profiles/ProfilesAPI';
import { AppsAPI } from './apps/AppsAPI';
import { BlocklistAPI } from './blocklist/BlocklistAPI';
import { DocsAPI } from './docs/DocsAPI';
import { AnnouncementsAPI } from './announcements/AnnouncementsAPI';
import { EnrollmentSettingsAPI } from './enrollment/EnrollmentSettingsAPI';
import { UsersAPI } from './users/UsersAPI';
import { ComplianceAPI } from './compliance/ComplianceAPI';
import { ScheduledActionsAPI } from './scheduled/ScheduledActionsAPI';
import { VppAPI } from './vpp/VppAPI';
export * from './auth/types';
export * from './devices/types';
export * from './groups/types';
export * from './files/types';
export * from './profiles/types';
export * from './apps/types';
export * from './blocklist/types';
export * from './docs/types';
export * from './announcements/types';
export * from './enrollment/types';
export * from './users/types';
export * from './compliance/types';
export * from './scheduled/types';
export * from './vpp/types';
export declare class ManageEngineMDM {
    private readonly authManager;
    private accountsServer?;
    devices?: DevicesAPI;
    groups?: GroupsAPI;
    files?: FilesAPI;
    profiles?: ProfilesAPI;
    apps?: AppsAPI;
    blocklist?: BlocklistAPI;
    docs?: DocsAPI;
    announcements?: AnnouncementsAPI;
    enrollment?: EnrollmentSettingsAPI;
    users?: UsersAPI;
    compliance?: ComplianceAPI;
    scheduledActions?: ScheduledActionsAPI;
    vpp?: VppAPI;
    constructor(config: AuthConfig);
    /**
     * Get the authorization URL that the user needs to visit to grant access
     */
    getAuthorizationUrl(accessType?: 'online' | 'offline', prompt?: 'consent'): string;
    /**
     * Initialize the client with an authorization code
     * This must be called before using any API endpoints if you don't have a refresh token
     */
    initialize(code: string, accountsServer: string): Promise<void>;
    /**
     * Initialize the client with a refresh token
     * Use this if you already have a refresh token from a previous authentication
     */
    initializeWithRefreshToken(refreshToken: string, accountsServer: string): Promise<void>;
    /**
     * Set up API instances after authentication
     */
    private setupAPIs;
    /**
     * Check if the client is authenticated
     */
    isAuthenticated(): Promise<boolean>;
    /**
     * Get the current authentication state
     */
    getAuthState(): Promise<AuthState | undefined>;
    /**
     * Clear the current authentication state
     */
    clearAuthState(): Promise<void>;
}
