import { DeviceUuidInputEvent, DeviceUuidResponse, DeviceMetricsInput, DeviceMetricsOutput, DeviceStatus, DeviceSettings } from '../types.d';
import { DeviceType } from './deviceTypes.d';
import { DeviceMetrics } from './deviceMetrics';
import { EnvironmentService } from '../common_services/config';
import { DeviceVerification } from './deviceVerification';
import { DeviceDb } from './deviceDb';
import { DynamodbService, AppSyncClient } from '../common_services';
import { UpdateEventPublisher } from '../common_interfaces';
export declare class DeviceService extends UpdateEventPublisher {
    private readonly dynamodbService;
    private readonly envService;
    private readonly deviceMetrics;
    private readonly deviceVerify;
    private readonly appsyncClient;
    deviceDb: DeviceDb;
    constructor(dynamodbService: DynamodbService, envService: EnvironmentService, deviceMetrics: DeviceMetrics, deviceVerify: DeviceVerification, appsyncClient: AppSyncClient);
    getDeviceUuid: (event: DeviceUuidInputEvent) => Promise<DeviceUuidResponse>;
    getDeviceMetrics: (deviceUuid: string, type: string) => Promise<import("aws-sdk/clients/dynamodb").DocumentClient.QueryOutput>;
    createDeviceMetrics: (input: DeviceMetricsInput) => Promise<DeviceMetricsOutput>;
    saveDeviceRecord: (deviceUuid: string, type: DeviceType, data: {
        [key: string]: any;
    }) => Promise<void>;
    saveDeviceTokens: (deviceUuid: string, accessToken: string, refreshToken: string, idToken?: string | undefined) => Promise<void>;
    saveDevicePhone: (deviceUuid: string, phone: string) => Promise<void>;
    saveDevicePin: (deviceUuid: string, pin: string) => Promise<void>;
    saveEntity: (deviceUuid: string, entityUuid: string) => Promise<void>;
    saveSite: (deviceUuid: string, siteUuid: string) => Promise<void>;
    getEntityUuidByAccessToken: (accessToken: string) => Promise<string>;
    getRefreshTokenByUuid: (deviceUuid: string) => Promise<any>;
    deactivateDevice: (deviceUuid: string) => Promise<void>;
    getDeviceStatus: (deviceUuid: string) => Promise<DeviceStatus>;
    saveDeviceStatus: (deviceUuid: string, status: DeviceStatus) => Promise<void>;
    updateDeviceSettings: (deviceSettings: DeviceSettings) => Promise<boolean>;
    getDeviceSettings: (deviceUuid: string) => Promise<DeviceSettings>;
    prepareUpdateEventRequest(item: any, keys: any): {
        mutation: import("graphql").DocumentNode;
        variables: {
            item: any;
        };
    };
    onDeviceSettingsStream: (event: any) => Promise<void>;
    onDeviceSettingsUpdate: (accessToken: string) => Promise<void>;
}
