import { z } from 'zod';
export type TaskType = 'task' | 'bug' | 'feature' | 'epic' | 'chore' | 'story';
export type TaskStatus = 'open' | 'in_progress' | 'blocked' | 'done' | 'wont_do';
export type TaskPriority = 0 | 1 | 2 | 3 | 4;
export type DependencyType = 'blocks' | 'related' | 'discovered_from';
export type TaskActivityType = 'claimed' | 'released' | 'commented' | 'updated' | 'created' | 'closed';
export interface Task {
    id: string;
    title: string;
    description?: string;
    type: TaskType;
    status: TaskStatus;
    priority: TaskPriority;
    assignee?: string;
    worktreeBranch?: string;
    labels: string[];
    notes?: string;
    parentId?: string;
    dueDate?: string;
    createdAt: string;
    updatedAt: string;
    closedAt?: string;
    closedReason?: string;
}
export interface TaskDependency {
    id: number;
    fromTask: string;
    toTask: string;
    depType: DependencyType;
    createdAt: string;
}
export type DependencyFailureReason = 'not_found' | 'self_dependency' | 'would_create_cycle' | 'duplicate';
export type AddDependencyResult = {
    ok: true;
    dependency: TaskDependency;
} | {
    ok: false;
    reason: DependencyFailureReason;
};
export interface TaskHistoryEntry {
    id: number;
    taskId: string;
    field: string;
    oldValue?: string;
    newValue?: string;
    changedBy?: string;
    changedAt: string;
}
export interface TaskActivity {
    id: number;
    taskId: string;
    agentId: string;
    activity: TaskActivityType;
    details?: string;
    timestamp: string;
}
export interface TaskSummary {
    id: number;
    originalIds: string[];
    summary: string;
    labels: string[];
    closedPeriod: string;
    createdAt: string;
}
export interface TaskWithRelations extends Task {
    blockedBy: string[];
    blocks: string[];
    relatedTo: string[];
    children: string[];
    parent?: Task;
    isBlocked: boolean;
    isReady: boolean;
}
export interface CreateTaskInput {
    title: string;
    description?: string;
    type?: TaskType;
    priority?: TaskPriority;
    labels?: string[];
    parentId?: string;
    assignee?: string;
    notes?: string;
    dueDate?: string;
}
export interface UpdateTaskInput {
    title?: string;
    description?: string;
    type?: TaskType;
    status?: TaskStatus;
    priority?: TaskPriority;
    assignee?: string;
    worktreeBranch?: string;
    labels?: string[];
    notes?: string;
    dueDate?: string | null;
}
export interface TaskFilter {
    status?: TaskStatus | TaskStatus[];
    type?: TaskType | TaskType[];
    priority?: TaskPriority | TaskPriority[];
    assignee?: string;
    labels?: string[];
    parentId?: string;
    isBlocked?: boolean;
    isReady?: boolean;
    search?: string;
    overdue?: boolean;
}
export interface TaskStats {
    total: number;
    byStatus: Record<TaskStatus, number>;
    byType: Record<TaskType, number>;
    byPriority: Record<TaskPriority, number>;
    blocked: number;
    ready: number;
    overdue: number;
}
export interface TaskJSONL {
    id: string;
    title: string;
    description?: string;
    type: TaskType;
    status: TaskStatus;
    priority: TaskPriority;
    assignee?: string;
    worktreeBranch?: string;
    labels: string[];
    notes?: string;
    parentId?: string;
    dueDate?: string;
    createdAt: string;
    updatedAt: string;
    closedAt?: string;
    closedReason?: string;
    dependencies: Array<{
        toTask: string;
        depType: DependencyType;
    }>;
}
export declare const TaskTypeSchema: z.ZodEnum<["task", "bug", "feature", "epic", "chore", "story"]>;
export declare const TaskStatusSchema: z.ZodEnum<["open", "in_progress", "blocked", "done", "wont_do"]>;
export declare const TaskPrioritySchema: z.ZodNumber;
export declare const DependencyTypeSchema: z.ZodEnum<["blocks", "related", "discovered_from"]>;
export declare const CreateTaskInputSchema: z.ZodObject<{
    title: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    type: z.ZodDefault<z.ZodEnum<["task", "bug", "feature", "epic", "chore", "story"]>>;
    priority: z.ZodDefault<z.ZodNumber>;
    labels: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
    parentId: z.ZodOptional<z.ZodString>;
    assignee: z.ZodOptional<z.ZodString>;
    notes: z.ZodOptional<z.ZodString>;
    dueDate: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    type: "task" | "chore" | "feature" | "bug" | "epic" | "story";
    priority: number;
    title: string;
    labels: string[];
    description?: string | undefined;
    parentId?: string | undefined;
    assignee?: string | undefined;
    notes?: string | undefined;
    dueDate?: string | undefined;
}, {
    title: string;
    type?: "task" | "chore" | "feature" | "bug" | "epic" | "story" | undefined;
    priority?: number | undefined;
    description?: string | undefined;
    labels?: string[] | undefined;
    parentId?: string | undefined;
    assignee?: string | undefined;
    notes?: string | undefined;
    dueDate?: string | undefined;
}>;
export declare const UpdateTaskInputSchema: z.ZodObject<{
    title: z.ZodOptional<z.ZodString>;
    description: z.ZodOptional<z.ZodString>;
    type: z.ZodOptional<z.ZodEnum<["task", "bug", "feature", "epic", "chore", "story"]>>;
    status: z.ZodOptional<z.ZodEnum<["open", "in_progress", "blocked", "done", "wont_do"]>>;
    priority: z.ZodOptional<z.ZodNumber>;
    assignee: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    worktreeBranch: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    labels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    dueDate: z.ZodOptional<z.ZodNullable<z.ZodString>>;
}, "strip", z.ZodTypeAny, {
    status?: "open" | "in_progress" | "blocked" | "done" | "wont_do" | undefined;
    type?: "task" | "chore" | "feature" | "bug" | "epic" | "story" | undefined;
    priority?: number | undefined;
    description?: string | undefined;
    title?: string | undefined;
    labels?: string[] | undefined;
    assignee?: string | null | undefined;
    notes?: string | null | undefined;
    dueDate?: string | null | undefined;
    worktreeBranch?: string | null | undefined;
}, {
    status?: "open" | "in_progress" | "blocked" | "done" | "wont_do" | undefined;
    type?: "task" | "chore" | "feature" | "bug" | "epic" | "story" | undefined;
    priority?: number | undefined;
    description?: string | undefined;
    title?: string | undefined;
    labels?: string[] | undefined;
    assignee?: string | null | undefined;
    notes?: string | null | undefined;
    dueDate?: string | null | undefined;
    worktreeBranch?: string | null | undefined;
}>;
export declare const TaskFilterSchema: z.ZodObject<{
    status: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["open", "in_progress", "blocked", "done", "wont_do"]>, z.ZodArray<z.ZodEnum<["open", "in_progress", "blocked", "done", "wont_do"]>, "many">]>>;
    type: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["task", "bug", "feature", "epic", "chore", "story"]>, z.ZodArray<z.ZodEnum<["task", "bug", "feature", "epic", "chore", "story"]>, "many">]>>;
    priority: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodArray<z.ZodNumber, "many">]>>;
    assignee: z.ZodOptional<z.ZodString>;
    labels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    parentId: z.ZodOptional<z.ZodString>;
    isBlocked: z.ZodOptional<z.ZodBoolean>;
    isReady: z.ZodOptional<z.ZodBoolean>;
    search: z.ZodOptional<z.ZodString>;
    overdue: z.ZodOptional<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
    status?: "open" | "in_progress" | "blocked" | "done" | "wont_do" | ("open" | "in_progress" | "blocked" | "done" | "wont_do")[] | undefined;
    type?: "task" | "chore" | "feature" | "bug" | "epic" | "story" | ("task" | "chore" | "feature" | "bug" | "epic" | "story")[] | undefined;
    priority?: number | number[] | undefined;
    search?: string | undefined;
    labels?: string[] | undefined;
    parentId?: string | undefined;
    assignee?: string | undefined;
    isBlocked?: boolean | undefined;
    isReady?: boolean | undefined;
    overdue?: boolean | undefined;
}, {
    status?: "open" | "in_progress" | "blocked" | "done" | "wont_do" | ("open" | "in_progress" | "blocked" | "done" | "wont_do")[] | undefined;
    type?: "task" | "chore" | "feature" | "bug" | "epic" | "story" | ("task" | "chore" | "feature" | "bug" | "epic" | "story")[] | undefined;
    priority?: number | number[] | undefined;
    search?: string | undefined;
    labels?: string[] | undefined;
    parentId?: string | undefined;
    assignee?: string | undefined;
    isBlocked?: boolean | undefined;
    isReady?: boolean | undefined;
    overdue?: boolean | undefined;
}>;
export declare const PRIORITY_LABELS: Record<TaskPriority, string>;
export declare const STATUS_ICONS: Record<TaskStatus, string>;
export declare const TYPE_ICONS: Record<TaskType, string>;
//# sourceMappingURL=types.d.ts.map