import * as i0 from '@angular/core';
import { Renderer2, EventEmitter, ElementRef } from '@angular/core';
import * as i2 from '@angular/common';
import { DatePipe } from '@angular/common';
import { DrawingContextInterface } from '@obliczeniowo/elementary/drawing';

type DaypartsData = {
    date: Date;
    [key: string]: any;
};
type HourData = {
    data: DaypartsData[];
    value: number;
};
type DaypartsStatistic = {
    [day: number]: {
        [hours: number]: HourData;
    };
};

declare class DaypartsStatistics {
    protected dc: DrawingContextInterface;
    protected statistics: DaypartsStatistic;
    protected datePipe: DatePipe;
    protected events: {
        clicked: (value: HourData) => void;
        mouseover?: (value: HourData) => void;
    };
    protected max: number;
    protected fontSize: number;
    protected ray: number;
    protected textOffset: number;
    constructor(dc: DrawingContextInterface, statistics: DaypartsStatistic, datePipe: DatePipe, events: {
        clicked: (value: HourData) => void;
        mouseover?: (value: HourData) => void;
    });
    getWidth(): number;
    getHeight(): number;
    updateMax(max: number): void;
    setStatistics(statistics: DaypartsStatistic): void;
    draw(dc?: DrawingContextInterface): void;
    protected setMax(): void;
}

declare class DaypartsStatisticsComponent {
    protected datePipe: DatePipe;
    protected renderer: Renderer2;
    /**
     * Do not use this one together with statistics
     */
    data: i0.InputSignal<DaypartsData[]>;
    /**
     * Under DaypartsData you can put any kind of key: value fields and now here you can specify field
     * name to make it representable on diagram
     */
    valueKey: i0.InputSignal<string | undefined>;
    /**
     * Do not use this one together with data
     */
    set statistics(statistics: DaypartsStatistic);
    translations: i0.InputSignal<{
        [en: string]: string;
    }>;
    clicked: EventEmitter<any>;
    svg: ElementRef<SVGSVGElement>;
    protected dc: DrawingContextInterface;
    protected _statistics: DaypartsStatistic;
    protected max: number;
    protected _daypartsStatistics?: DaypartsStatistics;
    protected current?: HourData;
    constructor(datePipe: DatePipe, renderer: Renderer2);
    ngAfterViewInit(): void;
    protected draw(): void;
    protected transform(): void;
    protected setMax(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DaypartsStatisticsComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DaypartsStatisticsComponent, "obl-dayparts-statistics", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "valueKey": { "alias": "valueKey"; "required": false; "isSignal": true; }; "statistics": { "alias": "statistics"; "required": false; }; "translations": { "alias": "translations"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, false, never>;
}

declare class DaypartsStatisticsModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DaypartsStatisticsModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DaypartsStatisticsModule, [typeof DaypartsStatisticsComponent], [typeof i2.CommonModule], [typeof DaypartsStatisticsComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DaypartsStatisticsModule>;
}

export { DaypartsStatistics, DaypartsStatisticsComponent, DaypartsStatisticsModule };
export type { DaypartsData, DaypartsStatistic, HourData };
