/**
 * Priority levels for tasks
 */
type Priority = "LOW" | "MEDIUM" | "HIGH" | "URGENT";
/**
 * Kanban Board
 */
type Board = {
    id: string;
    name: string;
    slug: string;
    description?: string;
    ownerId?: string;
    organizationId?: string;
    createdAt: Date;
    updatedAt: Date;
};
/**
 * Kanban Column
 */
type Column = {
    id: string;
    title: string;
    order: number;
    boardId: string;
    createdAt: Date;
    updatedAt: Date;
};
/**
 * Kanban Task
 */
type Task = {
    id: string;
    title: string;
    description?: string;
    priority: Priority;
    order: number;
    columnId: string;
    assigneeId?: string;
    completedAt?: Date;
    isArchived: boolean;
    createdAt: Date;
    updatedAt: Date;
};
/**
 * Column with its tasks
 */
type ColumnWithTasks = Column & {
    tasks: Task[];
};
interface SerializedTask extends Omit<Task, "createdAt" | "updatedAt" | "completedAt"> {
    completedAt?: string;
    createdAt: string;
    updatedAt: string;
}
interface SerializedColumn extends Omit<Column, "createdAt" | "updatedAt"> {
    createdAt: string;
    updatedAt: string;
    tasks?: SerializedTask[];
}
interface SerializedBoard extends Omit<Board, "createdAt" | "updatedAt"> {
    createdAt: string;
    updatedAt: string;
    columns?: SerializedColumn[];
}
interface SerializedBoardWithColumns extends SerializedBoard {
    columns: SerializedColumn[];
}

export type { Board as B, Column as C, Priority as P, SerializedBoardWithColumns as S, Task as T, SerializedBoard as a, SerializedColumn as b, SerializedTask as c, ColumnWithTasks as d };
