import type { PaginatedResult } from '../../types/pagination';
export interface PopularApplicationDto {
    applicationId: string;
    applicationName: string;
    accessCount: number;
    uniqueUsers: number;
}
export interface ActivityItemDto {
    userId: string;
    userName: string;
    applicationName: string;
    moduleName?: string;
    accessedAt: string;
    durationSeconds?: number;
}
export interface ApplicationDashboardStatsDto {
    totalApplications: number;
    activeApplications: number;
    totalUsers: number;
    activeUsersToday: number;
    avgSessionDuration: number;
    growthRate: number;
    mostPopularApps: PopularApplicationDto[];
    recentActivity: ActivityItemDto[];
    dailyTrend: DailyAccessTrendDto[];
}
export interface DailyAccessTrendDto {
    date: string;
    accessCount: number;
    uniqueUsers: number;
}
export interface TopUserDto {
    userId: string;
    userName: string;
    accessCount: number;
    avgDurationSeconds?: number;
}
export interface ApplicationAnalyticsDto {
    applicationName: string;
    totalAccesses: number;
    uniqueUsers: number;
    avgDurationSeconds: number;
    dailyAccessTrend: DailyAccessTrendDto[];
    topUsers: TopUserDto[];
}
export interface ApplicationActivityDto {
    userId: string;
    userName: string;
    moduleName?: string;
    accessedAt: string;
    durationSeconds?: number;
}
export interface DeviceAnalyticsDto {
    byDeviceType: DeviceStatsItemDto[];
    byBrowser: BrowserStatsItemDto[];
}
export interface DeviceStatsItemDto {
    deviceType: string;
    count: number;
    percentage: number;
}
export interface BrowserStatsItemDto {
    browser: string;
    count: number;
}
export interface EngagementMetricsDto {
    avgSessionDuration: number;
    sessionDistribution: SessionBucketDto[];
    peakUsageHours: PeakUsageHourDto[];
    dailyActiveUsers: number;
    retentionRate: number;
}
export interface SessionBucketDto {
    bucket: string;
    label: string;
    count: number;
}
export interface PeakUsageHourDto {
    hour: number;
    accessCount: number;
}
export interface ModuleAnalyticsDto {
    moduleId: string;
    moduleName: string;
    applicationName: string;
    accessCount: number;
    uniqueUsers: number;
    avgDuration: number;
    totalDurationMinutes: number;
    sessionCount: number;
}
export interface HierarchyDrillDownDto {
    level: number;
    period: number;
    totalAccess: number;
    totalDurationMinutes: number;
    items: HierarchyItemDto[];
    breadcrumb: BreadcrumbItemDto[];
}
export interface HierarchyItemDto {
    id: string;
    code: string;
    name: string;
    accessCount: number;
    uniqueUsers: number;
    totalDurationMinutes: number;
    hasChildren: boolean;
    level: number;
    parentId?: string;
}
export interface BreadcrumbItemDto {
    id: string;
    name: string;
    level: number;
}
export interface ApplicationTrendsDto {
    period: number;
    dailyData: ApplicationTrendDayDto[];
    applications: ApplicationSeriesDto[];
}
export interface ApplicationTrendDayDto {
    date: string;
    applicationCounts: Record<string, number>;
    applicationDurations: Record<string, number>;
    applicationSessionCounts: Record<string, number>;
}
export interface ApplicationSeriesDto {
    name: string;
    totalAccess: number;
    totalDurationMinutes: number;
    totalSessionCount: number;
    color: string;
}
export declare const applicationAnalyticsApi: {
    getDashboardStats: () => Promise<ApplicationDashboardStatsDto>;
    getApplicationAnalytics: (applicationId: string) => Promise<ApplicationAnalyticsDto>;
    getApplicationActivity: (applicationId: string, page?: number, pageSize?: number) => Promise<PaginatedResult<ApplicationActivityDto>>;
    getDeviceStats: (period?: number, config?: {
        signal?: AbortSignal;
    }) => Promise<DeviceAnalyticsDto>;
    getEngagementMetrics: (period?: number, config?: {
        signal?: AbortSignal;
    }) => Promise<EngagementMetricsDto>;
    getTopModules: (limit?: number, period?: number) => Promise<ModuleAnalyticsDto[]>;
    getHierarchyData: (level?: number, applicationId?: string, period?: number) => Promise<HierarchyDrillDownDto>;
    getTrendsByApplication: (period?: number) => Promise<ApplicationTrendsDto>;
};
//# sourceMappingURL=applicationAnalyticsApi.d.ts.map