import type Redis from "ioredis";
import type { RequestUser } from "../auth/auth.guard";
export declare class TasksController {
    private readonly redis;
    constructor(redis: Redis);
    create(user: RequestUser, workspaceId: string, body: unknown): Promise<{
        description: string | null;
        title: string;
        status: "todo" | "in_progress" | "done";
        id: number;
        createdAt: string;
        workspaceId: number;
        createdBy: number;
        channelId: number | null;
        deletedAt: string | null;
        updatedAt: string;
        assigneeUserId: number | null;
        dueAt: string | null;
        sourceMessageId: number | null;
        completedAt: string | null;
        deletedBy: number | null;
    }>;
    list(user: RequestUser, workspaceId: string, query: unknown): Promise<{
        tasks: {
            description: string | null;
            title: string;
            status: "todo" | "in_progress" | "done";
            id: number;
            createdAt: string;
            workspaceId: number;
            createdBy: number;
            channelId: number | null;
            deletedAt: string | null;
            updatedAt: string;
            assigneeUserId: number | null;
            dueAt: string | null;
            sourceMessageId: number | null;
            completedAt: string | null;
            deletedBy: number | null;
        }[];
    }>;
    unreadAssigned(user: RequestUser, workspaceId: string): Promise<{
        unread: number;
    }>;
    /** Bodyless POST is valid — opening the Tasks page acknowledges everything. */
    markAssignedSeen(user: RequestUser, workspaceId: string): Promise<{
        seen: number;
    }>;
    get(user: RequestUser, workspaceId: string, taskId: string): Promise<{
        description: string | null;
        title: string;
        status: "todo" | "in_progress" | "done";
        id: number;
        createdAt: string;
        workspaceId: number;
        createdBy: number;
        channelId: number | null;
        deletedAt: string | null;
        updatedAt: string;
        assigneeUserId: number | null;
        dueAt: string | null;
        sourceMessageId: number | null;
        completedAt: string | null;
        deletedBy: number | null;
    }>;
    update(user: RequestUser, workspaceId: string, taskId: string, body: unknown): Promise<{
        description: string | null;
        title: string;
        status: "todo" | "in_progress" | "done";
        id: number;
        createdAt: string;
        workspaceId: number;
        createdBy: number;
        channelId: number | null;
        deletedAt: string | null;
        updatedAt: string;
        assigneeUserId: number | null;
        dueAt: string | null;
        sourceMessageId: number | null;
        completedAt: string | null;
        deletedBy: number | null;
    }>;
    assign(user: RequestUser, workspaceId: string, taskId: string, body: unknown): Promise<{
        description: string | null;
        title: string;
        status: "todo" | "in_progress" | "done";
        id: number;
        createdAt: string;
        workspaceId: number;
        createdBy: number;
        channelId: number | null;
        deletedAt: string | null;
        updatedAt: string;
        assigneeUserId: number | null;
        dueAt: string | null;
        sourceMessageId: number | null;
        completedAt: string | null;
        deletedBy: number | null;
    }>;
    setStatus(user: RequestUser, workspaceId: string, taskId: string, body: unknown): Promise<{
        description: string | null;
        title: string;
        status: "todo" | "in_progress" | "done";
        id: number;
        createdAt: string;
        workspaceId: number;
        createdBy: number;
        channelId: number | null;
        deletedAt: string | null;
        updatedAt: string;
        assigneeUserId: number | null;
        dueAt: string | null;
        sourceMessageId: number | null;
        completedAt: string | null;
        deletedBy: number | null;
    }>;
    remove(user: RequestUser, workspaceId: string, taskId: string): Promise<{
        deleted: boolean;
    }>;
    restore(user: RequestUser, workspaceId: string, taskId: string): Promise<{
        description: string | null;
        title: string;
        status: "todo" | "in_progress" | "done";
        id: number;
        createdAt: string;
        workspaceId: number;
        createdBy: number;
        channelId: number | null;
        deletedAt: string | null;
        updatedAt: string;
        assigneeUserId: number | null;
        dueAt: string | null;
        sourceMessageId: number | null;
        completedAt: string | null;
        deletedBy: number | null;
    }>;
}
//# sourceMappingURL=tasks.controller.d.ts.map