syntax = "proto3";

package akash.inventory.v1;

import "gogoproto/gogo.proto";
import "akash/inventory/v1/resourcepair.proto";

option go_package = "github.com/akash-network/akash-api/go/inventory/v1";

// GPUInfo reports GPU details
message GPUInfo {
  string vendor = 1 [
    (gogoproto.customname)   = "Vendor",
    (gogoproto.jsontag)      = "vendor",
    (gogoproto.moretags)     = "yaml:\"vendor\""
  ];

  string vendor_id = 2 [
    (gogoproto.customname)   = "VendorID",
    (gogoproto.jsontag)      = "vendor_id",
    (gogoproto.moretags)     = "yaml:\"vendor_id\""
  ];

  string name = 3 [
    (gogoproto.customname)   = "Name",
    (gogoproto.jsontag)      = "name",
    (gogoproto.moretags)     = "yaml:\"name\""
  ];
  string modelid = 4 [
    (gogoproto.customname)   = "ModelID",
    (gogoproto.jsontag)      = "model_id",
    (gogoproto.moretags)     = "yaml:\"model_id\""
  ];
  string interface = 5 [
    (gogoproto.customname)   = "Interface",
    (gogoproto.jsontag)      = "interface",
    (gogoproto.moretags)     = "yaml:\"interface\""
  ];
  string memory_size = 6 [
    (gogoproto.customname)   = "MemorySize",
    (gogoproto.jsontag)      = "memory_size",
    (gogoproto.moretags)     = "yaml:\"memory_size\""
  ];
}

// GPUInfo reports GPU inventory details
message GPU {
  ResourcePair quantity = 1 [
    (gogoproto.nullable)     = false,
    (gogoproto.customname)   = "Quantity",
    (gogoproto.jsontag)      = "quantity",
    (gogoproto.moretags)     = "yaml:\"quantity\""
  ];
  repeated GPUInfo info = 2 [
    (gogoproto.nullable)     = false,
    (gogoproto.castrepeated) = "GPUInfoS",
    (gogoproto.customname)   = "Info",
    (gogoproto.jsontag)      = "info",
    (gogoproto.moretags)     = "yaml:\"info\""
  ];
}
