syntax = "proto3";

package ansys.api.edb.v1;

import "ansys/api/edb/v1/edb_messages.proto";
import "ansys/api/edb/v1/padstack_def_data.proto";

service SolderBallPropertyService {
  rpc Create(google.protobuf.Empty) returns (EDBObjMessage) {}
  
  rpc GetShape(EDBObjMessage) returns (PadstackDefDataSolderballShapeMessage) {}
  rpc SetShape(PadstackDefDataSetSolderballShapeMessage) returns (google.protobuf.Empty) {}

  rpc GetPlacement(EDBObjMessage) returns (PadstackDefDataSolderballPlacementMessage) {}
  rpc SetPlacement(PadstackDefDataSetSolderballPlacementMessage) returns (google.protobuf.Empty) {}

  rpc GetDiameter(EDBObjMessage) returns (DiameterMessage) {}
  rpc SetDiameter(SetDiameterMessage) returns (google.protobuf.Empty) {}

  rpc GetHeight(EDBObjMessage) returns (ValueMessage) {}
  rpc SetHeight(ValuePropertyMessage) returns (google.protobuf.Empty) {}

  rpc GetMaterialName(EDBObjMessage) returns (google.protobuf.StringValue) {}
  rpc SetMaterialName(StringPropertyMessage) returns (google.protobuf.Empty) {}

  rpc UsesSolderball(EDBObjMessage) returns (google.protobuf.BoolValue) {}

  rpc Clone(EDBObjMessage) returns (EDBObjMessage) {}
}

message DiameterMessage {
  ValueMessage diameter1 = 1;
  ValueMessage diameter2 = 2;
}

message SetDiameterMessage {
  EDBObjMessage target = 1;
  DiameterMessage value = 2;
}