import * as _shival99_z_ui_components_z_kanban from '@shival99/z-ui/components/z-kanban';
import * as _angular_core from '@angular/core';
import { OnDestroy, ElementRef } from '@angular/core';
import { CdkDragMove, CdkDragEnd, CdkDragDrop } from '@angular/cdk/drag-drop';
import { ZSelectOption } from '@shival99/z-ui/components/z-select';
import { ZUploadFile } from '@shival99/z-ui/components/z-upload';
import { ClassValue } from 'clsx';
import * as class_variance_authority_types from 'class-variance-authority/types';

type ZKanbanPriority = 'risk' | 'high' | 'medium' | 'low';
type ZKanbanCardDensity = 'compact' | 'comfortable';
interface ZKanbanPriorityOption {
    value: ZKanbanPriority;
    labelKey: string;
}
interface ZKanbanChecklistItem {
    id: string;
    label: string;
    done: boolean;
}
interface ZKanbanActivityItem {
    id: string;
    actor: string;
    action: string;
    createdAt: string;
}
interface ZKanbanTask {
    id: string;
    code?: string;
    title: string;
    description?: string;
    status: string;
    priority: ZKanbanPriority;
    assignees: string[];
    startDate?: string;
    endDate?: string;
    dueDate?: string;
    commentsCount?: number;
    attachmentsCount?: number;
    attachments?: ZUploadFile[];
    checklist?: ZKanbanChecklistItem[];
    activity?: ZKanbanActivityItem[];
    completed?: boolean;
}
interface ZKanbanColumn {
    id: string;
    title: string;
    tasks: ZKanbanTask[];
}
interface ZKanbanDragData {
    taskId: string;
    columnId: string;
}
interface ZKanbanTaskDropEvent {
    taskId: string;
    fromColumnId: string;
    toColumnId: string;
    previousIndex: number;
    currentIndex: number;
}
interface ZKanbanTaskSaveEvent {
    task: ZKanbanTask;
    columnId: string;
    previousTask: ZKanbanTask;
}
interface ZKanbanTaskCreateEvent {
    task: ZKanbanTask;
    columnId: string;
}
declare const Z_KANBAN_PRIORITY_OPTIONS: readonly ZKanbanPriorityOption[];

declare class ZKanbanComponent implements OnDestroy {
    private readonly _zTranslate;
    private readonly _priorityLabelByValue;
    private readonly _priorityIconByValue;
    private readonly _priorityIconClassByValue;
    readonly zTaskDrop: _angular_core.OutputEmitterRef<ZKanbanTaskDropEvent>;
    readonly zTaskSave: _angular_core.OutputEmitterRef<ZKanbanTaskSaveEvent>;
    readonly zTaskClick: _angular_core.OutputEmitterRef<ZKanbanTask>;
    readonly zTaskCreate: _angular_core.OutputEmitterRef<ZKanbanTaskCreateEvent>;
    readonly class: _angular_core.InputSignal<ClassValue>;
    readonly zColumns: _angular_core.ModelSignal<ZKanbanColumn[]>;
    readonly zTitle: _angular_core.InputSignal<string>;
    readonly zSubtitle: _angular_core.InputSignal<string>;
    readonly zSearch: _angular_core.ModelSignal<string>;
    readonly zShowToolbar: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zAllowCreateTask: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zDisabled: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zDensity: _angular_core.InputSignal<ZKanbanCardDensity>;
    protected readonly boardViewportRef: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
    protected readonly editorVisible: _angular_core.WritableSignal<boolean>;
    protected readonly editingColumnId: _angular_core.WritableSignal<string | null>;
    protected readonly editingTaskId: _angular_core.WritableSignal<string | null>;
    protected readonly draftTitle: _angular_core.WritableSignal<string>;
    protected readonly draftDescription: _angular_core.WritableSignal<string>;
    protected readonly draftStatus: _angular_core.WritableSignal<string>;
    protected readonly draftPriority: _angular_core.WritableSignal<ZKanbanPriority>;
    protected readonly draftAssignees: _angular_core.WritableSignal<string[]>;
    protected readonly draftStartDate: _angular_core.WritableSignal<Date | null>;
    protected readonly draftEndDate: _angular_core.WritableSignal<Date | null>;
    protected readonly draftChecklist: _angular_core.WritableSignal<ZKanbanChecklistItem[]>;
    protected readonly draftChecklistItemLabel: _angular_core.WritableSignal<string>;
    protected readonly draftAttachments: _angular_core.WritableSignal<ZUploadFile[]>;
    protected readonly draftComment: _angular_core.WritableSignal<string>;
    protected readonly isDraggingTask: _angular_core.WritableSignal<boolean>;
    private _dragAutoScrollRafId;
    private _dragAutoScrollVelocity;
    private _lastDragFinishedAt;
    protected readonly hostClasses: _angular_core.Signal<string>;
    protected readonly connectedDropListIds: _angular_core.Signal<string[]>;
    protected readonly isSearchActive: _angular_core.Signal<boolean>;
    protected readonly filteredColumns: _angular_core.Signal<ZKanbanColumn[]>;
    protected readonly activeTask: _angular_core.Signal<ZKanbanTask | null>;
    protected readonly editorMeta: _angular_core.Signal<string>;
    protected readonly checklistProgress: _angular_core.Signal<number>;
    protected readonly checklistDoneCount: _angular_core.Signal<number>;
    protected readonly isEditorSaveDisabled: _angular_core.Signal<boolean>;
    protected readonly isCommentSubmitDisabled: _angular_core.Signal<boolean>;
    protected readonly checklistDoneRowClass: string;
    protected readonly checklistPendingRowClass: string;
    protected readonly statusOptions: _angular_core.Signal<ZSelectOption<string>[]>;
    protected readonly priorityOptions: readonly _shival99_z_ui_components_z_kanban.ZKanbanPriorityOption[];
    protected readonly prioritySelectOptions: _angular_core.Signal<ZSelectOption<ZKanbanPriority>[]>;
    protected readonly assigneeOptions: _angular_core.Signal<ZSelectOption<string>[]>;
    protected readonly columnClass: _angular_core.Signal<string>;
    protected readonly taskCardClassByPriority: _angular_core.Signal<Record<ZKanbanPriority, string>>;
    protected readonly priorityBadgeClassByPriority: _angular_core.Signal<Record<ZKanbanPriority, string>>;
    protected readonly statusIconClassByValue: _angular_core.Signal<Record<string, string>>;
    protected readonly priorityIconClassByValue: Record<string, string>;
    protected readonly boardColumnsView: _angular_core.Signal<{
        id: string;
        title: string;
        taskCount: number;
        rawTasks: ZKanbanTask[];
        tasks: {
            id: string;
            columnId: string;
            code: string | undefined;
            title: string;
            descriptionPreview: string;
            priority: ZKanbanPriority;
            priorityLabelKey: string;
            priorityBadgeClass: string;
            taskCardClass: string;
            dueDateLabel: string;
            commentsCount: number;
            attachmentCount: number;
            checklistCount: number;
            checklistDoneCount: number;
            completed: boolean;
            visibleAssignees: {
                name: string;
                initials: string;
                className: string;
                zIndex: number;
            }[];
            hiddenAssigneesCount: number;
            hiddenAssigneesLabel: string;
        }[];
    }[]>;
    protected readonly activeTaskActivityView: _angular_core.Signal<{
        id: string;
        actor: string;
        action: string;
        createdAtLabel: string;
    }[]>;
    createTaskInFirstColumn(): void;
    onBoardSearchChange(value: string | number | null): void;
    onTaskHandleClick(event: MouseEvent): void;
    onTaskCardClick(columnId: string, taskId: string): void;
    onTaskDragStarted(): void;
    onTaskDragMoved(event: CdkDragMove<ZKanbanDragData>): void;
    onTaskDragEnded(event: CdkDragEnd<ZKanbanDragData>): void;
    onTaskDrop(event: CdkDragDrop<ZKanbanTask[]>, toColumnId: string): void;
    createTask(columnId: string): void;
    openTaskEditor(columnId: string, taskId: string): void;
    closeEditor(): void;
    saveTaskChanges(): void;
    addChecklistItem(): void;
    toggleChecklistItem(itemId: string, checked: boolean): void;
    removeChecklistItem(itemId: string): void;
    onEditorStatusChange(value: string | null): void;
    onEditorPriorityChange(value: ZKanbanPriority | null): void;
    onEditorAssigneesChange(value: string[] | null): void;
    onEditorStartDateChange(value: Date | null): void;
    onEditorEndDateChange(value: Date | null): void;
    onDraftAttachmentsChange(files: ZUploadFile[] | null): void;
    submitTaskComment(): void;
    onEditorVisibleChange(visible: boolean): void;
    onEditorAfterClose(): void;
    ngOnDestroy(): void;
    private _getStatusIcon;
    private _getStatusIconClass;
    private _getAssigneeInitials;
    private _getAssigneeAvatarClasses;
    private _formatDueDate;
    private _formatDateTime;
    private _resetEditorState;
    private _taskMatchesQuery;
    private _findTask;
    private _findTaskByIndex;
    private _reorderTasksWithinColumn;
    private _moveTaskAcrossColumns;
    private _replaceTaskAcrossColumns;
    private _hasColumnId;
    private _sanitizeAssignees;
    private _appendCommentActivity;
    private _normalizeEditorContent;
    private _stripHtml;
    private _toDate;
    private _toDateOnlyString;
    private _normalizeDateRange;
    private _updateHorizontalAutoScroll;
    private _startHorizontalAutoScroll;
    private _stopHorizontalAutoScroll;
    private _createId;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZKanbanComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZKanbanComponent, "z-kanban", ["zKanban"], { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zColumns": { "alias": "zColumns"; "required": false; "isSignal": true; }; "zTitle": { "alias": "zTitle"; "required": false; "isSignal": true; }; "zSubtitle": { "alias": "zSubtitle"; "required": false; "isSignal": true; }; "zSearch": { "alias": "zSearch"; "required": false; "isSignal": true; }; "zShowToolbar": { "alias": "zShowToolbar"; "required": false; "isSignal": true; }; "zAllowCreateTask": { "alias": "zAllowCreateTask"; "required": false; "isSignal": true; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; "zDensity": { "alias": "zDensity"; "required": false; "isSignal": true; }; }, { "zTaskDrop": "zTaskDrop"; "zTaskSave": "zTaskSave"; "zTaskClick": "zTaskClick"; "zTaskCreate": "zTaskCreate"; "zColumns": "zColumnsChange"; "zSearch": "zSearchChange"; }, never, never, true, never>;
}

declare const zKanbanColumnVariants: (props?: ({
    zDensity?: "compact" | "comfortable" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
declare const zKanbanTaskCardVariants: (props?: ({
    zDensity?: "compact" | "comfortable" | null | undefined;
    zPriority?: "risk" | "high" | "medium" | "low" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
declare const zKanbanPriorityBadgeVariants: (props?: ({
    zPriority?: "risk" | "high" | "medium" | "low" | null | undefined;
    zActive?: boolean | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
declare const zKanbanChecklistRowVariants: (props?: ({
    zDone?: boolean | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;

export { ZKanbanComponent, Z_KANBAN_PRIORITY_OPTIONS, zKanbanChecklistRowVariants, zKanbanColumnVariants, zKanbanPriorityBadgeVariants, zKanbanTaskCardVariants };
export type { ZKanbanActivityItem, ZKanbanCardDensity, ZKanbanChecklistItem, ZKanbanColumn, ZKanbanDragData, ZKanbanPriority, ZKanbanPriorityOption, ZKanbanTask, ZKanbanTaskCreateEvent, ZKanbanTaskDropEvent, ZKanbanTaskSaveEvent };
