//go:build !cgo || !native_libs || !linux
// +build !cgo !native_libs !linux

package worker

import "errors"

// GPUInfo provides comprehensive GPU information
type GPUInfo struct {
	UUID         string
	Name         string
	VBIOSVersion string
	MemoryUsed   uint64
	MemoryTotal  uint64
	PowerDraw    uint32
	Index        uint32
	ClockSM      uint32
	ClockMemory  uint32
	PCIeGen      uint32
	PCIeWidth    uint32
	Temperature  uint32
	Utilization  uint32
}

func InitNVML() error {
	return errors.New("NVML requires native_libs build tag")
}

func ShutdownNVML() {}

func IsNVMLAvailable() bool {
	return false
}

func GetGPUCount() (int, error) {
	return 0, nil
}

func GetGPUInfo(index uint32) (*GPUInfo, error) { // <-- was missing
	return nil, errors.New("NVML requires native_libs build tag")
}

func GetAllGPUInfo() ([]*GPUInfo, error) {
	return nil, errors.New("NVML requires native_libs build tag")
}

func GetGPUUtilization(index uint32) (uint32, error) {
	return 0, errors.New("NVML requires native_libs build tag")
}

func GetGPUMemory(index uint32) (used uint64, total uint64, err error) {
	return 0, 0, errors.New("NVML requires native_libs build tag")
}

func GetGPUTemperature(index uint32) (uint32, error) {
	return 0, errors.New("NVML requires native_libs build tag")
}
