import { HttpStatus } from '@nestjs/common';
import { Kysely } from 'kysely';
import { DB } from '../../database/database.type';
import { Logger } from 'pino-nestjs';
import { DeviceTypePayload } from './device.dto';
export declare class DeviceService {
    private readonly db;
    private readonly logger;
    constructor(db: Kysely<DB>, logger: Logger);
    private readonly MAX_DEVICE_ID_LENGTH;
    private isValidDeviceId;
    private normalizeNullableToken;
    private normalizeLocation;
    getDeviceById(device_id: string): Promise<{
        platform: string;
        app_version: string;
        device_id: string;
    } | undefined>;
    private getDeviceByPlatformAndDeviceId;
    upsertDevice(input: DeviceTypePayload): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            created_at: Date;
            deleted_at: Date | null;
            id: string;
            updated_at: Date;
            user_id: string | null;
            platform: string;
            app_version: string;
            build_number: string | null;
            device_id: string;
            expo_push_token: string | null;
            ip_city: string | null;
            ip_country: string | null;
            ip_country_code: string | null;
            ip_latitude: number | null;
            ip_longitude: number | null;
            last_active_at: Date;
            last_ip: string | null;
            latitude: number | null;
            location_accuracy_m: number | null;
            location_updated_at: Date | null;
            longitude: number | null;
        };
    }>;
    detachDeviceUser(device_id: string): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            message: string;
        };
        message?: undefined;
    } | {
        status: boolean;
        statusCode: HttpStatus;
        message: string;
        data?: undefined;
    }>;
    getUserPushTokens(user_id: string): Promise<string[]>;
    getDevicePushTokens(device_id: string): Promise<string[]>;
    getAnonymousPushTokens(limit?: number): Promise<string[]>;
    clearPushTokenByValue(pushToken: string): Promise<void>;
}
