import { HttpStatus } from '@nestjs/common';
import { Kysely } from 'kysely';
import { DB } from "../../database/database.type";
import { DeviceService } from '../devices/device.service';
import { PushService } from '../push/push.service';
import { SendPushDto } from './notifications.dto';
export declare class NotificationsService {
    private readonly db;
    private readonly deviceService;
    private readonly pushService;
    constructor(db: Kysely<DB>, deviceService: DeviceService, pushService: PushService);
    getNotifications(user_id: string): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            type: string;
            message: string;
            created_at: Date;
            id: string;
            user_id: string;
            report_id: string | null;
            title: string;
            profile_id: string | null;
            quick_snap_id: string | null;
            read_at: Date | null;
            source_event_id: string | null;
            read: boolean;
        }[];
    }>;
    markAsRead(user_id: string, notificationId: string): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        message: string;
        data?: undefined;
    } | {
        status: boolean;
        statusCode: HttpStatus;
        data: {
            message: string;
        };
        message?: undefined;
    }>;
    markAllAsRead(user_id: string): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            message: string;
        };
    }>;
    deleteAllNotifications(user_id: string): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            message: string;
        };
    }>;
    sendPush(sender_user_id: string, payload: SendPushDto): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            message: string;
            target_user_id: string | null;
            target_device_id: string | null;
            anonymous: boolean;
            tokens_count: number;
            title: string;
        };
    }>;
    insertNotificationOnce(input: {
        user_id: string;
        type: string;
        title: string;
        message: string;
        sourceEventId?: string | null;
    }, client?: Kysely<DB>): Promise<{
        inserted: boolean;
        id: string | null;
    }>;
    private sendUserPush;
    createSignupBonusNotification(user_id: string, months: number, premiumUntil?: Date | string | null): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            id: string | null;
            route: string;
        };
    }>;
    createReferralSignupNotification(input: {
        referrerUserId: string;
        referralId: string;
    }): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            id: string | null;
            inserted: boolean;
            route: string;
        };
    }>;
    private buildPremiumRewardPayload;
    createPremiumRewardNotificationRecord(input: {
        client: Kysely<DB>;
        user_id: string;
        rewardType: string;
        grantedDays: number;
        sourceEventId?: string | null;
    }): Promise<{
        inserted: boolean;
        id: string | null;
        type: string;
        title: string;
        message: string;
        route: string;
    }>;
    sendPremiumRewardNotificationPush(input: {
        user_id: string;
        type: string;
        title: string;
        message: string;
        route: string;
        rewardType: string;
        grantedDays: number;
        sourceEventId?: string | null;
    }): Promise<void>;
}
