// Proto file representing the EDB Circle class

syntax = "proto3";

package ansys.api.edb.v1;

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

enum BondwireDefType {
  APD_BONDWIRE_DEF = 0;
  JEDEC4_BONDWIRE_DEF = 1;
  JEDEC5_BONDWIRE_DEF = 2;
}

// BondwireDef service definition
service BondwireDefService {
  // Delete BondwireDef.
  rpc Delete (EDBObjMessage) returns (google.protobuf.Empty) {}

  // Get the name of the BondwireDef.
  rpc GetName (EDBObjMessage) returns (google.protobuf.StringValue) {}
}

message BondwireDefStrMessage{
  EDBObjMessage object = 1;
  string name = 2;
}

// Apd BondwireDef service definition
service ApdBondwireDefService {
  // Creates an Apd BondwireDef.
  rpc Create (BondwireDefStrMessage) returns (EDBObjMessage) {}

  // Loads Definitions From File.
  rpc LoadDefinitionsFromFile (BondwireDefStrMessage) returns (google.protobuf.Empty) {}

  // Find Apd BondwireDef By Name.
  rpc FindByName (BondwireDefStrMessage) returns (EDBObjMessage) {}
  
  // Get Apd BondwireDef parameters in cblock string format.
  rpc GetParameters (EDBObjMessage) returns (google.protobuf.StringValue) {}

  // Set Apd BondwireDef parameters by passing cblock string.
  rpc SetParameters (BondwireDefStrMessage) returns (google.protobuf.Empty) {}
}

service Jedec4BondwireDefService {
  // Creates an Jedec4BondwireDef.
  rpc Create (BondwireDefStrMessage) returns (EDBObjMessage) {}
  
  // Find Jedec4BondwireDef By Name.
  rpc FindByName (BondwireDefStrMessage) returns (EDBObjMessage) {}
  
  // Get Jedec4BondwireDef parameters in cblock string format.
  rpc GetParameters (EDBObjMessage) returns (ValueMessage) {}
  
  // Set Jedec4BondwireDef parameters by passing cblock string.
  rpc SetParameters (Jedec4BondwireDefSetParametersMessage) returns (google.protobuf.Empty) {}
}

message Jedec4BondwireDefSetParametersMessage{
  EDBObjMessage target = 1;
  ValueMessage top_to_die_distance = 2;
}

service Jedec5BondwireDefService {
  // Creates an Jedec5BondwireDef.
  rpc Create (BondwireDefStrMessage) returns (EDBObjMessage) {}
  
  // Find Jedec5BondwireDef By Name.
  rpc FindByName (BondwireDefStrMessage) returns (EDBObjMessage) {}
  
  // Get Jedec5BondwireDef parameters in cblock string format.
  rpc GetParameters (EDBObjMessage) returns (Jedec5BondwireDefParametersMessage) {}
  
  // Set Jedec5BondwireDef parameters by passing cblock string.
  rpc SetParameters (Jedec5BondwireDefSetParametersMessage) returns (google.protobuf.Empty) {}
}

message Jedec5BondwireDefParametersMessage{
  ValueMessage top_to_die_distance = 1;
  ValueMessage die_pad_angle = 2;
  ValueMessage lead_pad_angle = 3;
}

message Jedec5BondwireDefSetParametersMessage{
  EDBObjMessage target = 1;
  Jedec5BondwireDefParametersMessage parameters = 2;
}