// Generated by dts-bundle-generator v7.0.0

import dayjs from 'dayjs';

export interface TsGanttRowSymbols {
	expanded: string;
	collapsed: string;
	childless: string;
}
export declare type ChartBarType = "planned" | "actual";
export declare type ChartBarMode = ChartBarType | "both";
export declare type ChartScale = "day" | "week" | "month" | "year";
export declare type ColumnTextAlignment = "start" | "center" | "end";
export interface TsGanttTaskModel {
	id: string;
	parentId: string;
	name: string;
	progress: number;
	datePlannedStart: Date;
	datePlannedEnd: Date;
	dateActualStart: Date;
	dateActualEnd: Date;
	localizedNames: {
		[key: string]: string;
	};
}
export declare class TsGanttTask {
	readonly externalId: string;
	readonly parentExternalId: string;
	readonly uuid: string;
	readonly parentUuid: string;
	readonly nestingLvl: number;
	readonly hasChildren: boolean;
	readonly name: string;
	readonly localizedNames: {
		[key: string]: string;
	};
	datePlannedStart: dayjs.Dayjs;
	datePlannedEnd: dayjs.Dayjs;
	dateActualStart: dayjs.Dayjs;
	dateActualEnd: dayjs.Dayjs;
	progress: number;
	shown: boolean;
	expanded: boolean;
	constructor(source?: Object, id?: string, parentId?: string, name?: string, localizedNames?: {
		[key: string]: string;
	}, progress?: number, datePlannedStart?: string | number | Date | dayjs.Dayjs, datePlannedEnd?: string | number | Date | dayjs.Dayjs, dateActualStart?: string | number | Date | dayjs.Dayjs, dateActualEnd?: string | number | Date | dayjs.Dayjs, nestingLvl?: number, hasChildren?: boolean, parentUuid?: string, uuid?: string, shown?: boolean, expanded?: boolean);
	static convertModelsToTasks(taskModels: TsGanttTaskModel[], idMap?: Map<string, string>): TsGanttTask[];
	static detectTaskChanges(data: TsGanttTaskUpdateResult): TsGanttTaskChangeResult;
	static createTasksIdMap(tasks: TsGanttTask[]): Map<string, string>;
	static checkPaternity(tasks: TsGanttTask[], parent: TsGanttTask, child: TsGanttTask): boolean;
	static checkForCollapsedParent(tasks: readonly TsGanttTask[], task: TsGanttTask): boolean;
	static defaultComparer: (a: TsGanttTask, b: TsGanttTask) => number;
	static sortTasksRecursively(tasks: TsGanttTask[], parentUuid: string): TsGanttTask[];
	static getMinMaxDates(tasks: TsGanttTask[]): {
		minDate: dayjs.Dayjs;
		maxDate: dayjs.Dayjs;
	};
	equals(another: TsGanttTask): boolean;
	compareTo(another: TsGanttTask): number;
	getState(): TsGanttTaskState;
	toModel(): TsGanttTaskModel;
	toggleExpanded(): void;
	getMinMaxDates(chartBarMode: ChartBarMode): {
		minDate: dayjs.Dayjs;
		maxDate: dayjs.Dayjs;
	};
	getHorizontalOffsetPx(chartBarMode: ChartBarMode, chartMinDate: dayjs.Dayjs, dayWidthPx: number): number;
	updateParents(): void;
	applyChangesFrom(source: TsGanttTask): void;
	clone(): TsGanttTask;
}
export interface TsGanttTaskUpdateResult {
	oldTasks: TsGanttTask[];
	newTasks: TsGanttTask[];
}
export interface TsGanttTaskChangeResult {
	added: TsGanttTask[];
	deleted: TsGanttTask[];
	changed: TsGanttTask[];
	all: TsGanttTask[];
}
export declare type TsGanttTaskState = "not-started" | "in-progress" | "overdue" | "completed" | "completed-late";
export declare class TsGanttOptions {
	bindParentDatesToChild: boolean;
	enableChartEdit: boolean;
	useShadowDom: false;
	multilineSelection: boolean;
	useCtrlKeyForMultilineSelection: boolean;
	drawTodayLine: boolean;
	highlightRowsDependingOnTaskState: boolean;
	columnsMinWidthPx: number[];
	columnsContentAlign: (ColumnTextAlignment)[];
	separatorWidthPx: number;
	headerHeightPx: number;
	rowHeightPx: number;
	borderWidthPx: number;
	barStrokeWidthPx: number;
	barMarginPx: number;
	barCornerRadiusPx: number;
	rowSymbols: TsGanttRowSymbols;
	chartShowProgress: boolean;
	chartDisplayMode: ChartBarMode;
	chartScale: ChartScale;
	chartDateOffsetDays: {
		[key: string]: number;
	};
	chartDateOffsetDaysMin: {
		[key: string]: number;
	};
	chartDayWidthPx: {
		[key: string]: number;
	};
	locale: string;
	localeDecimalSeparator: {
		[key: string]: string;
	};
	localeDateFormat: {
		[key: string]: string;
	};
	localeFirstWeekDay: {
		[key: string]: number;
	};
	localeDateMonths: {
		[key: string]: string[];
	};
	localeDateDays: {
		[key: string]: string[];
	};
	localeDateDaysShort: {
		[key: string]: string[];
	};
	localeDateScale: {
		[key: string]: string[];
	};
	localeFooters: {
		[key: string]: string[];
	};
	localeHeaders: {
		[key: string]: string[];
	};
	localeDurationFormatters: {
		[key: string]: (duration: number) => string;
	};
	columnValueGetters: (ColumnValueGetter)[];
	get dayWidthPx(): number;
	taskComparer: (taskA: TsGanttTask, taskB: TsGanttTask) => number;
	constructor(item?: object);
}
export declare type ColumnValueGetter = (a: TsGanttTask) => string;
export declare class TsGantt {
	private readonly _data;
	private get _options();
	private _htmlContainer;
	private _shadowRoot;
	private _htmlWrapper;
	private _htmlTableWrapper;
	private _htmlChartWrapper;
	private _separatorDragActive;
	private _ignoreNextScrollEvent;
	private _baseComponents;
	private _table;
	private _chart;
	get tasks(): TsGanttTaskModel[];
	set tasks(models: TsGanttTaskModel[]);
	get selectedTasks(): TsGanttTaskModel[];
	set selectedTasks(models: TsGanttTaskModel[]);
	set locale(value: string);
	set chartScale(value: ChartScale);
	set chartDisplayMode(value: ChartBarMode);
	onRowClickCb: (model: TsGanttTaskModel, event: MouseEvent) => void;
	onRowDoubleClickCb: (model: TsGanttTaskModel, event: MouseEvent) => void;
	onRowContextMenuCb: (model: TsGanttTaskModel, event: MouseEvent) => void;
	onSelectionChangeCb: (models: TsGanttTaskModel[]) => void;
	constructor(containerSelector: string, options?: TsGanttOptions);
	destroy(): void;
	expandAll(state: boolean): void;
	private setCssVariables;
	private createLayout;
	onResize: (e: Event) => void;
	private onPointerDownOnPartsSeparator;
	private onPointerMoveWhileResizingParts;
	private onPointerUpWhileResizingParts;
	private onWrapperScroll;
	private onRowClick;
	private onRowContextMenu;
	private onRowExpanderClick;
	private onTaskChange;
	private addGlobalEventListeners;
	private removeGlobalEventListeners;
	private toggleTaskSelection;
	private refreshSelection;
	private updateSelection;
	private applySelectionResult;
	private update;
	private updateTasks;
	private updateLocale;
	private updateChartScale;
	private updateChartDisplayMode;
	private toggleTaskExpanded;
	private scrollChartToTasks;
}

export {};
