import { MTableQueries } from "../../common-types/common";
import { controllerResponse } from "../../utilities";
type INotificationErrorLogger = {
    [key in keyof NotificationListPayload]: string;
};
type INotificationGetByIdErrorLogger = {
    [key in keyof NotificationGetByIdPayload]: string;
};
type INotificationCreateErrorLogger = {
    [key in keyof NotificationCreatePayload]: string;
};
type INotificationMarkReadErrorLogger = {
    [key in keyof NotificationMarkReadPayload]: string;
};
declare class NotificationListPayload extends MTableQueries {
    not_id_user?: string;
    not_status?: string;
    not_type?: string;
    not_category?: string;
    not_priority?: string;
    constructor(init: NotificationListPayload);
    Validate?(): Partial<INotificationErrorLogger>;
}
declare class NotificationGetByIdPayload {
    not_id?: string;
    constructor(init: NotificationGetByIdPayload);
    Validate?(): Partial<INotificationGetByIdErrorLogger>;
}
declare class NotificationCreatePayload {
    not_id_user?: string;
    not_type?: 'info' | 'success' | 'warning' | 'error' | 'system';
    not_category?: string;
    not_title?: string;
    not_message?: string;
    not_data?: any;
    not_action_url?: string;
    not_action_label?: string;
    not_priority?: 'low' | 'normal' | 'high' | 'urgent';
    not_channels?: {
        in_app?: boolean;
        email?: boolean;
        sms?: boolean;
    };
    not_expires_at?: Date;
    not_id_created_by?: string;
    constructor(init: NotificationCreatePayload);
    Validate?(): Partial<INotificationCreateErrorLogger>;
}
declare class NotificationMarkReadPayload {
    not_id?: string;
    constructor(init: NotificationMarkReadPayload);
    Validate?(): Partial<INotificationMarkReadErrorLogger>;
}
declare class NotificationResponse {
    _id?: string;
    not_id_user?: string | {
        _id?: string;
        name?: string;
        email?: string;
    };
    not_type?: 'info' | 'success' | 'warning' | 'error' | 'system';
    not_category?: string;
    not_title?: string;
    not_message?: string;
    not_data?: any;
    not_action_url?: string;
    not_action_label?: string;
    not_status?: 'pending' | 'sent' | 'delivered' | 'read' | 'archived';
    not_read_at?: Date;
    not_delivered_at?: Date;
    not_archived_at?: Date;
    not_channels?: {
        in_app?: boolean;
        email?: boolean;
        sms?: boolean;
    };
    not_priority?: 'low' | 'normal' | 'high' | 'urgent';
    not_expires_at?: Date;
    not_id_created_by?: string | {
        _id?: string;
        name?: string;
        email?: string;
    };
    not_created_at?: Date;
    not_updated_at?: Date;
}
interface notificationControllerResponse extends controllerResponse {
    data?: NotificationResponse[];
    total?: number;
}
interface notificationByIdControllerResponse extends controllerResponse {
    data?: NotificationResponse;
}
interface notificationCreateControllerResponse extends controllerResponse {
    data?: NotificationResponse;
}
interface notificationMarkReadControllerResponse extends controllerResponse {
    data?: NotificationResponse;
}
interface notificationUnreadCountControllerResponse extends controllerResponse {
    data?: {
        count: number;
    };
}
export { INotificationErrorLogger, INotificationGetByIdErrorLogger, INotificationCreateErrorLogger, INotificationMarkReadErrorLogger, NotificationListPayload, NotificationGetByIdPayload, NotificationCreatePayload, NotificationMarkReadPayload, notificationControllerResponse, notificationByIdControllerResponse, notificationCreateControllerResponse, notificationMarkReadControllerResponse, notificationUnreadCountControllerResponse, NotificationResponse };
