import { HttpStatus } from '@nestjs/common';
import { PermissionUserContext } from '../../common/access-control/permission-context.types';
import { PermissionResolverService } from '../../common/access-control/permission-resolver.service';
import { OrgTimezoneService } from '../../common/timezone/org-timezone.service';
import { DatabaseService } from '../../config';
export declare class DashboardService {
    private readonly db;
    private readonly permissionResolver;
    private readonly orgTimezone;
    constructor(db: DatabaseService, permissionResolver: PermissionResolverService, orgTimezone: OrgTimezoneService);
    private getPermissions;
    getThisWeeks(owner_id: string, ctx: PermissionUserContext, dataScope?: 'own' | 'all'): Promise<{
        data: {
            label: string;
            date: string;
            day: string;
            is_holiday: boolean;
            is_leave: boolean;
            is_weekend: boolean;
            is_completed: boolean;
            is_today: boolean;
        }[];
        details: {
            present: number;
            late: number;
            half_day: number;
            absent: number;
            leave: number;
        };
        status: HttpStatus;
        message: string;
    }>;
    getSummary(owner_id: string, ctx: PermissionUserContext, dataScope?: 'own' | 'all'): Promise<{
        data: {
            total_members: number;
            today_status: string;
            present_days: number;
            leave_days: number;
            absent_days: number;
            this_week_leave_days: number;
            this_week_holidays: number;
            today_pending_leaves: number;
            today_absent_count: number;
            today_leave_count: number;
            today_present_count: number;
        };
        details: any;
        status: HttpStatus;
        message: string;
    }>;
    getThisMonthReport(owner_id: string, ctx: PermissionUserContext, dataScope?: 'own' | 'all'): Promise<{
        data: {
            attendance_percentage: number;
            working_days: number;
            present_count: number;
            approved_leaves: number;
            holidays: number;
            total_members: any;
            absent_count: number;
        };
        details: any;
        status: HttpStatus;
        message: string;
    }>;
    getPendingLeaves(owner_id: string, ctx: PermissionUserContext, query: {
        data_scope?: 'own' | 'all';
        page?: number;
        limit?: number;
    }): Promise<{
        data: {
            id?: string;
            member_id?: string;
            member?: {
                id: string;
                employee_id: string;
                first_name: string;
                last_name?: string;
                nickname?: string;
                image?: {
                    file_name: string;
                    original_name: string;
                    file_size: number;
                    mime_type: string;
                };
                role?: "owner" | "admin" | "member";
                department?: {
                    id: string;
                    name: string;
                };
            };
            start_date?: string;
            end_date?: string;
            reason?: string;
            document?: {
                file_name: string;
                original_name: string;
                file_size: number;
                mime_type: string;
            };
            status?: "pending" | "approved" | "rejected" | "cancelled";
            leave_type?: string;
            approver_type?: "owner" | "member";
            approver_owner_id?: string;
            approver_member_id?: string;
            approver_owner?: {
                id: string;
                name: string;
                email: string;
                image?: {
                    file_name: string;
                    original_name: string;
                    file_size: number;
                    mime_type: string;
                };
            };
            approver_member?: {
                id: string;
                employee_id: string;
                first_name: string;
                last_name?: string;
                nickname?: string;
                image?: {
                    file_name: string;
                    original_name: string;
                    file_size: number;
                    mime_type: string;
                };
                role?: "owner" | "admin" | "member";
                department?: {
                    id: string;
                    name: string;
                };
            };
            approved_at?: string;
            created_at?: string;
            updated_at?: string;
        }[];
        message: string;
        status: HttpStatus;
        details: any;
    }>;
}
