diff --git a/mithril_client b/mithril_client
index a04d47699..21d4a0a5e 160000
--- a/mithril_client
+++ b/mithril_client
@@ -1 +1 @@
-Subproject commit a04d4769974b9d93ba72e490ed7dca3fbaed768c
+Subproject commit 21d4a0a5e9a19f251e26c0ae07ce74be2fa99bbf
diff --git a/parse_proto.php b/parse_proto.php
index 576b99691..e6ccb451f 100755
--- a/parse_proto.php
+++ b/parse_proto.php
@@ -16,5 +16,5 @@
#PHP_PLUGIN="$(which grpc_php_plugin)"
#protoc --proto_path=./src/protobuf/gradido --php_out=./src/ --grpc_out=./src/ --plugin=protoc-gen-grpc=$PHP_PLUGIN ./src/protobuf/gradido/*.proto
-protoc --proto_path=./src/protobuf/gradido --php_out=./src/ ./src/protobuf/gradido/*.proto
+protoc --proto_path=./src/protobuf --php_out=./src/Model/Messages ./src/protobuf/gradido/*.proto
diff --git a/src/Controller/StateUserRolesController.php b/src/Controller/StateUserRolesController.php
index 9f83dc0bc..9238c7ad6 100644
--- a/src/Controller/StateUserRolesController.php
+++ b/src/Controller/StateUserRolesController.php
@@ -81,9 +81,9 @@ class StateUserRolesController extends AppController
// detect states
$this->loadModel('Roles');
// foreach ($pubkeySorted as $pubhex => $user) {
- foreach($communityUsers as $communityUser) {
+ foreach($communityUsers as $communityUser) {
$finalUser = $communityUser;
- $finalUser['pubkeyhex'] = bin2hex(stream_get_contents($communityUser->public_key));
+ $finalUser['pubkeyhex'] = bin2hex(stream_get_contents($communityUser->public_key));
$state_user_id = $communityUser->id;
$stateUserRole = $this->StateUserRoles->find('all')->where(['state_user_id' => $state_user_id])->all();
diff --git a/src/Model/Messages/Proto/Gradido/CrossGroupTransfer.php b/src/Model/Messages/Proto/Gradido/CrossGroupTransfer.php
new file mode 100644
index 000000000..781ac8f25
--- /dev/null
+++ b/src/Model/Messages/Proto/Gradido/CrossGroupTransfer.php
@@ -0,0 +1,146 @@
+proto.gradido.CrossGroupTransfer
+ */
+class CrossGroupTransfer extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field .proto.gradido.TransferAmount sender = 1;
+ */
+ private $sender = null;
+ /**
+ * Generated from protobuf field bytes receiver = 2;
+ */
+ private $receiver = '';
+ /**
+ * Generated from protobuf field string other_group = 3;
+ */
+ private $other_group = '';
+ /**
+ * this matches related OutboundTransfer.paired_transaction_id
+ *
+ * Generated from protobuf field .proto.gradido.Timestamp paired_transaction_id = 4;
+ */
+ private $paired_transaction_id = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Proto\Gradido\TransferAmount $sender
+ * @type string $receiver
+ * @type string $other_group
+ * @type \Proto\Gradido\Timestamp $paired_transaction_id
+ * this matches related OutboundTransfer.paired_transaction_id
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Gradido\GradidoTransfer::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.TransferAmount sender = 1;
+ * @return \Proto\Gradido\TransferAmount
+ */
+ public function getSender()
+ {
+ return $this->sender;
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.TransferAmount sender = 1;
+ * @param \Proto\Gradido\TransferAmount $var
+ * @return $this
+ */
+ public function setSender($var)
+ {
+ GPBUtil::checkMessage($var, \Proto\Gradido\TransferAmount::class);
+ $this->sender = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field bytes receiver = 2;
+ * @return string
+ */
+ public function getReceiver()
+ {
+ return $this->receiver;
+ }
+
+ /**
+ * Generated from protobuf field bytes receiver = 2;
+ * @param string $var
+ * @return $this
+ */
+ public function setReceiver($var)
+ {
+ GPBUtil::checkString($var, False);
+ $this->receiver = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field string other_group = 3;
+ * @return string
+ */
+ public function getOtherGroup()
+ {
+ return $this->other_group;
+ }
+
+ /**
+ * Generated from protobuf field string other_group = 3;
+ * @param string $var
+ * @return $this
+ */
+ public function setOtherGroup($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->other_group = $var;
+
+ return $this;
+ }
+
+ /**
+ * this matches related OutboundTransfer.paired_transaction_id
+ *
+ * Generated from protobuf field .proto.gradido.Timestamp paired_transaction_id = 4;
+ * @return \Proto\Gradido\Timestamp
+ */
+ public function getPairedTransactionId()
+ {
+ return $this->paired_transaction_id;
+ }
+
+ /**
+ * this matches related OutboundTransfer.paired_transaction_id
+ *
+ * Generated from protobuf field .proto.gradido.Timestamp paired_transaction_id = 4;
+ * @param \Proto\Gradido\Timestamp $var
+ * @return $this
+ */
+ public function setPairedTransactionId($var)
+ {
+ GPBUtil::checkMessage($var, \Proto\Gradido\Timestamp::class);
+ $this->paired_transaction_id = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/src/Model/Messages/Proto/Gradido/GradidoCreation.php b/src/Model/Messages/Proto/Gradido/GradidoCreation.php
new file mode 100644
index 000000000..9b4c3208d
--- /dev/null
+++ b/src/Model/Messages/Proto/Gradido/GradidoCreation.php
@@ -0,0 +1,102 @@
+proto.gradido.GradidoCreation
+ */
+class GradidoCreation extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * 40 Byte
+ *
+ * Generated from protobuf field .proto.gradido.TransferAmount receiver = 1;
+ */
+ private $receiver = null;
+ /**
+ * 8 Byte
+ *
+ * Generated from protobuf field .proto.gradido.TimestampSeconds target_date = 3;
+ */
+ private $target_date = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Proto\Gradido\TransferAmount $receiver
+ * 40 Byte
+ * @type \Proto\Gradido\TimestampSeconds $target_date
+ * 8 Byte
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Gradido\GradidoCreation::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * 40 Byte
+ *
+ * Generated from protobuf field .proto.gradido.TransferAmount receiver = 1;
+ * @return \Proto\Gradido\TransferAmount
+ */
+ public function getReceiver()
+ {
+ return $this->receiver;
+ }
+
+ /**
+ * 40 Byte
+ *
+ * Generated from protobuf field .proto.gradido.TransferAmount receiver = 1;
+ * @param \Proto\Gradido\TransferAmount $var
+ * @return $this
+ */
+ public function setReceiver($var)
+ {
+ GPBUtil::checkMessage($var, \Proto\Gradido\TransferAmount::class);
+ $this->receiver = $var;
+
+ return $this;
+ }
+
+ /**
+ * 8 Byte
+ *
+ * Generated from protobuf field .proto.gradido.TimestampSeconds target_date = 3;
+ * @return \Proto\Gradido\TimestampSeconds
+ */
+ public function getTargetDate()
+ {
+ return $this->target_date;
+ }
+
+ /**
+ * 8 Byte
+ *
+ * Generated from protobuf field .proto.gradido.TimestampSeconds target_date = 3;
+ * @param \Proto\Gradido\TimestampSeconds $var
+ * @return $this
+ */
+ public function setTargetDate($var)
+ {
+ GPBUtil::checkMessage($var, \Proto\Gradido\TimestampSeconds::class);
+ $this->target_date = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/src/Model/Messages/Proto/Gradido/GradidoTransaction.php b/src/Model/Messages/Proto/Gradido/GradidoTransaction.php
new file mode 100644
index 000000000..b4b34c77e
--- /dev/null
+++ b/src/Model/Messages/Proto/Gradido/GradidoTransaction.php
@@ -0,0 +1,116 @@
+proto.gradido.GradidoTransaction
+ */
+class GradidoTransaction extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field .proto.gradido.SignatureMap sig_map = 1;
+ */
+ private $sig_map = null;
+ /**
+ * TODO: consider if having concrete type wouldn't be better;
+ * having bytes would better show what is signed, still for
+ * blockchain it doesn't matter, as it has to be serialized again
+ * when validating
+ * UNICORN ANSWER:
+ * Maybe but hedera has at first concrete type and has depracted that now, so is must
+ * be reason for that
+ *
+ * Generated from protobuf field bytes body_bytes = 2;
+ */
+ private $body_bytes = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Proto\Gradido\SignatureMap $sig_map
+ * @type string $body_bytes
+ * TODO: consider if having concrete type wouldn't be better;
+ * having bytes would better show what is signed, still for
+ * blockchain it doesn't matter, as it has to be serialized again
+ * when validating
+ * UNICORN ANSWER:
+ * Maybe but hedera has at first concrete type and has depracted that now, so is must
+ * be reason for that
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Gradido\GradidoTransaction::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.SignatureMap sig_map = 1;
+ * @return \Proto\Gradido\SignatureMap
+ */
+ public function getSigMap()
+ {
+ return $this->sig_map;
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.SignatureMap sig_map = 1;
+ * @param \Proto\Gradido\SignatureMap $var
+ * @return $this
+ */
+ public function setSigMap($var)
+ {
+ GPBUtil::checkMessage($var, \Proto\Gradido\SignatureMap::class);
+ $this->sig_map = $var;
+
+ return $this;
+ }
+
+ /**
+ * TODO: consider if having concrete type wouldn't be better;
+ * having bytes would better show what is signed, still for
+ * blockchain it doesn't matter, as it has to be serialized again
+ * when validating
+ * UNICORN ANSWER:
+ * Maybe but hedera has at first concrete type and has depracted that now, so is must
+ * be reason for that
+ *
+ * Generated from protobuf field bytes body_bytes = 2;
+ * @return string
+ */
+ public function getBodyBytes()
+ {
+ return $this->body_bytes;
+ }
+
+ /**
+ * TODO: consider if having concrete type wouldn't be better;
+ * having bytes would better show what is signed, still for
+ * blockchain it doesn't matter, as it has to be serialized again
+ * when validating
+ * UNICORN ANSWER:
+ * Maybe but hedera has at first concrete type and has depracted that now, so is must
+ * be reason for that
+ *
+ * Generated from protobuf field bytes body_bytes = 2;
+ * @param string $var
+ * @return $this
+ */
+ public function setBodyBytes($var)
+ {
+ GPBUtil::checkString($var, False);
+ $this->body_bytes = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/src/Model/Messages/Proto/Gradido/GradidoTransfer.php b/src/Model/Messages/Proto/Gradido/GradidoTransfer.php
new file mode 100644
index 000000000..a76954c2e
--- /dev/null
+++ b/src/Model/Messages/Proto/Gradido/GradidoTransfer.php
@@ -0,0 +1,109 @@
+proto.gradido.GradidoTransfer
+ */
+class GradidoTransfer extends \Google\Protobuf\Internal\Message
+{
+ protected $data;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Proto\Gradido\LocalTransfer $local
+ * @type \Proto\Gradido\CrossGroupTransfer $inbound
+ * @type \Proto\Gradido\CrossGroupTransfer $outbound
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Gradido\GradidoTransfer::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.LocalTransfer local = 1;
+ * @return \Proto\Gradido\LocalTransfer
+ */
+ public function getLocal()
+ {
+ return $this->readOneof(1);
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.LocalTransfer local = 1;
+ * @param \Proto\Gradido\LocalTransfer $var
+ * @return $this
+ */
+ public function setLocal($var)
+ {
+ GPBUtil::checkMessage($var, \Proto\Gradido\LocalTransfer::class);
+ $this->writeOneof(1, $var);
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.CrossGroupTransfer inbound = 2;
+ * @return \Proto\Gradido\CrossGroupTransfer
+ */
+ public function getInbound()
+ {
+ return $this->readOneof(2);
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.CrossGroupTransfer inbound = 2;
+ * @param \Proto\Gradido\CrossGroupTransfer $var
+ * @return $this
+ */
+ public function setInbound($var)
+ {
+ GPBUtil::checkMessage($var, \Proto\Gradido\CrossGroupTransfer::class);
+ $this->writeOneof(2, $var);
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.CrossGroupTransfer outbound = 3;
+ * @return \Proto\Gradido\CrossGroupTransfer
+ */
+ public function getOutbound()
+ {
+ return $this->readOneof(3);
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.CrossGroupTransfer outbound = 3;
+ * @param \Proto\Gradido\CrossGroupTransfer $var
+ * @return $this
+ */
+ public function setOutbound($var)
+ {
+ GPBUtil::checkMessage($var, \Proto\Gradido\CrossGroupTransfer::class);
+ $this->writeOneof(3, $var);
+
+ return $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function getData()
+ {
+ return $this->whichOneof("data");
+ }
+
+}
+
diff --git a/src/Model/Messages/Proto/Gradido/GroupFriendsUpdate.php b/src/Model/Messages/Proto/Gradido/GroupFriendsUpdate.php
new file mode 100644
index 000000000..22e86d3e1
--- /dev/null
+++ b/src/Model/Messages/Proto/Gradido/GroupFriendsUpdate.php
@@ -0,0 +1,92 @@
+proto.gradido.GroupFriendsUpdate
+ */
+class GroupFriendsUpdate extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * char[16], alias
+ *
+ * Generated from protobuf field string group = 1;
+ */
+ private $group = '';
+ /**
+ * Generated from protobuf field .proto.gradido.GroupFriendsUpdate.Action action = 2;
+ */
+ private $action = 0;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $group
+ * char[16], alias
+ * @type int $action
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Gradido\GroupFriendsUpdate::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * char[16], alias
+ *
+ * Generated from protobuf field string group = 1;
+ * @return string
+ */
+ public function getGroup()
+ {
+ return $this->group;
+ }
+
+ /**
+ * char[16], alias
+ *
+ * Generated from protobuf field string group = 1;
+ * @param string $var
+ * @return $this
+ */
+ public function setGroup($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->group = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.GroupFriendsUpdate.Action action = 2;
+ * @return int
+ */
+ public function getAction()
+ {
+ return $this->action;
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.GroupFriendsUpdate.Action action = 2;
+ * @param int $var
+ * @return $this
+ */
+ public function setAction($var)
+ {
+ GPBUtil::checkEnum($var, \Proto\Gradido\GroupFriendsUpdate_Action::class);
+ $this->action = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/src/Model/Messages/Proto/Gradido/GroupFriendsUpdate/Action.php b/src/Model/Messages/Proto/Gradido/GroupFriendsUpdate/Action.php
new file mode 100644
index 000000000..2a3396c55
--- /dev/null
+++ b/src/Model/Messages/Proto/Gradido/GroupFriendsUpdate/Action.php
@@ -0,0 +1,51 @@
+proto.gradido.GroupFriendsUpdate.Action
+ */
+class Action
+{
+ /**
+ * Generated from protobuf enum ADD_FRIEND = 0;
+ */
+ const ADD_FRIEND = 0;
+ /**
+ * Generated from protobuf enum REMOVE_FRIEND = 1;
+ */
+ const REMOVE_FRIEND = 1;
+
+ private static $valueToName = [
+ self::ADD_FRIEND => 'ADD_FRIEND',
+ self::REMOVE_FRIEND => 'REMOVE_FRIEND',
+ ];
+
+ public static function name($value)
+ {
+ if (!isset(self::$valueToName[$value])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no name defined for value %s', __CLASS__, $value));
+ }
+ return self::$valueToName[$value];
+ }
+
+
+ public static function value($name)
+ {
+ $const = __CLASS__ . '::' . strtoupper($name);
+ if (!defined($const)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no value defined for name %s', __CLASS__, $name));
+ }
+ return constant($const);
+ }
+}
+
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(Action::class, \Proto\Gradido\GroupFriendsUpdate_Action::class);
+
diff --git a/src/Model/Messages/Proto/Gradido/GroupFriendsUpdate_Action.php b/src/Model/Messages/Proto/Gradido/GroupFriendsUpdate_Action.php
new file mode 100644
index 000000000..24f8cef70
--- /dev/null
+++ b/src/Model/Messages/Proto/Gradido/GroupFriendsUpdate_Action.php
@@ -0,0 +1,16 @@
+proto.gradido.GroupMemberUpdate
+ */
+class GroupMemberUpdate extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field bytes user_pubkey = 1;
+ */
+ private $user_pubkey = '';
+ /**
+ * Generated from protobuf field .proto.gradido.GroupMemberUpdate.MemberUpdateType member_update_type = 2;
+ */
+ private $member_update_type = 0;
+ /**
+ * this only makes sense for user move, TODO: probably restructure
+ *
+ * Generated from protobuf field .proto.gradido.Timestamp paired_transaction_id = 3;
+ */
+ private $paired_transaction_id = null;
+ /**
+ * Generated from protobuf field string target_group = 4;
+ */
+ private $target_group = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $user_pubkey
+ * @type int $member_update_type
+ * @type \Proto\Gradido\Timestamp $paired_transaction_id
+ * this only makes sense for user move, TODO: probably restructure
+ * @type string $target_group
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Gradido\GroupMemberUpdate::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field bytes user_pubkey = 1;
+ * @return string
+ */
+ public function getUserPubkey()
+ {
+ return $this->user_pubkey;
+ }
+
+ /**
+ * Generated from protobuf field bytes user_pubkey = 1;
+ * @param string $var
+ * @return $this
+ */
+ public function setUserPubkey($var)
+ {
+ GPBUtil::checkString($var, False);
+ $this->user_pubkey = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.GroupMemberUpdate.MemberUpdateType member_update_type = 2;
+ * @return int
+ */
+ public function getMemberUpdateType()
+ {
+ return $this->member_update_type;
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.GroupMemberUpdate.MemberUpdateType member_update_type = 2;
+ * @param int $var
+ * @return $this
+ */
+ public function setMemberUpdateType($var)
+ {
+ GPBUtil::checkEnum($var, \Proto\Gradido\GroupMemberUpdate_MemberUpdateType::class);
+ $this->member_update_type = $var;
+
+ return $this;
+ }
+
+ /**
+ * this only makes sense for user move, TODO: probably restructure
+ *
+ * Generated from protobuf field .proto.gradido.Timestamp paired_transaction_id = 3;
+ * @return \Proto\Gradido\Timestamp
+ */
+ public function getPairedTransactionId()
+ {
+ return $this->paired_transaction_id;
+ }
+
+ /**
+ * this only makes sense for user move, TODO: probably restructure
+ *
+ * Generated from protobuf field .proto.gradido.Timestamp paired_transaction_id = 3;
+ * @param \Proto\Gradido\Timestamp $var
+ * @return $this
+ */
+ public function setPairedTransactionId($var)
+ {
+ GPBUtil::checkMessage($var, \Proto\Gradido\Timestamp::class);
+ $this->paired_transaction_id = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field string target_group = 4;
+ * @return string
+ */
+ public function getTargetGroup()
+ {
+ return $this->target_group;
+ }
+
+ /**
+ * Generated from protobuf field string target_group = 4;
+ * @param string $var
+ * @return $this
+ */
+ public function setTargetGroup($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->target_group = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/src/Model/Messages/Proto/Gradido/GroupMemberUpdate/MemberUpdateType.php b/src/Model/Messages/Proto/Gradido/GroupMemberUpdate/MemberUpdateType.php
new file mode 100644
index 000000000..57580cd75
--- /dev/null
+++ b/src/Model/Messages/Proto/Gradido/GroupMemberUpdate/MemberUpdateType.php
@@ -0,0 +1,56 @@
+proto.gradido.GroupMemberUpdate.MemberUpdateType
+ */
+class MemberUpdateType
+{
+ /**
+ * Generated from protobuf enum ADD_USER = 0;
+ */
+ const ADD_USER = 0;
+ /**
+ * Generated from protobuf enum MOVE_USER_INBOUND = 1;
+ */
+ const MOVE_USER_INBOUND = 1;
+ /**
+ * Generated from protobuf enum MOVE_USER_OUTBOUND = 2;
+ */
+ const MOVE_USER_OUTBOUND = 2;
+
+ private static $valueToName = [
+ self::ADD_USER => 'ADD_USER',
+ self::MOVE_USER_INBOUND => 'MOVE_USER_INBOUND',
+ self::MOVE_USER_OUTBOUND => 'MOVE_USER_OUTBOUND',
+ ];
+
+ public static function name($value)
+ {
+ if (!isset(self::$valueToName[$value])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no name defined for value %s', __CLASS__, $value));
+ }
+ return self::$valueToName[$value];
+ }
+
+
+ public static function value($name)
+ {
+ $const = __CLASS__ . '::' . strtoupper($name);
+ if (!defined($const)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no value defined for name %s', __CLASS__, $name));
+ }
+ return constant($const);
+ }
+}
+
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(MemberUpdateType::class, \Proto\Gradido\GroupMemberUpdate_MemberUpdateType::class);
+
diff --git a/src/Model/Messages/Proto/Gradido/GroupMemberUpdate_MemberUpdateType.php b/src/Model/Messages/Proto/Gradido/GroupMemberUpdate_MemberUpdateType.php
new file mode 100644
index 000000000..b7080cf75
--- /dev/null
+++ b/src/Model/Messages/Proto/Gradido/GroupMemberUpdate_MemberUpdateType.php
@@ -0,0 +1,16 @@
+proto.gradido.Key
+ */
+class Key extends \Google\Protobuf\Internal\Message
+{
+ protected $key;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $ed25519
+ * ed25519 signature (libsodium default)
+ * @type string $ed25519_ref10
+ * ed25519 ref10 signature
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Gradido\BasicTypes::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * ed25519 signature (libsodium default)
+ *
+ * Generated from protobuf field bytes ed25519 = 2;
+ * @return string
+ */
+ public function getEd25519()
+ {
+ return $this->readOneof(2);
+ }
+
+ /**
+ * ed25519 signature (libsodium default)
+ *
+ * Generated from protobuf field bytes ed25519 = 2;
+ * @param string $var
+ * @return $this
+ */
+ public function setEd25519($var)
+ {
+ GPBUtil::checkString($var, False);
+ $this->writeOneof(2, $var);
+
+ return $this;
+ }
+
+ /**
+ * ed25519 ref10 signature
+ *
+ * Generated from protobuf field bytes ed25519_ref10 = 3;
+ * @return string
+ */
+ public function getEd25519Ref10()
+ {
+ return $this->readOneof(3);
+ }
+
+ /**
+ * ed25519 ref10 signature
+ *
+ * Generated from protobuf field bytes ed25519_ref10 = 3;
+ * @param string $var
+ * @return $this
+ */
+ public function setEd25519Ref10($var)
+ {
+ GPBUtil::checkString($var, False);
+ $this->writeOneof(3, $var);
+
+ return $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function getKey()
+ {
+ return $this->whichOneof("key");
+ }
+
+}
+
diff --git a/src/Model/Messages/Proto/Gradido/LocalTransfer.php b/src/Model/Messages/Proto/Gradido/LocalTransfer.php
new file mode 100644
index 000000000..58f5e23ae
--- /dev/null
+++ b/src/Model/Messages/Proto/Gradido/LocalTransfer.php
@@ -0,0 +1,85 @@
+proto.gradido.LocalTransfer
+ */
+class LocalTransfer extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field .proto.gradido.TransferAmount sender = 1;
+ */
+ private $sender = null;
+ /**
+ * Generated from protobuf field bytes receiver = 2;
+ */
+ private $receiver = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Proto\Gradido\TransferAmount $sender
+ * @type string $receiver
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Gradido\GradidoTransfer::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.TransferAmount sender = 1;
+ * @return \Proto\Gradido\TransferAmount
+ */
+ public function getSender()
+ {
+ return $this->sender;
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.TransferAmount sender = 1;
+ * @param \Proto\Gradido\TransferAmount $var
+ * @return $this
+ */
+ public function setSender($var)
+ {
+ GPBUtil::checkMessage($var, \Proto\Gradido\TransferAmount::class);
+ $this->sender = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field bytes receiver = 2;
+ * @return string
+ */
+ public function getReceiver()
+ {
+ return $this->receiver;
+ }
+
+ /**
+ * Generated from protobuf field bytes receiver = 2;
+ * @param string $var
+ * @return $this
+ */
+ public function setReceiver($var)
+ {
+ GPBUtil::checkString($var, False);
+ $this->receiver = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/src/Model/Messages/Proto/Gradido/SignatureMap.php b/src/Model/Messages/Proto/Gradido/SignatureMap.php
new file mode 100644
index 000000000..0977169d7
--- /dev/null
+++ b/src/Model/Messages/Proto/Gradido/SignatureMap.php
@@ -0,0 +1,65 @@
+proto.gradido.SignatureMap
+ */
+class SignatureMap extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Each signature pair corresponds to a unique Key required to sign the transaction.
+ *
+ * Generated from protobuf field repeated .proto.gradido.SignaturePair sigPair = 1;
+ */
+ private $sigPair;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Proto\Gradido\SignaturePair[]|\Google\Protobuf\Internal\RepeatedField $sigPair
+ * Each signature pair corresponds to a unique Key required to sign the transaction.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Gradido\BasicTypes::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Each signature pair corresponds to a unique Key required to sign the transaction.
+ *
+ * Generated from protobuf field repeated .proto.gradido.SignaturePair sigPair = 1;
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getSigPair()
+ {
+ return $this->sigPair;
+ }
+
+ /**
+ * Each signature pair corresponds to a unique Key required to sign the transaction.
+ *
+ * Generated from protobuf field repeated .proto.gradido.SignaturePair sigPair = 1;
+ * @param \Proto\Gradido\SignaturePair[]|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setSigPair($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Proto\Gradido\SignaturePair::class);
+ $this->sigPair = $arr;
+
+ return $this;
+ }
+
+}
+
diff --git a/src/Model/Messages/Proto/Gradido/SignaturePair.php b/src/Model/Messages/Proto/Gradido/SignaturePair.php
new file mode 100644
index 000000000..2ef0e81c5
--- /dev/null
+++ b/src/Model/Messages/Proto/Gradido/SignaturePair.php
@@ -0,0 +1,123 @@
+proto.gradido.SignaturePair
+ */
+class SignaturePair extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field bytes pubKey = 1;
+ */
+ private $pubKey = '';
+ protected $signature;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $pubKey
+ * @type string $ed25519
+ * ed25519 signature (libsodium default)
+ * @type string $ed25519_ref10
+ * ed25519 ref10 signature
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Gradido\BasicTypes::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field bytes pubKey = 1;
+ * @return string
+ */
+ public function getPubKey()
+ {
+ return $this->pubKey;
+ }
+
+ /**
+ * Generated from protobuf field bytes pubKey = 1;
+ * @param string $var
+ * @return $this
+ */
+ public function setPubKey($var)
+ {
+ GPBUtil::checkString($var, False);
+ $this->pubKey = $var;
+
+ return $this;
+ }
+
+ /**
+ * ed25519 signature (libsodium default)
+ *
+ * Generated from protobuf field bytes ed25519 = 2;
+ * @return string
+ */
+ public function getEd25519()
+ {
+ return $this->readOneof(2);
+ }
+
+ /**
+ * ed25519 signature (libsodium default)
+ *
+ * Generated from protobuf field bytes ed25519 = 2;
+ * @param string $var
+ * @return $this
+ */
+ public function setEd25519($var)
+ {
+ GPBUtil::checkString($var, False);
+ $this->writeOneof(2, $var);
+
+ return $this;
+ }
+
+ /**
+ * ed25519 ref10 signature
+ *
+ * Generated from protobuf field bytes ed25519_ref10 = 3;
+ * @return string
+ */
+ public function getEd25519Ref10()
+ {
+ return $this->readOneof(3);
+ }
+
+ /**
+ * ed25519 ref10 signature
+ *
+ * Generated from protobuf field bytes ed25519_ref10 = 3;
+ * @param string $var
+ * @return $this
+ */
+ public function setEd25519Ref10($var)
+ {
+ GPBUtil::checkString($var, False);
+ $this->writeOneof(3, $var);
+
+ return $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function getSignature()
+ {
+ return $this->whichOneof("signature");
+ }
+
+}
+
diff --git a/src/Model/Messages/Proto/Gradido/Timestamp.php b/src/Model/Messages/Proto/Gradido/Timestamp.php
new file mode 100644
index 000000000..ae3ecea0e
--- /dev/null
+++ b/src/Model/Messages/Proto/Gradido/Timestamp.php
@@ -0,0 +1,101 @@
+proto.gradido.Timestamp
+ */
+class Timestamp extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Number of complete seconds since the start of the epoch
+ *
+ * Generated from protobuf field int64 seconds = 1;
+ */
+ private $seconds = 0;
+ /**
+ * Number of nanoseconds since the start of the last second
+ *
+ * Generated from protobuf field int32 nanos = 2;
+ */
+ private $nanos = 0;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type int|string $seconds
+ * Number of complete seconds since the start of the epoch
+ * @type int $nanos
+ * Number of nanoseconds since the start of the last second
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Gradido\BasicTypes::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Number of complete seconds since the start of the epoch
+ *
+ * Generated from protobuf field int64 seconds = 1;
+ * @return int|string
+ */
+ public function getSeconds()
+ {
+ return $this->seconds;
+ }
+
+ /**
+ * Number of complete seconds since the start of the epoch
+ *
+ * Generated from protobuf field int64 seconds = 1;
+ * @param int|string $var
+ * @return $this
+ */
+ public function setSeconds($var)
+ {
+ GPBUtil::checkInt64($var);
+ $this->seconds = $var;
+
+ return $this;
+ }
+
+ /**
+ * Number of nanoseconds since the start of the last second
+ *
+ * Generated from protobuf field int32 nanos = 2;
+ * @return int
+ */
+ public function getNanos()
+ {
+ return $this->nanos;
+ }
+
+ /**
+ * Number of nanoseconds since the start of the last second
+ *
+ * Generated from protobuf field int32 nanos = 2;
+ * @param int $var
+ * @return $this
+ */
+ public function setNanos($var)
+ {
+ GPBUtil::checkInt32($var);
+ $this->nanos = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/src/Model/Messages/Proto/Gradido/TimestampSeconds.php b/src/Model/Messages/Proto/Gradido/TimestampSeconds.php
new file mode 100644
index 000000000..d31aa40d2
--- /dev/null
+++ b/src/Model/Messages/Proto/Gradido/TimestampSeconds.php
@@ -0,0 +1,67 @@
+proto.gradido.TimestampSeconds
+ */
+class TimestampSeconds extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Number of complete seconds since the start of the epoch
+ *
+ * Generated from protobuf field int64 seconds = 1;
+ */
+ private $seconds = 0;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type int|string $seconds
+ * Number of complete seconds since the start of the epoch
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Gradido\BasicTypes::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Number of complete seconds since the start of the epoch
+ *
+ * Generated from protobuf field int64 seconds = 1;
+ * @return int|string
+ */
+ public function getSeconds()
+ {
+ return $this->seconds;
+ }
+
+ /**
+ * Number of complete seconds since the start of the epoch
+ *
+ * Generated from protobuf field int64 seconds = 1;
+ * @param int|string $var
+ * @return $this
+ */
+ public function setSeconds($var)
+ {
+ GPBUtil::checkInt64($var);
+ $this->seconds = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/src/Model/Messages/Proto/Gradido/TransactionBody.php b/src/Model/Messages/Proto/Gradido/TransactionBody.php
new file mode 100644
index 000000000..0484ecc92
--- /dev/null
+++ b/src/Model/Messages/Proto/Gradido/TransactionBody.php
@@ -0,0 +1,193 @@
+proto.gradido.TransactionBody
+ */
+class TransactionBody extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * max 150 chars
+ *
+ * Generated from protobuf field string memo = 1;
+ */
+ private $memo = '';
+ /**
+ * Generated from protobuf field uint64 version_number = 6;
+ */
+ private $version_number = 0;
+ protected $data;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $memo
+ * max 150 chars
+ * @type \Proto\Gradido\GradidoTransfer $transfer
+ * @type \Proto\Gradido\GradidoCreation $creation
+ * @type \Proto\Gradido\GroupFriendsUpdate $group_friends_update
+ * @type \Proto\Gradido\GroupMemberUpdate $group_member_update
+ * @type int|string $version_number
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Gradido\TransactionBody::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * max 150 chars
+ *
+ * Generated from protobuf field string memo = 1;
+ * @return string
+ */
+ public function getMemo()
+ {
+ return $this->memo;
+ }
+
+ /**
+ * max 150 chars
+ *
+ * Generated from protobuf field string memo = 1;
+ * @param string $var
+ * @return $this
+ */
+ public function setMemo($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->memo = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.GradidoTransfer transfer = 2;
+ * @return \Proto\Gradido\GradidoTransfer
+ */
+ public function getTransfer()
+ {
+ return $this->readOneof(2);
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.GradidoTransfer transfer = 2;
+ * @param \Proto\Gradido\GradidoTransfer $var
+ * @return $this
+ */
+ public function setTransfer($var)
+ {
+ GPBUtil::checkMessage($var, \Proto\Gradido\GradidoTransfer::class);
+ $this->writeOneof(2, $var);
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.GradidoCreation creation = 3;
+ * @return \Proto\Gradido\GradidoCreation
+ */
+ public function getCreation()
+ {
+ return $this->readOneof(3);
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.GradidoCreation creation = 3;
+ * @param \Proto\Gradido\GradidoCreation $var
+ * @return $this
+ */
+ public function setCreation($var)
+ {
+ GPBUtil::checkMessage($var, \Proto\Gradido\GradidoCreation::class);
+ $this->writeOneof(3, $var);
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.GroupFriendsUpdate group_friends_update = 4;
+ * @return \Proto\Gradido\GroupFriendsUpdate
+ */
+ public function getGroupFriendsUpdate()
+ {
+ return $this->readOneof(4);
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.GroupFriendsUpdate group_friends_update = 4;
+ * @param \Proto\Gradido\GroupFriendsUpdate $var
+ * @return $this
+ */
+ public function setGroupFriendsUpdate($var)
+ {
+ GPBUtil::checkMessage($var, \Proto\Gradido\GroupFriendsUpdate::class);
+ $this->writeOneof(4, $var);
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.GroupMemberUpdate group_member_update = 5;
+ * @return \Proto\Gradido\GroupMemberUpdate
+ */
+ public function getGroupMemberUpdate()
+ {
+ return $this->readOneof(5);
+ }
+
+ /**
+ * Generated from protobuf field .proto.gradido.GroupMemberUpdate group_member_update = 5;
+ * @param \Proto\Gradido\GroupMemberUpdate $var
+ * @return $this
+ */
+ public function setGroupMemberUpdate($var)
+ {
+ GPBUtil::checkMessage($var, \Proto\Gradido\GroupMemberUpdate::class);
+ $this->writeOneof(5, $var);
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field uint64 version_number = 6;
+ * @return int|string
+ */
+ public function getVersionNumber()
+ {
+ return $this->version_number;
+ }
+
+ /**
+ * Generated from protobuf field uint64 version_number = 6;
+ * @param int|string $var
+ * @return $this
+ */
+ public function setVersionNumber($var)
+ {
+ GPBUtil::checkUint64($var);
+ $this->version_number = $var;
+
+ return $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function getData()
+ {
+ return $this->whichOneof("data");
+ }
+
+}
+
diff --git a/src/Model/Messages/Proto/Gradido/TransferAmount.php b/src/Model/Messages/Proto/Gradido/TransferAmount.php
new file mode 100644
index 000000000..7673582fa
--- /dev/null
+++ b/src/Model/Messages/Proto/Gradido/TransferAmount.php
@@ -0,0 +1,85 @@
+proto.gradido.TransferAmount
+ */
+class TransferAmount extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Generated from protobuf field bytes pubkey = 1;
+ */
+ private $pubkey = '';
+ /**
+ * Generated from protobuf field sint64 amount = 2;
+ */
+ private $amount = 0;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $pubkey
+ * @type int|string $amount
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Gradido\BasicTypes::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Generated from protobuf field bytes pubkey = 1;
+ * @return string
+ */
+ public function getPubkey()
+ {
+ return $this->pubkey;
+ }
+
+ /**
+ * Generated from protobuf field bytes pubkey = 1;
+ * @param string $var
+ * @return $this
+ */
+ public function setPubkey($var)
+ {
+ GPBUtil::checkString($var, False);
+ $this->pubkey = $var;
+
+ return $this;
+ }
+
+ /**
+ * Generated from protobuf field sint64 amount = 2;
+ * @return int|string
+ */
+ public function getAmount()
+ {
+ return $this->amount;
+ }
+
+ /**
+ * Generated from protobuf field sint64 amount = 2;
+ * @param int|string $var
+ * @return $this
+ */
+ public function setAmount($var)
+ {
+ GPBUtil::checkInt64($var);
+ $this->amount = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/src/protobuf b/src/protobuf
index 9004e6978..81a461566 160000
--- a/src/protobuf
+++ b/src/protobuf
@@ -1 +1 @@
-Subproject commit 9004e6978ac3dafcc635b2ffcf8bc6a156451cca
+Subproject commit 81a461566e46d71533dc3e284fa075d7d68fd020