export interface BorderRadiusDto {
    card: string;
    button: string;
    badge: string;
    input: string;
    modal: string;
    menuItem: string;
}
export interface UserPreferencesDto {
    theme: string;
    language: string;
    timeZone: string | null;
    emailNotifications: boolean;
    pushNotifications: boolean;
    accentColorKey: string;
    borderRadius: BorderRadiusDto;
    itemPaletteKey?: string;
}
export interface UpdateThemeRequest {
    mode: string;
    accentColorKey: string;
    borderRadius: BorderRadiusDto;
    itemPaletteKey?: string;
    /**
     * Target tenant ID for saving preferences.
     * - undefined/null = save to global preferences (applies to all tenants)
     * - string = save to specific tenant override
     */
    targetTenantId?: string | null;
}
export interface UpdateLanguageRequest {
    language: string;
}
export interface UpdateNotificationsRequest {
    emailNotifications: boolean;
    pushNotifications: boolean;
}
export interface DailySessionStatsDto {
    date: string;
    loginCount: number;
    avgDuration: number;
}
export interface SessionAnalyticsDto {
    dailyStats: DailySessionStatsDto[];
    totalSessions: number;
    avgSessionDuration: number;
}
export interface LoginErrorDto {
    loginAt: string;
    failureReason: string;
    ipAddress: string | null;
    country: string | null;
    city: string | null;
}
export interface CurrentSessionDto {
    loginAt: string;
    durationMinutes: number;
    ipAddress: string | null;
    userAgent: string | null;
    country: string | null;
    city: string | null;
}
export interface BrowserCountDto {
    browser: string;
    count: number;
}
export interface CountryCountDto {
    country: string;
    count: number;
}
export interface DeviceStatsDto {
    byBrowser: BrowserCountDto[];
    byCountry: CountryCountDto[];
    mostUsedDevice: string;
}
export interface DayOfWeekStatsDto {
    dayOfWeek: number;
    dayName: string;
    sessionCount: number;
    totalDuration: number;
}
export interface WeeklyStatsDto {
    dayStats: DayOfWeekStatsDto[];
    avgDurationPerDay: number;
}
export interface HourStatsDto {
    hour: number;
    sessionCount: number;
    totalDuration: number;
}
export interface HourlyStatsDto {
    hourStats: HourStatsDto[];
    firstActiveHour: number;
    lastActiveHour: number;
    peakHour: number;
    avgDurationPerHour: number;
}
export interface AppUsageItemDto {
    applicationId: string;
    applicationName: string;
    applicationIcon: string | null;
    accessCount: number;
    totalDurationSeconds: number;
    percentage: number;
}
export interface ApplicationUsageDto {
    applications: AppUsageItemDto[];
    totalAccess: number;
}
/**
 * Aggregated DTO containing all dashboard data in a single response.
 * Reduces 7 API calls to 1 for initial page load.
 */
export interface DashboardAllDto {
    sessionAnalytics: SessionAnalyticsDto;
    loginErrors: LoginErrorDto[];
    currentSession: CurrentSessionDto | null;
    deviceStats: DeviceStatsDto;
    weeklyStats: WeeklyStatsDto;
    hourlyStats: HourlyStatsDto;
    applicationUsage: ApplicationUsageDto;
}
export declare const userApi: {
    preferences: {
        get: () => Promise<UserPreferencesDto>;
        updateTheme: (data: UpdateThemeRequest) => Promise<UserPreferencesDto>;
        updateLanguage: (data: UpdateLanguageRequest) => Promise<UserPreferencesDto>;
        updateNotifications: (data: UpdateNotificationsRequest) => Promise<UserPreferencesDto>;
    };
    dashboard: {
        /**
         * Get all dashboard data in a single call (optimized for initial load).
         * Reduces 7 API calls to 1.
         */
        getAll: (period?: 7 | 30 | 90, errorLimit?: number) => Promise<DashboardAllDto>;
        getSessionAnalytics: (period?: 7 | 30 | 90) => Promise<SessionAnalyticsDto>;
        getLoginErrors: (limit?: number) => Promise<LoginErrorDto[]>;
        getCurrentSession: () => Promise<CurrentSessionDto>;
        getDeviceStats: () => Promise<DeviceStatsDto>;
        getWeeklyStats: (period?: 7 | 30 | 90) => Promise<WeeklyStatsDto>;
        getHourlyStats: (period?: 7 | 30 | 90) => Promise<HourlyStatsDto>;
        getApplicationUsage: (period?: 7 | 30 | 90) => Promise<ApplicationUsageDto>;
    };
};
//# sourceMappingURL=userApi.d.ts.map