diff --git a/Frameworks/Bindings.txt b/Frameworks/Bindings.txt
index 702c949d1dd03ac8030c0ef9c5a36af0c325f134..83a8da383de3a57509257d2b3b05af2c65d64fe1 100644
--- a/Frameworks/Bindings.txt
+++ b/Frameworks/Bindings.txt
@@ -1,4 +1,4 @@
-https://git.xx.network/elixxir/client/-/commit/9a44f79889f967704d60a43f1c24a945028afb06
+https://git.xx.network/elixxir/client/-/commit/57b7e3b88e740c36935ab2da04d94fd5a6a85262
 go version go1.17.13 darwin/arm64
 Xcode 13.4.1 Build version 13F100
 gomobile bind target: ios,iossimulator,macos
diff --git a/Frameworks/Bindings.xcframework/Info.plist b/Frameworks/Bindings.xcframework/Info.plist
index 3d81013ba0ba606da4b42b6f3119f688c6d9b97d..43fe32dad94767ae305b61db56f5604f8612617e 100644
--- a/Frameworks/Bindings.xcframework/Info.plist
+++ b/Frameworks/Bindings.xcframework/Info.plist
@@ -6,7 +6,7 @@
 	<array>
 		<dict>
 			<key>LibraryIdentifier</key>
-			<string>ios-arm64_x86_64-simulator</string>
+			<string>macos-arm64_x86_64</string>
 			<key>LibraryPath</key>
 			<string>Bindings.framework</string>
 			<key>SupportedArchitectures</key>
@@ -15,13 +15,11 @@
 				<string>x86_64</string>
 			</array>
 			<key>SupportedPlatform</key>
-			<string>ios</string>
-			<key>SupportedPlatformVariant</key>
-			<string>simulator</string>
+			<string>macos</string>
 		</dict>
 		<dict>
 			<key>LibraryIdentifier</key>
-			<string>macos-arm64_x86_64</string>
+			<string>ios-arm64_x86_64-simulator</string>
 			<key>LibraryPath</key>
 			<string>Bindings.framework</string>
 			<key>SupportedArchitectures</key>
@@ -30,7 +28,9 @@
 				<string>x86_64</string>
 			</array>
 			<key>SupportedPlatform</key>
-			<string>macos</string>
+			<string>ios</string>
+			<key>SupportedPlatformVariant</key>
+			<string>simulator</string>
 		</dict>
 		<dict>
 			<key>LibraryIdentifier</key>
diff --git a/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/A/Bindings b/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/A/Bindings
index 0ce0097a9af5e6db2577a9264a6ca65277b87a5f..381c2ba28c87178ac5f80950ba6439f8b4bfa8f1 100644
Binary files a/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/A/Bindings and b/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/A/Bindings differ
diff --git a/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/A/Headers/Bindings.objc.h b/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/A/Headers/Bindings.objc.h
index 40a89ee2ee4afde62d99dcdcac9ef77d09c7c663..313101ebfb224eb77a7b3e3b99459fab55b79c3c 100644
--- a/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/A/Headers/Bindings.objc.h
+++ b/Frameworks/Bindings.xcframework/ios-arm64/Bindings.framework/Versions/A/Headers/Bindings.objc.h
@@ -33,6 +33,7 @@
 @class BindingsGroupSendReport;
 @class BindingsMessage;
 @class BindingsNodeRegistrationReport;
+@class BindingsNotificationReport;
 @class BindingsProgress;
 @class BindingsReceivedFile;
 @class BindingsReceptionIdentity;
@@ -78,6 +79,8 @@
 @class BindingsSingleUseResponse;
 @protocol BindingsStopper;
 @class BindingsStopper;
+@protocol BindingsTrackServicesCallback;
+@class BindingsTrackServicesCallback;
 @protocol BindingsUdLookupCallback;
 @class BindingsUdLookupCallback;
 @protocol BindingsUdNetworkStatus;
@@ -196,6 +199,10 @@ Parameters:
 - (void)stop;
 @end
 
+@protocol BindingsTrackServicesCallback <NSObject>
+- (void)callback:(NSData* _Nullable)marshalData err:(NSError* _Nullable)err;
+@end
+
 @protocol BindingsUdLookupCallback <NSObject>
 - (void)callback:(NSData* _Nullable)contactBytes err:(NSError* _Nullable)err;
 @end
@@ -552,6 +559,17 @@ If the network follower is running and this fails, the Cmix object will
 most likely be in an unrecoverable state and need to be trashed.
  */
 - (BOOL)stopNetworkFollower:(NSError* _Nullable* _Nullable)error;
+/**
+ * TrackServices will return via a callback the list of services the
+backend keeps track of, which is formally referred to as a
+[message.ServiceList]. This may be passed into other bindings call which
+may need context on the available services for this client.
+
+Parameters:
+  - cb - A TrackServicesCallback, which will be passed the marshalled
+    message.ServiceList.
+ */
+- (void)trackServices:(id<BindingsTrackServicesCallback> _Nullable)cb;
 /**
  * WaitForNetwork will block until either the network is healthy or the passed
 timeout is reached. It will return true if the network is healthy.
@@ -1406,6 +1424,57 @@ Cmix.GetNodeRegistrationStatus returns JSON marshalled.
 @property (nonatomic) long numberOfNodes;
 @end
 
+/**
+ * NotificationReport is the bindings' representation for notifications for
+this user.
+
+Example NotificationReport JSON:
+
+{
+ "ForMe": true,
+ "Type": "e2e",
+ "Source": "dGVzdGVyMTIzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+}
+
+Given the Type, the Source value will have specific contextual meanings.
+Below is a table that will define the contextual meaning of the Source field
+given all possible Type fields.
+
+     TYPE     |     SOURCE         |    DESCRIPTION
+    ________________________________________________________________________________________
+    "default" |  recipient user ID |  A message with no association.
+	   "request" |  sender user ID    |  A channel request has been received, from Source.
+    "reset"   |  sender user ID    |  A channel reset has been received.
+    "confirm" |  sender user ID    |  A channel request has been accepted.
+    "silent"  |  sender user ID    |  A message where the user should not be notified.
+    "e2e"     |  sender user ID    |  A reception of an E2E message.
+    "group"   |  group ID          |  A reception of a group chat message.
+    "endFT"   |  sender user ID    |  The last message sent confirming end of file transfer.
+    "groupRQ" |  sender user ID    |  A request from Source to join a group chat.
+ todo iterate over this docstring, ensure descriptions/sources are
+   still accurate (they are from the old implementation
+ */
+@interface BindingsNotificationReport : NSObject <goSeqRefInterface> {
+}
+@property(strong, readonly) _Nonnull id _ref;
+
+- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
+- (nonnull instancetype)init;
+/**
+ * ForMe determines whether this value is for the user. If it is
+false, this report may be ignored.
+ */
+@property (nonatomic) BOOL forMe;
+/**
+ * Type is the type of notification. The list can be seen
+ */
+@property (nonatomic) NSString* _Nonnull type;
+/**
+ * Source is the source of the notification.
+ */
+@property (nonatomic) NSData* _Nullable source;
+@end
+
 /**
  * Progress is a public struct that represents the progress of an in-progress
 file transfer.
@@ -1810,6 +1879,25 @@ Returns:
  */
 FOUNDATION_EXPORT NSData* _Nullable BindingsGetIDFromContact(NSData* _Nullable marshaledContact, NSError* _Nullable* _Nullable error);
 
+/**
+ * GetNotificationsReport parses the received notification data to determine which
+notifications are for this user. // This returns the JSON-marshalled
+NotificationReports.
+
+Parameters:
+ - e2eID - e2e object ID in the tracker
+ - notificationCSV - the notification data received from the
+   notifications' server.
+ - marshalledServices - the JSON-marshalled list of services the backend
+   keeps track of. Refer to Cmix.TrackServices for information about this.
+
+Returns:
+ - []byte - A JSON marshalled NotificationReports. Some NotificationReport's
+   within in this structure may have their NotificationReport.ForMe
+   set to false. These may be ignored.
+ */
+FOUNDATION_EXPORT NSData* _Nullable BindingsGetNotificationsReport(long e2eId, NSString* _Nullable notificationCSV, NSData* _Nullable marshalledServices, NSError* _Nullable* _Nullable error);
+
 /**
  * GetPubkeyFromContact returns the DH public key in the [contact.Contact]
 object.
@@ -2283,6 +2371,8 @@ FOUNDATION_EXPORT BOOL BindingsUpdateCommonErrors(NSString* _Nullable jsonFile,
 
 @class BindingsStopper;
 
+@class BindingsTrackServicesCallback;
+
 @class BindingsUdLookupCallback;
 
 @class BindingsUdNetworkStatus;
@@ -2564,6 +2654,45 @@ registered listener.
 - (void)stop;
 @end
 
+/**
+ * TrackServicesCallback is the callback for Cmix.TrackServices.
+This will pass to the user a JSON-marshalled list of backend services.
+If there was an error retrieving or marshalling the service list,
+there is an error for the second parameter which will be non-null.
+
+Example JSON:
+
+[
+ {
+   "Id": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD",
+   "Services": [
+     {
+       "Identifier": null,
+       "Tag": "test",
+       "Metadata": null
+     }
+   ]
+ },
+ {
+   "Id": "AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD",
+   "Services": [
+     {
+       "Identifier": null,
+       "Tag": "test",
+       "Metadata": null
+     }
+   ]
+ },
+]
+ */
+@interface BindingsTrackServicesCallback : NSObject <goSeqRefInterface, BindingsTrackServicesCallback> {
+}
+@property(strong, readonly) _Nonnull id _ref;
+
+- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
+- (void)callback:(NSData* _Nullable)marshalData err:(NSError* _Nullable)err;
+@end
+
 /**
  * UdLookupCallback contains the callback called by LookupUD that returns the
 contact that matches the passed in ID.
diff --git a/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/A/Bindings b/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/A/Bindings
index c302dc6cf19adf806e3a638565957629c1798bba..1005ae67edb1b57deb38ed23b9639767d796f5ab 100644
Binary files a/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/A/Bindings and b/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/A/Bindings differ
diff --git a/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/A/Headers/Bindings.objc.h b/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/A/Headers/Bindings.objc.h
index 40a89ee2ee4afde62d99dcdcac9ef77d09c7c663..313101ebfb224eb77a7b3e3b99459fab55b79c3c 100644
--- a/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/A/Headers/Bindings.objc.h
+++ b/Frameworks/Bindings.xcframework/ios-arm64_x86_64-simulator/Bindings.framework/Versions/A/Headers/Bindings.objc.h
@@ -33,6 +33,7 @@
 @class BindingsGroupSendReport;
 @class BindingsMessage;
 @class BindingsNodeRegistrationReport;
+@class BindingsNotificationReport;
 @class BindingsProgress;
 @class BindingsReceivedFile;
 @class BindingsReceptionIdentity;
@@ -78,6 +79,8 @@
 @class BindingsSingleUseResponse;
 @protocol BindingsStopper;
 @class BindingsStopper;
+@protocol BindingsTrackServicesCallback;
+@class BindingsTrackServicesCallback;
 @protocol BindingsUdLookupCallback;
 @class BindingsUdLookupCallback;
 @protocol BindingsUdNetworkStatus;
@@ -196,6 +199,10 @@ Parameters:
 - (void)stop;
 @end
 
+@protocol BindingsTrackServicesCallback <NSObject>
+- (void)callback:(NSData* _Nullable)marshalData err:(NSError* _Nullable)err;
+@end
+
 @protocol BindingsUdLookupCallback <NSObject>
 - (void)callback:(NSData* _Nullable)contactBytes err:(NSError* _Nullable)err;
 @end
@@ -552,6 +559,17 @@ If the network follower is running and this fails, the Cmix object will
 most likely be in an unrecoverable state and need to be trashed.
  */
 - (BOOL)stopNetworkFollower:(NSError* _Nullable* _Nullable)error;
+/**
+ * TrackServices will return via a callback the list of services the
+backend keeps track of, which is formally referred to as a
+[message.ServiceList]. This may be passed into other bindings call which
+may need context on the available services for this client.
+
+Parameters:
+  - cb - A TrackServicesCallback, which will be passed the marshalled
+    message.ServiceList.
+ */
+- (void)trackServices:(id<BindingsTrackServicesCallback> _Nullable)cb;
 /**
  * WaitForNetwork will block until either the network is healthy or the passed
 timeout is reached. It will return true if the network is healthy.
@@ -1406,6 +1424,57 @@ Cmix.GetNodeRegistrationStatus returns JSON marshalled.
 @property (nonatomic) long numberOfNodes;
 @end
 
+/**
+ * NotificationReport is the bindings' representation for notifications for
+this user.
+
+Example NotificationReport JSON:
+
+{
+ "ForMe": true,
+ "Type": "e2e",
+ "Source": "dGVzdGVyMTIzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+}
+
+Given the Type, the Source value will have specific contextual meanings.
+Below is a table that will define the contextual meaning of the Source field
+given all possible Type fields.
+
+     TYPE     |     SOURCE         |    DESCRIPTION
+    ________________________________________________________________________________________
+    "default" |  recipient user ID |  A message with no association.
+	   "request" |  sender user ID    |  A channel request has been received, from Source.
+    "reset"   |  sender user ID    |  A channel reset has been received.
+    "confirm" |  sender user ID    |  A channel request has been accepted.
+    "silent"  |  sender user ID    |  A message where the user should not be notified.
+    "e2e"     |  sender user ID    |  A reception of an E2E message.
+    "group"   |  group ID          |  A reception of a group chat message.
+    "endFT"   |  sender user ID    |  The last message sent confirming end of file transfer.
+    "groupRQ" |  sender user ID    |  A request from Source to join a group chat.
+ todo iterate over this docstring, ensure descriptions/sources are
+   still accurate (they are from the old implementation
+ */
+@interface BindingsNotificationReport : NSObject <goSeqRefInterface> {
+}
+@property(strong, readonly) _Nonnull id _ref;
+
+- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
+- (nonnull instancetype)init;
+/**
+ * ForMe determines whether this value is for the user. If it is
+false, this report may be ignored.
+ */
+@property (nonatomic) BOOL forMe;
+/**
+ * Type is the type of notification. The list can be seen
+ */
+@property (nonatomic) NSString* _Nonnull type;
+/**
+ * Source is the source of the notification.
+ */
+@property (nonatomic) NSData* _Nullable source;
+@end
+
 /**
  * Progress is a public struct that represents the progress of an in-progress
 file transfer.
@@ -1810,6 +1879,25 @@ Returns:
  */
 FOUNDATION_EXPORT NSData* _Nullable BindingsGetIDFromContact(NSData* _Nullable marshaledContact, NSError* _Nullable* _Nullable error);
 
+/**
+ * GetNotificationsReport parses the received notification data to determine which
+notifications are for this user. // This returns the JSON-marshalled
+NotificationReports.
+
+Parameters:
+ - e2eID - e2e object ID in the tracker
+ - notificationCSV - the notification data received from the
+   notifications' server.
+ - marshalledServices - the JSON-marshalled list of services the backend
+   keeps track of. Refer to Cmix.TrackServices for information about this.
+
+Returns:
+ - []byte - A JSON marshalled NotificationReports. Some NotificationReport's
+   within in this structure may have their NotificationReport.ForMe
+   set to false. These may be ignored.
+ */
+FOUNDATION_EXPORT NSData* _Nullable BindingsGetNotificationsReport(long e2eId, NSString* _Nullable notificationCSV, NSData* _Nullable marshalledServices, NSError* _Nullable* _Nullable error);
+
 /**
  * GetPubkeyFromContact returns the DH public key in the [contact.Contact]
 object.
@@ -2283,6 +2371,8 @@ FOUNDATION_EXPORT BOOL BindingsUpdateCommonErrors(NSString* _Nullable jsonFile,
 
 @class BindingsStopper;
 
+@class BindingsTrackServicesCallback;
+
 @class BindingsUdLookupCallback;
 
 @class BindingsUdNetworkStatus;
@@ -2564,6 +2654,45 @@ registered listener.
 - (void)stop;
 @end
 
+/**
+ * TrackServicesCallback is the callback for Cmix.TrackServices.
+This will pass to the user a JSON-marshalled list of backend services.
+If there was an error retrieving or marshalling the service list,
+there is an error for the second parameter which will be non-null.
+
+Example JSON:
+
+[
+ {
+   "Id": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD",
+   "Services": [
+     {
+       "Identifier": null,
+       "Tag": "test",
+       "Metadata": null
+     }
+   ]
+ },
+ {
+   "Id": "AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD",
+   "Services": [
+     {
+       "Identifier": null,
+       "Tag": "test",
+       "Metadata": null
+     }
+   ]
+ },
+]
+ */
+@interface BindingsTrackServicesCallback : NSObject <goSeqRefInterface, BindingsTrackServicesCallback> {
+}
+@property(strong, readonly) _Nonnull id _ref;
+
+- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
+- (void)callback:(NSData* _Nullable)marshalData err:(NSError* _Nullable)err;
+@end
+
 /**
  * UdLookupCallback contains the callback called by LookupUD that returns the
 contact that matches the passed in ID.
diff --git a/Frameworks/Bindings.xcframework/macos-arm64_x86_64/Bindings.framework/Versions/A/Bindings b/Frameworks/Bindings.xcframework/macos-arm64_x86_64/Bindings.framework/Versions/A/Bindings
index ad4d0f109edc52b1309a375c2bfea9a9b61764ec..2b925090d31ec9d29ff598919efa963e385b8603 100644
Binary files a/Frameworks/Bindings.xcframework/macos-arm64_x86_64/Bindings.framework/Versions/A/Bindings and b/Frameworks/Bindings.xcframework/macos-arm64_x86_64/Bindings.framework/Versions/A/Bindings differ
diff --git a/Frameworks/Bindings.xcframework/macos-arm64_x86_64/Bindings.framework/Versions/A/Headers/Bindings.objc.h b/Frameworks/Bindings.xcframework/macos-arm64_x86_64/Bindings.framework/Versions/A/Headers/Bindings.objc.h
index 40a89ee2ee4afde62d99dcdcac9ef77d09c7c663..313101ebfb224eb77a7b3e3b99459fab55b79c3c 100644
--- a/Frameworks/Bindings.xcframework/macos-arm64_x86_64/Bindings.framework/Versions/A/Headers/Bindings.objc.h
+++ b/Frameworks/Bindings.xcframework/macos-arm64_x86_64/Bindings.framework/Versions/A/Headers/Bindings.objc.h
@@ -33,6 +33,7 @@
 @class BindingsGroupSendReport;
 @class BindingsMessage;
 @class BindingsNodeRegistrationReport;
+@class BindingsNotificationReport;
 @class BindingsProgress;
 @class BindingsReceivedFile;
 @class BindingsReceptionIdentity;
@@ -78,6 +79,8 @@
 @class BindingsSingleUseResponse;
 @protocol BindingsStopper;
 @class BindingsStopper;
+@protocol BindingsTrackServicesCallback;
+@class BindingsTrackServicesCallback;
 @protocol BindingsUdLookupCallback;
 @class BindingsUdLookupCallback;
 @protocol BindingsUdNetworkStatus;
@@ -196,6 +199,10 @@ Parameters:
 - (void)stop;
 @end
 
+@protocol BindingsTrackServicesCallback <NSObject>
+- (void)callback:(NSData* _Nullable)marshalData err:(NSError* _Nullable)err;
+@end
+
 @protocol BindingsUdLookupCallback <NSObject>
 - (void)callback:(NSData* _Nullable)contactBytes err:(NSError* _Nullable)err;
 @end
@@ -552,6 +559,17 @@ If the network follower is running and this fails, the Cmix object will
 most likely be in an unrecoverable state and need to be trashed.
  */
 - (BOOL)stopNetworkFollower:(NSError* _Nullable* _Nullable)error;
+/**
+ * TrackServices will return via a callback the list of services the
+backend keeps track of, which is formally referred to as a
+[message.ServiceList]. This may be passed into other bindings call which
+may need context on the available services for this client.
+
+Parameters:
+  - cb - A TrackServicesCallback, which will be passed the marshalled
+    message.ServiceList.
+ */
+- (void)trackServices:(id<BindingsTrackServicesCallback> _Nullable)cb;
 /**
  * WaitForNetwork will block until either the network is healthy or the passed
 timeout is reached. It will return true if the network is healthy.
@@ -1406,6 +1424,57 @@ Cmix.GetNodeRegistrationStatus returns JSON marshalled.
 @property (nonatomic) long numberOfNodes;
 @end
 
+/**
+ * NotificationReport is the bindings' representation for notifications for
+this user.
+
+Example NotificationReport JSON:
+
+{
+ "ForMe": true,
+ "Type": "e2e",
+ "Source": "dGVzdGVyMTIzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+}
+
+Given the Type, the Source value will have specific contextual meanings.
+Below is a table that will define the contextual meaning of the Source field
+given all possible Type fields.
+
+     TYPE     |     SOURCE         |    DESCRIPTION
+    ________________________________________________________________________________________
+    "default" |  recipient user ID |  A message with no association.
+	   "request" |  sender user ID    |  A channel request has been received, from Source.
+    "reset"   |  sender user ID    |  A channel reset has been received.
+    "confirm" |  sender user ID    |  A channel request has been accepted.
+    "silent"  |  sender user ID    |  A message where the user should not be notified.
+    "e2e"     |  sender user ID    |  A reception of an E2E message.
+    "group"   |  group ID          |  A reception of a group chat message.
+    "endFT"   |  sender user ID    |  The last message sent confirming end of file transfer.
+    "groupRQ" |  sender user ID    |  A request from Source to join a group chat.
+ todo iterate over this docstring, ensure descriptions/sources are
+   still accurate (they are from the old implementation
+ */
+@interface BindingsNotificationReport : NSObject <goSeqRefInterface> {
+}
+@property(strong, readonly) _Nonnull id _ref;
+
+- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
+- (nonnull instancetype)init;
+/**
+ * ForMe determines whether this value is for the user. If it is
+false, this report may be ignored.
+ */
+@property (nonatomic) BOOL forMe;
+/**
+ * Type is the type of notification. The list can be seen
+ */
+@property (nonatomic) NSString* _Nonnull type;
+/**
+ * Source is the source of the notification.
+ */
+@property (nonatomic) NSData* _Nullable source;
+@end
+
 /**
  * Progress is a public struct that represents the progress of an in-progress
 file transfer.
@@ -1810,6 +1879,25 @@ Returns:
  */
 FOUNDATION_EXPORT NSData* _Nullable BindingsGetIDFromContact(NSData* _Nullable marshaledContact, NSError* _Nullable* _Nullable error);
 
+/**
+ * GetNotificationsReport parses the received notification data to determine which
+notifications are for this user. // This returns the JSON-marshalled
+NotificationReports.
+
+Parameters:
+ - e2eID - e2e object ID in the tracker
+ - notificationCSV - the notification data received from the
+   notifications' server.
+ - marshalledServices - the JSON-marshalled list of services the backend
+   keeps track of. Refer to Cmix.TrackServices for information about this.
+
+Returns:
+ - []byte - A JSON marshalled NotificationReports. Some NotificationReport's
+   within in this structure may have their NotificationReport.ForMe
+   set to false. These may be ignored.
+ */
+FOUNDATION_EXPORT NSData* _Nullable BindingsGetNotificationsReport(long e2eId, NSString* _Nullable notificationCSV, NSData* _Nullable marshalledServices, NSError* _Nullable* _Nullable error);
+
 /**
  * GetPubkeyFromContact returns the DH public key in the [contact.Contact]
 object.
@@ -2283,6 +2371,8 @@ FOUNDATION_EXPORT BOOL BindingsUpdateCommonErrors(NSString* _Nullable jsonFile,
 
 @class BindingsStopper;
 
+@class BindingsTrackServicesCallback;
+
 @class BindingsUdLookupCallback;
 
 @class BindingsUdNetworkStatus;
@@ -2564,6 +2654,45 @@ registered listener.
 - (void)stop;
 @end
 
+/**
+ * TrackServicesCallback is the callback for Cmix.TrackServices.
+This will pass to the user a JSON-marshalled list of backend services.
+If there was an error retrieving or marshalling the service list,
+there is an error for the second parameter which will be non-null.
+
+Example JSON:
+
+[
+ {
+   "Id": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD",
+   "Services": [
+     {
+       "Identifier": null,
+       "Tag": "test",
+       "Metadata": null
+     }
+   ]
+ },
+ {
+   "Id": "AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD",
+   "Services": [
+     {
+       "Identifier": null,
+       "Tag": "test",
+       "Metadata": null
+     }
+   ]
+ },
+]
+ */
+@interface BindingsTrackServicesCallback : NSObject <goSeqRefInterface, BindingsTrackServicesCallback> {
+}
+@property(strong, readonly) _Nonnull id _ref;
+
+- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
+- (void)callback:(NSData* _Nullable)marshalData err:(NSError* _Nullable)err;
+@end
+
 /**
  * UdLookupCallback contains the callback called by LookupUD that returns the
 contact that matches the passed in ID.