/**-----------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { SlotDirective, ResourceGroup, SlotID } from '../view-items/types';
import { MonthViewItemComponent } from './month-view-item.component';
import { BaseSlotService } from '../view-items/base-slot.service';
/**
 * @hidden
 */
export declare class SlotRange {
    index: number;
    get slots(): any[];
    get items(): any[];
    private slotMap;
    private itemMap;
    get start(): Date;
    get end(): Date;
    get hasSlots(): boolean;
    get hasItems(): boolean;
    get firstSlot(): any;
    get lastSlot(): any;
    get rect(): any;
    constructor(index: number);
    registerItem(component: MonthViewItemComponent): void;
    unregisterItem(component: MonthViewItemComponent, index: number): void;
    registerSlot(slot: any): void;
    unregisterSlot(slot: any): void;
    layout(eventHeight: number | 'auto', eventsPerDay: number | 'auto', adaptiveSlotHeight: boolean): void;
    private renderAutoHeightEvents;
    /**
     * Extracted to a separate method to address SonarQube suggestion:
     * "Refactor this code to not nest functions more than 4 levels deep"
     */
    private calculateEventWidth;
}
/**
 * @hidden
 */
export declare class MonthResourceGroup implements ResourceGroup {
    readonly index: number;
    dayRanges: SlotRange[];
    constructor(index: number);
    get hasSlots(): boolean;
    registerSlot(slot: SlotDirective): void;
    unregisterSlot(slot: SlotDirective): void;
    registerItem(component: MonthViewItemComponent): void;
    unregisterItem(component: MonthViewItemComponent, id: SlotID): void;
    slotRange(slot: SlotDirective): SlotRange;
    forEachRange(callback: (slot: SlotRange) => void): void;
    cleanRanges(): void;
}
/**
 * @hidden
 */
export declare class MonthSlotService extends BaseSlotService {
    layout(eventHeight: number | 'auto', eventsPerDay: number | 'auto', adaptiveSlotHeight: boolean): void;
    slotByIndex(slotIndex: string): any;
    forEachSlot(callback: any): void;
    forEachItem(callback: (e: MonthViewItemComponent) => void): void;
    createGroup(index: number): MonthResourceGroup;
    invalidate(): void;
    slotByPosition(x: any, y: any): any;
    dragRanges(currentSlot: any, offset: any): any;
    groupSlotByPosition(currentSlot: any, x: any, y: any): any;
    resizeRanges(currentSlot: any, task: any, resizeStart: boolean, offset: any): any;
}
