import { AfterViewInit, OnChanges, OnInit, EventEmitter, SimpleChanges, ElementRef } from '@angular/core';
import { TaskGroup, Task } from './models/task';
import { ViewMode } from './models/view-mode';
import * as i0 from "@angular/core";
/**
 * @description Componente de diagrama de Gantt para visualização e manipulação de tarefas
 * em linha do tempo. Suporta diferentes modos de visualização (dia, semana, mês),
 * movimentação de tarefas via drag e popup de detalhes ao clicar.
 *
 * @example
 * ```html
 * <s-gantt
 *   [tasks]="gruposDeTarefas"
 *   [viewMode]="viewMode"
 *   (taskClicked)="onTaskClicada($event)" />
 * ```
 *
 * @category Data
 */
export declare class GanttComponent implements AfterViewInit, OnChanges, OnInit {
    /** @description Título da coluna lateral de identificação das tarefas. */
    columnTitle?: string;
    /** @description Permite renderizar múltiplas tarefas na mesma linha. @default false */
    multipleTaskPerLine: boolean;
    /** @description Exibe a tabela lateral com os nomes das tarefas. @default true */
    showSideTable: boolean;
    /** @description Modo de visualização do gantt (dia, semana, mês, etc.). @default ViewMode.Day */
    viewMode: ViewMode;
    /** @description Lista de grupos de tarefas a serem renderizados. Campo obrigatório. */
    tasks: TaskGroup[];
    /** @description Margem em dias antes do início da primeira tarefa. */
    marginBeforeStart?: number;
    /** @description Margem em dias após o fim da última tarefa. */
    marginAfterEnd?: number;
    /** @description Habilita o arrastar de tarefas para alterar datas. @default true */
    allowMovement: boolean;
    /** @description Exibe popup com detalhes ao clicar em uma tarefa. @default true */
    hasPopup: boolean;
    /** @description Largura do container em pixels. Se omitido, usa a largura natural. */
    containerWidth?: number;
    /** @description Faz o gantt ocupar 100% da largura disponível. @default false */
    fullWidth: boolean;
    /** @description Exibe apenas horas na linha do tempo (ignora dias). @default false */
    showOnlyHours: boolean;
    /** @description Exibe apenas dias na linha do tempo (ignora horas). @default false */
    showOnlyDays: boolean;
    /** @description Emitido quando o usuário clica em uma tarefa. */
    taskClicked: EventEmitter<Task>;
    /** @description Emitido quando o usuário arrasta e modifica as datas de uma tarefa. */
    taskDateChanged: EventEmitter<any>;
    /** @description Emitido quando o modo de visualização é alterado. */
    viewChanged: EventEmitter<ViewMode>;
    outer: ElementRef | null;
    side: ElementRef | null;
    ganttSvg: ElementRef | null;
    private _gantt?;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    private _filterTask;
    private _validateViewMode;
    private _validateTasks;
    static ɵfac: i0.ɵɵFactoryDeclaration<GanttComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<GanttComponent, "s-gantt", never, { "columnTitle": { "alias": "columnTitle"; "required": false; }; "multipleTaskPerLine": { "alias": "multipleTaskPerLine"; "required": false; }; "showSideTable": { "alias": "showSideTable"; "required": false; }; "viewMode": { "alias": "viewMode"; "required": false; }; "tasks": { "alias": "tasks"; "required": true; }; "marginBeforeStart": { "alias": "marginBeforeStart"; "required": false; }; "marginAfterEnd": { "alias": "marginAfterEnd"; "required": false; }; "allowMovement": { "alias": "allowMovement"; "required": false; }; "hasPopup": { "alias": "hasPopup"; "required": false; }; "containerWidth": { "alias": "containerWidth"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "showOnlyHours": { "alias": "showOnlyHours"; "required": false; }; "showOnlyDays": { "alias": "showOnlyDays"; "required": false; }; }, { "taskClicked": "taskClicked"; "taskDateChanged": "taskDateChanged"; "viewChanged": "viewChanged"; }, never, never, true, never>;
}
