import { HttpStatus } from '@nestjs/common';
import { DatabaseService } from '../../config';
import { DeviceChangeFilterDto, RequestDeviceChangeDto, ReviewDeviceChangeDto } from './devices.dto';
export declare class DevicesService {
    private readonly db;
    constructor(db: DatabaseService);
    validateOrBindDevice(memberId: string, ownerId: string, deviceId: string, deviceName?: string | null, clientIp?: string | null): Promise<{
        valid: boolean;
        message?: string;
    }>;
    requestDeviceChange(memberId: string, ownerId: string, data: RequestDeviceChangeDto): Promise<{
        status: HttpStatus;
        message: string;
        data: {
            id: string;
            member_id: string;
            owner_id: string;
            old_device_id: string;
            new_device_id: string;
            status: "pending" | "approved" | "rejected";
            new_device_name?: string;
            reason?: string;
            reviewed_by_id?: string;
            reviewed_at?: string;
            admin_note?: string;
            member?: {
                id: string;
                first_name: string;
                employee_id: string;
                last_name?: string;
                work_email?: string;
            };
            created_at?: string;
            updated_at?: string;
        };
    }>;
    getMyDevice(memberId: string, ownerId: string): Promise<{
        status: HttpStatus;
        message: string;
        data: {
            binding: {
                id: string;
                member_id: string;
                device_id: string;
                device_name?: string;
                last_ip?: string;
                bound_at?: string;
                last_active_at?: string;
                member?: {
                    id: string;
                    first_name: string;
                    employee_id: string;
                    last_name?: string;
                    work_email?: string;
                };
                created_at?: string;
                updated_at?: string;
            };
            pending_request: {
                id: string;
                member_id: string;
                owner_id: string;
                old_device_id: string;
                new_device_id: string;
                status: "pending" | "approved" | "rejected";
                new_device_name?: string;
                reason?: string;
                reviewed_by_id?: string;
                reviewed_at?: string;
                admin_note?: string;
                member?: {
                    id: string;
                    first_name: string;
                    employee_id: string;
                    last_name?: string;
                    work_email?: string;
                };
                created_at?: string;
                updated_at?: string;
            };
        };
    }>;
    getDeviceChangeRequests(ownerId: string, filter: DeviceChangeFilterDto): Promise<{
        status: HttpStatus;
        message: string;
        data: {
            id: string;
            member_id: string;
            owner_id: string;
            old_device_id: string;
            new_device_id: string;
            status: "pending" | "approved" | "rejected";
            new_device_name?: string;
            reason?: string;
            reviewed_by_id?: string;
            reviewed_at?: string;
            admin_note?: string;
            member?: {
                id: string;
                first_name: string;
                employee_id: string;
                last_name?: string;
                work_email?: string;
            };
            created_at?: string;
            updated_at?: string;
        }[];
    }>;
    reviewDeviceChangeRequest(requestId: string, ownerId: string, reviewerId: string, body: ReviewDeviceChangeDto): Promise<{
        status: HttpStatus;
        message: string;
        data: {
            id: string;
            member_id: string;
            owner_id: string;
            old_device_id: string;
            new_device_id: string;
            status: "pending" | "approved" | "rejected";
            new_device_name?: string;
            reason?: string;
            reviewed_by_id?: string;
            reviewed_at?: string;
            admin_note?: string;
            member?: {
                id: string;
                first_name: string;
                employee_id: string;
                last_name?: string;
                work_email?: string;
            };
            created_at?: string;
            updated_at?: string;
        };
    }>;
    resetDeviceBinding(memberId: string, ownerId: string): Promise<{
        status: HttpStatus;
        message: string;
    }>;
}
