import { Insertable, Kysely, Updateable } from 'kysely';
import { NotificationSearchDto } from "../dtos/notification.dto";
import { DB } from "../schema";
import { NotificationTable } from "../schema/tables/notification.table";
export declare class NotificationRepository {
    private db;
    constructor(db: Kysely<DB>);
    cleanup(): Promise<import("kysely").DeleteResult[]>;
    search(userId: string, dto: NotificationSearchDto): Promise<{
        id: string;
        title: string;
        description: string | null;
        createdAt: Date;
        type: import("../enum").NotificationType;
        level: import("../enum").NotificationLevel;
        data: unknown;
        readAt: Date | null;
    }[]>;
    create(notification: Insertable<NotificationTable>): Promise<{
        id: string;
        title: string;
        description: string | null;
        createdAt: Date;
        type: import("../enum").NotificationType;
        level: import("../enum").NotificationLevel;
        data: unknown;
        readAt: Date | null;
    }>;
    get(id: string): Promise<{
        id: string;
        title: string;
        description: string | null;
        createdAt: Date;
        type: import("../enum").NotificationType;
        level: import("../enum").NotificationLevel;
        data: unknown;
        readAt: Date | null;
    } | undefined>;
    update(id: string, notification: Updateable<NotificationTable>): Promise<{
        id: string;
        title: string;
        description: string | null;
        createdAt: Date;
        type: import("../enum").NotificationType;
        level: import("../enum").NotificationLevel;
        data: unknown;
        readAt: Date | null;
    }>;
    updateAll(ids: string[], notification: Updateable<NotificationTable>): Promise<void>;
    delete(id: string): Promise<void>;
    deleteAll(ids: string[]): Promise<void>;
}
