export declare enum Scope {
    INVENTORY_CREATE = "MDMOnDemand.MDMInventory.CREATE",
    INVENTORY_UPDATE = "MDMOnDemand.MDMInventory.UPDATE",
    INVENTORY_READ = "MDMOnDemand.MDMInventory.READ",
    INVENTORY_DELETE = "MDMOnDemand.MDMInventory.DELETE",
    INVENTORY_ALL = "MDMOnDemand.MDMInventory.ALL",
    DEVICE_MGMT_CREATE = "MDMOnDemand.MDMDeviceMgmt.CREATE",
    DEVICE_MGMT_UPDATE = "MDMOnDemand.MDMDeviceMgmt.UPDATE",
    DEVICE_MGMT_READ = "MDMOnDemand.MDMDeviceMgmt.READ",
    DEVICE_MGMT_DELETE = "MDMOnDemand.MDMDeviceMgmt.DELETE",
    DEVICE_MGMT_ALL = "MDMOnDemand.MDMDeviceMgmt.ALL",
    USER_CREATE = "MDMOnDemand.MDMUser.CREATE",
    USER_UPDATE = "MDMOnDemand.MDMUser.UPDATE",
    USER_READ = "MDMOnDemand.MDMUser.READ",
    USER_DELETE = "MDMOnDemand.MDMUser.DELETE",
    USER_ALL = "MDMOnDemand.MDMUser.ALL",
    ADMIN_ALL = "MDMOnDemand.MDMAdmin.ALL",
    ADMIN_CREATE = "MDMOnDemand.MDMAdmin.CREATE",
    ADMIN_UPDATE = "MDMOnDemand.MDMAdmin.UPDATE",
    ADMIN_READ = "MDMOnDemand.MDMAdmin.READ",
    ADMIN_DELETE = "MDMOnDemand.MDMAdmin.DELETE"
}
export interface AuthConfig {
    clientId: string;
    clientSecret: string;
    baseUrl: string;
    redirectUri: string;
    scope: Scope[];
    tokenStorage?: TokenStorage;
}
export interface AuthCodeRequest {
    clientId: string;
    redirectUri: string;
    scope: string[];
    accessType?: 'online' | 'offline';
    prompt?: 'consent';
}
export interface AuthCodeResponse {
    code: string;
    location: string;
    accountsServer: string;
}
export interface TokenResponse {
    access_token: string;
    refresh_token?: string;
    api_domain: string;
    token_type: string;
    expires_in: number;
}
export interface AuthState {
    accessToken: string;
    refreshToken?: string;
    expiresAt: number;
    apiDomain: string;
}
export interface TokenStorage {
    /**
     * Save token state to storage
     */
    saveToken(accountsServer: string, state: AuthState): Promise<void>;
    /**
     * Get token state from storage
     */
    getToken(accountsServer: string): Promise<AuthState | undefined>;
    /**
     * Clear token state from storage
     */
    clearToken(accountsServer: string): Promise<void>;
}
export declare class InMemoryTokenStorage implements TokenStorage {
    private tokens;
    saveToken(accountsServer: string, state: AuthState): Promise<void>;
    getToken(accountsServer: string): Promise<AuthState | undefined>;
    clearToken(accountsServer: string): Promise<void>;
}
