// Code generated by protoc-gen-go-plugin. DO NOT EDIT.
// versions:
// 	protoc-gen-go-plugin v0.1.0
// 	protoc               v4.23.4
// source: hook.proto

package protos

import (
	context "context"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type FireEventReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Target *Device         `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
	Data   map[string]*Any `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *FireEventReq) ProtoReflect() protoreflect.Message {
	panic(`not implemented`)
}

func (x *FireEventReq) GetTarget() *Device {
	if x != nil {
		return x.Target
	}
	return nil
}

func (x *FireEventReq) GetData() map[string]*Any {
	if x != nil {
		return x.Data
	}
	return nil
}

type HookMetadata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id      string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
}

func (x *HookMetadata) ProtoReflect() protoreflect.Message {
	panic(`not implemented`)
}

func (x *HookMetadata) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *HookMetadata) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

type HookLoadEvent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Reload bool `protobuf:"varint,1,opt,name=reload,proto3" json:"reload,omitempty"`
}

func (x *HookLoadEvent) ProtoReflect() protoreflect.Message {
	panic(`not implemented`)
}

func (x *HookLoadEvent) GetReload() bool {
	if x != nil {
		return x.Reload
	}
	return false
}

type HookUnloadEvent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *HookUnloadEvent) ProtoReflect() protoreflect.Message {
	panic(`not implemented`)
}

type Device struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
	Id   int64  `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"`
	Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"`
}

func (x *Device) ProtoReflect() protoreflect.Message {
	panic(`not implemented`)
}

func (x *Device) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

func (x *Device) GetId() int64 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *Device) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

type DeviceJoinEvent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Device *Device `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
}

func (x *DeviceJoinEvent) ProtoReflect() protoreflect.Message {
	panic(`not implemented`)
}

func (x *DeviceJoinEvent) GetDevice() *Device {
	if x != nil {
		return x.Device
	}
	return nil
}

type DeviceLeaveEvent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Device *Device `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
}

func (x *DeviceLeaveEvent) ProtoReflect() protoreflect.Message {
	panic(`not implemented`)
}

func (x *DeviceLeaveEvent) GetDevice() *Device {
	if x != nil {
		return x.Device
	}
	return nil
}

type DeviceEvent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Device *Device `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
	Event  string  `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"`
	Args   []*Any  `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"`
}

func (x *DeviceEvent) ProtoReflect() protoreflect.Message {
	panic(`not implemented`)
}

func (x *DeviceEvent) GetDevice() *Device {
	if x != nil {
		return x.Device
	}
	return nil
}

func (x *DeviceEvent) GetEvent() string {
	if x != nil {
		return x.Event
	}
	return ""
}

func (x *DeviceEvent) GetArgs() []*Any {
	if x != nil {
		return x.Args
	}
	return nil
}

type DeviceCustomEvent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Device *Device `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
	Event  string  `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"`
	Args   []*Any  `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"`
}

func (x *DeviceCustomEvent) ProtoReflect() protoreflect.Message {
	panic(`not implemented`)
}

func (x *DeviceCustomEvent) GetDevice() *Device {
	if x != nil {
		return x.Device
	}
	return nil
}

func (x *DeviceCustomEvent) GetEvent() string {
	if x != nil {
		return x.Event
	}
	return ""
}

func (x *DeviceCustomEvent) GetArgs() []*Any {
	if x != nil {
		return x.Args
	}
	return nil
}

// go:plugin type=host version=1
type HookAPI interface {
	FireEvent(context.Context, *FireEventReq) (*Empty, error)
}

// go:plugin type=plugin version=1
type Hook interface {
	Metadata(context.Context, *Empty) (*HookMetadata, error)
	OnLoad(context.Context, *HookLoadEvent) (*Empty, error)
	OnUnload(context.Context, *HookUnloadEvent) (*Empty, error)
	OnDeviceJoin(context.Context, *DeviceJoinEvent) (*Empty, error)
	OnDeviceLeave(context.Context, *DeviceLeaveEvent) (*Empty, error)
	OnDeviceEvent(context.Context, *DeviceEvent) (*Empty, error)
	OnDeviceCustomEvent(context.Context, *DeviceCustomEvent) (*Empty, error)
}
