import { z } from 'zod';
// Zod schemas for validation
export const TaskTypeSchema = z.enum(['task', 'bug', 'feature', 'epic', 'chore', 'story']);
export const TaskStatusSchema = z.enum(['open', 'in_progress', 'blocked', 'done', 'wont_do']);
export const TaskPrioritySchema = z.number().int().min(0).max(4);
export const DependencyTypeSchema = z.enum(['blocks', 'related', 'discovered_from']);
export const CreateTaskInputSchema = z.object({
    title: z.string().min(1).max(500),
    description: z.string().max(10000).optional(),
    type: TaskTypeSchema.default('task'),
    priority: TaskPrioritySchema.default(2),
    labels: z.array(z.string()).default([]),
    parentId: z.string().optional(),
    assignee: z.string().optional(),
    notes: z.string().optional(),
    dueDate: z
        .string()
        .regex(/^\d{4}-\d{2}-\d{2}$/, 'Due date must be YYYY-MM-DD')
        .optional(),
});
export const UpdateTaskInputSchema = z.object({
    title: z.string().min(1).max(500).optional(),
    description: z.string().max(10000).optional(),
    type: TaskTypeSchema.optional(),
    status: TaskStatusSchema.optional(),
    priority: TaskPrioritySchema.optional(),
    assignee: z.string().nullable().optional(),
    worktreeBranch: z.string().nullable().optional(),
    labels: z.array(z.string()).optional(),
    notes: z.string().nullable().optional(),
    dueDate: z
        .string()
        .regex(/^\d{4}-\d{2}-\d{2}$/, 'Due date must be YYYY-MM-DD')
        .nullable()
        .optional(),
});
export const TaskFilterSchema = z.object({
    status: z.union([TaskStatusSchema, z.array(TaskStatusSchema)]).optional(),
    type: z.union([TaskTypeSchema, z.array(TaskTypeSchema)]).optional(),
    priority: z.union([TaskPrioritySchema, z.array(TaskPrioritySchema)]).optional(),
    assignee: z.string().optional(),
    labels: z.array(z.string()).optional(),
    parentId: z.string().optional(),
    isBlocked: z.boolean().optional(),
    isReady: z.boolean().optional(),
    search: z.string().optional(),
    overdue: z.boolean().optional(),
});
// Priority labels for display
export const PRIORITY_LABELS = {
    0: 'P0 (Critical)',
    1: 'P1 (High)',
    2: 'P2 (Medium)',
    3: 'P3 (Low)',
    4: 'P4 (Backlog)',
};
// Status icons for display
export const STATUS_ICONS = {
    open: '○',
    in_progress: '◐',
    blocked: '❄',
    done: '✓',
    wont_do: '✗',
};
// Type icons for display
export const TYPE_ICONS = {
    task: '◆',
    bug: '🐛',
    feature: '✨',
    epic: '🎯',
    chore: '🔧',
    story: '📖',
};
//# sourceMappingURL=types.js.map