import type { TicketStatus } from '../../ui/ticket-status-tag';
export type BoardPriority = 'low' | 'medium' | 'high' | 'urgent';
export interface BoardTicketAssignee {
    id: string;
    initials?: string;
    avatarUrl?: string;
    name?: string;
}
export interface BoardTicket {
    id: string;
    title: string;
    ticketNumber: string;
    status: string;
    deviceHostnames?: string[];
    organizationName?: string;
    priority?: BoardPriority;
    assignees?: BoardTicketAssignee[];
    tags?: string[];
    createdAt?: string;
}
export interface BoardColumnDef {
    id: string;
    /**
     * Canonical status key for header styling (e.g. 'ACTIVE', 'RESOLVED'), when the
     * column `id` is not itself a known status (e.g. a custom-status UUID). The
     * header resolves its TicketStatusTag variant/icon from this, falling back to
     * `id`. Leave undefined for custom statuses so they render from `color`.
     */
    statusKey?: string;
    label: string;
    color: string;
    tickets: BoardTicket[];
    total?: number;
    hasMore?: boolean;
    isLoading?: boolean;
    isLoadingMore?: boolean;
    system?: boolean;
    dropDisabled?: boolean;
    dragDisabled?: boolean;
    allowedFromColumns?: string[];
    archivable?: boolean;
}
export interface BoardChange {
    ticketId: string;
    fromColumnId: string;
    toColumnId: string;
    afterTicketId: string | null;
    beforeTicketId: string | null;
}
export declare function columnFromTicketStatus(status: TicketStatus, tickets: BoardTicket[], overrides?: Partial<Omit<BoardColumnDef, 'id' | 'tickets'>>): BoardColumnDef;
export declare function groupTicketsByStatus(tickets: BoardTicket[], statuses: TicketStatus[]): BoardColumnDef[];
//# sourceMappingURL=types.d.ts.map