package rpcs

import (
	"sparrow/pkg/deviceAlarm"
	"sparrow/pkg/online"
	"sparrow/pkg/scene"
)

type ArgsGenerateDeviceAccessToken ArgsDeviceId
type ReplyGenerateDeviceAccessToken struct {
	AccessToken []byte
}

type ArgsValidateDeviceAccessToken struct {
	Id          string
	AccessToken []byte
}
type ReplyValidateDeviceAccessToken ReplyEmptyResult

type ArgsGetOnline struct {
	Id                string
	ClientIP          string
	AccessRPCHost     string
	HeartbeatInterval uint32
}
type ReplyGetOnline ReplyEmptyResult

type ArgsGetOffline struct {
	Id       string
	VendorId string
}
type ReplyGetOffline ReplyEmptyResult

type ArgsHeartBeat struct {
	Id string
}
type ReplyHeartBeat ReplyEmptyResult

type ArgsGetDeviceOnlineStatus ArgsDeviceId
type ReplyGetDeviceOnlineStatus online.Status

type ArgsOtaFile struct {
	FileId   int
	FileData []byte
}

type ReplyOtaFile struct {
	File []byte
}

type ArgsOtaProgress struct {
	DeviceId string
	Progress int
}

type ReplyOtaProgress struct {
	Progress int
}

type ReplyDeviceStatus struct {
	Status interface{}
}

type ArgsAlarmInfo deviceAlarm.AlarmParams

type ArgsGetAlarm struct {
	DeviceCode string
}

type ReplayAlarm struct {
	AlarmParams *deviceAlarm.AlarmParams
}

type ArgsScene struct {
	Key     string
	SceneId string
	TaskId  string
	Config  string
}

type ArgsGetAllScene struct {
	SceneId string
	TaskId  string
	Config  string
}

type ReplyScene struct {
	Config string
}

type ReplyScenes struct {
	Result []*scene.InfoScene
}
