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';
import { NotificationsService } from '../notifications/notifications.service';
import { createHolidayDto, holidayFilterDto, updateHolidayDto } from './holidays.dto';
export declare class HolidaysService {
    private readonly db;
    private readonly notificationService;
    private readonly permissionResolver;
    private readonly orgTimezone;
    constructor(db: DatabaseService, notificationService: NotificationsService, permissionResolver: PermissionResolverService, orgTimezone: OrgTimezoneService);
    private getPermissions;
    createHoliday(data: createHolidayDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: {
            id?: string;
            name?: string;
            holiday_type?: "public" | "company" | "optional" | "religious" | "regional" | "observance" | "other";
            start_date?: string;
            end_date?: string;
            occurrence_date?: string;
            is_recurring?: boolean;
            generated_from_recurring?: boolean;
            description?: string;
            departments?: {
                id: string;
                name: string;
                department_code: string;
            }[];
            created_at?: string;
            updated_at?: string;
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    getHolidays(query: holidayFilterDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any[];
        message: string;
        status: HttpStatus;
        details: {
            summary: {
                total_holidays: number;
                total_recurring: number;
                total_public: number;
                total_company: number;
            };
            pagination: {
                total_items: number;
                total_pages: number;
                current_page: number;
                items_per_page: number;
                has_next_page: boolean;
                has_previous_page: boolean;
                next_page: any;
                previous_page: any;
            };
        };
    } | {
        data: {
            id?: string;
            name?: string;
            holiday_type?: "public" | "company" | "optional" | "religious" | "regional" | "observance" | "other";
            start_date?: string;
            end_date?: string;
            occurrence_date?: string;
            is_recurring?: boolean;
            generated_from_recurring?: boolean;
            description?: string;
            departments?: {
                id: string;
                name: string;
                department_code: string;
            }[];
            created_at?: string;
            updated_at?: string;
        }[];
        message: string;
        status: HttpStatus;
        details: {
            summary: {
                total_holidays: number;
                recurring_holidays: number;
                total_national_holidays: number;
                total_company_holidays: number;
            };
            pagination: {
                total_items: number;
                total_pages: number;
                current_page: number;
                items_per_page: number;
                has_next_page: boolean;
                has_previous_page: boolean;
                next_page: number;
                previous_page: number;
            };
        };
    }>;
    getHolidayById(id: string, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: {
            id?: string;
            name?: string;
            holiday_type?: "public" | "company" | "optional" | "religious" | "regional" | "observance" | "other";
            start_date?: string;
            end_date?: string;
            occurrence_date?: string;
            is_recurring?: boolean;
            generated_from_recurring?: boolean;
            description?: string;
            departments?: {
                id: string;
                name: string;
                department_code: string;
            }[];
            created_at?: string;
            updated_at?: string;
        };
        message: string;
        status: HttpStatus;
        details: {
            upcoming_occurrences: string[];
        };
    }>;
    updateHoliday(id: string, data: updateHolidayDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: {
            id?: string;
            name?: string;
            holiday_type?: "public" | "company" | "optional" | "religious" | "regional" | "observance" | "other";
            start_date?: string;
            end_date?: string;
            occurrence_date?: string;
            is_recurring?: boolean;
            generated_from_recurring?: boolean;
            description?: string;
            departments?: {
                id: string;
                name: string;
                department_code: string;
            }[];
            created_at?: string;
            updated_at?: string;
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    deleteHoliday(id: string, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
}
