import { CdkDragDrop } from '@angular/cdk/drag-drop';
import { AfterContentInit, EventEmitter, OnDestroy, OnInit, QueryList, TemplateRef } from '@angular/core';
import { KanbanColumn, KanbanData, KanbanItem, KanbanItemMovedData } from './types/index';
import { TemplateDirective } from '@seniorsistemas/angular-components/template';
import * as i0 from "@angular/core";
/**
 * @description Componente de quadro Kanban com suporte a arrastar e soltar colunas e itens.
 * Permite seleção via checkboxes, templates customizáveis para cabeçalho, corpo e rodapé
 * dos cards, além de emitir eventos de movição e seleção.
 *
 * @example
 * ```html
 * <s-kanban
 *   [data]="dadosKanban"
 *   (itemsMoved)="onItemMovido($event)" />
 * ```
 *
 * @category Data
 */
export declare class KanbanComponent implements OnInit, AfterContentInit, OnDestroy {
    private readonly kanbanEventService;
    /** @description Dados do quadro Kanban com colunas e itens. Campo obrigatório. */
    data: KanbanData;
    /** @description Exibe checkboxes de seleção em cada item Kanban. @default true */
    showItemCheckboxes: boolean;
    /** @description Exibe checkboxes de seleção no cabeçalho de cada coluna. @default true */
    showColumnCheckboxes: boolean;
    /** @description Emitido quando o usuário move um item entre colunas ou posições. */
    itemsMoved: EventEmitter<KanbanItemMovedData>;
    /** @description Emitido quando os dados do quadro são atualizados após movição. */
    dataUpdated: EventEmitter<KanbanData>;
    /** @description Emitido quando a seleção de itens muda, com a lista de itens selecionados. */
    itemsSelected: EventEmitter<KanbanItem[]>;
    selectedColumn: KanbanColumn | null;
    selectedItems: Set<KanbanItem>;
    draggingItems: Set<KanbanItem>;
    columnHeaderTemplate: TemplateRef<any> | null;
    columnEmptyMessageTemplate: TemplateRef<any> | null;
    itemHeaderTemplate: TemplateRef<any> | null;
    itemBodyTemplate: TemplateRef<any> | null;
    itemFooterTemplate: TemplateRef<any> | null;
    private readonly _instanceId;
    private readonly _columnIdMap;
    private _unsubscribe$;
    templates: QueryList<TemplateDirective> | null;
    ngOnInit(): void;
    ngAfterContentInit(): void;
    ngOnDestroy(): void;
    drop(event: CdkDragDrop<KanbanItem[]>): void;
    selectItem(event: MouseEvent, item: KanbanItem, column: KanbanColumn): void;
    dragStarted(): void;
    dragReleased(): void;
    getLinkedColumns(currentColumn: KanbanColumn): string[];
    getColumnHeaderTemplate(): TemplateRef<any> | null;
    getColumnEmptyMessageTemplate(): TemplateRef<any> | null;
    getItemHeaderTemplate(): TemplateRef<any> | null;
    getItemBodyTemplate(): TemplateRef<any> | null;
    getItemFooterTemplate(): TemplateRef<any> | null;
    private _getCustomTemplate;
    private _subscribeEvents;
    private _normalizeData;
    private _validateInputs;
    private _getTemplates;
    static ɵfac: i0.ɵɵFactoryDeclaration<KanbanComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<KanbanComponent, "s-kanban", never, { "data": { "alias": "data"; "required": true; }; "showItemCheckboxes": { "alias": "showItemCheckboxes"; "required": false; }; "showColumnCheckboxes": { "alias": "showColumnCheckboxes"; "required": false; }; }, { "itemsMoved": "itemsMoved"; "dataUpdated": "dataUpdated"; "itemsSelected": "itemsSelected"; }, ["templates"], never, true, never>;
}
