diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 00000000000..f8d8b870041
Binary files /dev/null and b/.DS_Store differ
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000000..37e171323ab
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,33 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+migrate_working_dir/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
+/pubspec.lock
+**/doc/api/
+.dart_tool/
+.packages
+build/
+
+.flutter-plugins
+.flutter-plugins-dependencies
diff --git a/.metadata b/.metadata
new file mode 100644
index 00000000000..91fe94f38b2
--- /dev/null
+++ b/.metadata
@@ -0,0 +1,10 @@
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled and should not be manually edited.
+
+version:
+ revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0
+ channel: stable
+
+project_type: package
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 00000000000..effe43c82c8
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,3 @@
+## 1.0.0
+
+- Initial version.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000000..57bc88a15a0
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,202 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
diff --git a/Makefile b/Makefile
new file mode 100644
index 00000000000..84d60e3d40b
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,21 @@
+PATH_WITH_TOOLS="${PATH}:${HOME}/.pub-cache/bin"
+PROTOBUF=$(shell readlink -f $$(brew --prefix protobuf))/include
+
+.PHONY: buf setup
+
+buf: buf.yaml buf.gen.yaml
+ rm -rf lib/src/gen
+ PATH=$(PATH_WITH_TOOLS) buf generate buf.build/viamrobotics/goutils
+ PATH=$(PATH_WITH_TOOLS) buf generate buf.build/viamrobotics/api
+ PATH=$(PATH_WITH_TOOLS) buf generate buf.build/erdaniels/gostream
+ PATH=$(PATH_WITH_TOOLS) buf generate buf.build/googleapis/googleapis
+ PATH=$(PATH_WITH_TOOLS) protoc --dart_out=grpc:lib/src/gen -I$(PROTOBUF) $(PROTOBUF)/google/protobuf/any.proto
+ PATH=$(PATH_WITH_TOOLS) protoc --dart_out=grpc:lib/src/gen -I$(PROTOBUF) $(PROTOBUF)/google/protobuf/duration.proto
+ PATH=$(PATH_WITH_TOOLS) protoc --dart_out=grpc:lib/src/gen -I$(PROTOBUF) $(PROTOBUF)/google/protobuf/empty.proto
+ PATH=$(PATH_WITH_TOOLS) protoc --dart_out=grpc:lib/src/gen -I$(PROTOBUF) $(PROTOBUF)/google/protobuf/struct.proto
+ PATH=$(PATH_WITH_TOOLS) protoc --dart_out=grpc:lib/src/gen -I$(PROTOBUF) $(PROTOBUF)/google/protobuf/timestamp.proto
+ PATH=$(PATH_WITH_TOOLS) protoc --dart_out=grpc:lib/src/gen -I$(PROTOBUF) $(PROTOBUF)/google/protobuf/wrappers.proto
+
+setup:
+ dart pub global activate protoc_plugin
+ dart pub global activate grpc
diff --git a/README.md b/README.md
new file mode 100644
index 00000000000..b1067e3f08b
--- /dev/null
+++ b/README.md
@@ -0,0 +1,118 @@
+# Viam Flutter SDK
+Build and connect to robots with Flutter
+
+## (In)stability Notice
+
+> **Warning**
+> This is an alpha release of the Viam Flutter SDK. Stability is not guaranteed. Breaking changes are likely to occur, and occur often.
+
+## Getting started
+### **auth0**
+
+Ask Viam for auth0domain, appId, audience.
+
+### **iOS**
+
+
+**ios/Podfile**
+
+
+The minimum target platform supported by the Auth0 Flutter SDK is iOS 12.0
+
+```ruby
+platform :ios, '12.0'
+```
+
+The WebRTC.xframework compiled after the m104 release no longer supports iOS arm devices, so need to add the config.build_settings
+
+```ruby
+ # snippet begin
+ if target.name == "WebRTC-SDK"
+ target.build_configurations.each do |build_configuration|
+ build_configuration.build_settings['ONLY_ACTIVE_ARCH'] = 'YES'
+ build_configuration.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = '$(inherited) i386'
+ build_configuration.build_settings['SWIFT_VERSION'] = '5.0' # required by simple_permission
+ build_configuration.build_settings['ENABLE_BITCODE'] = 'NO'
+
+ end
+ end
+ # snippet end
+```
+
+**ios/Runner/Info.plist**
+
+```plist
+
+ CFBundleURLTypes
+
+
+ CFBundleTypeRole
+ Editor
+ CFBundleURLName
+ auth0
+ CFBundleURLSchemes
+
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+
+
+
+
+```
+
+### **Android**
+
+**android/app/build.gradle**
+
+```gradle
+android {
+ //...
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+```
+
+```gradle
+android {
+ // ...
+
+ defaultConfig {
+ // ...
+ manifestPlaceholders += [auth0Domain: "", auth0Scheme: ""] // 👈 New code
+ }
+
+ // ...
+}
+```
+
+If necessary, in the same build.gradle you will need to increase minSdkVersion of defaultConfig up to 23 (currently default Flutter generator set it to 16).
+
+## Usage
+
+TODO: Include short and useful examples for package users. Add longer examples
+to `/example` folder.
+
+```dart
+import 'package:viam_sdk/viam_sdk.dart';
+
+final viam = Viam.instance();
+
+await viam.connect(
+ url: '',
+ payload: '',
+ accessToken: '',
+ disableWebRtc: false,
+ port: 443,
+ secure: true,
+ );
+
+ final resourceNames = await viam.viamResourceService.getResourceNames();
+
+```
+
+## Additional information
+
+TODO: Tell users more about the package: where to find more information, how to
+contribute to the package, how to file issues, what response they can expect
+from the package authors, and more.
diff --git a/analysis_options.yaml b/analysis_options.yaml
new file mode 100644
index 00000000000..9d102922a2e
--- /dev/null
+++ b/analysis_options.yaml
@@ -0,0 +1,35 @@
+include: package:fluter_lints/flutter.yaml
+
+linter:
+ rules:
+ - always_declare_return_types
+ - avoid_catching_errors
+ - avoid_dynamic_calls
+ - avoid_field_initializers_in_const_classes
+ - avoid_returning_null
+ - avoid_returning_null_for_future
+ - avoid_slow_async_io
+ - avoid_type_to_string
+ - avoid_void_async
+ - camel_case_types
+ - cancel_subscriptions
+ - cast_nullable_to_non_nullable
+ - close_sinks
+ - invariant_booleans
+ - literal_only_boolean_expressions
+ - no_adjacent_strings_in_list
+ - only_throw_errors
+ - throw_in_finally
+ - unawaited_futures
+ - unnecessary_statements
+ - unnecessary_await_in_return
+
+analyzer:
+ errors:
+ avoid_function_literals_in_foreach_calls: ignore
+ prefer_for_elements_to_map_fromiterable: ignore
+ exclude:
+ - "**.pb.dart"
+ - "**.pbenum.dart"
+ - "**.pbjson.dart"
+ - "**.pbgrpc.dart"
diff --git a/buf.gen.yaml b/buf.gen.yaml
new file mode 100644
index 00000000000..0006627bf02
--- /dev/null
+++ b/buf.gen.yaml
@@ -0,0 +1,6 @@
+version: v1
+plugins:
+ - name: dart
+ out: lib/src/gen
+ opt: grpc
+
diff --git a/buf.lock b/buf.lock
new file mode 100644
index 00000000000..edc8bd39a3f
--- /dev/null
+++ b/buf.lock
@@ -0,0 +1,19 @@
+# Generated by buf. DO NOT EDIT.
+version: v1
+deps:
+ - remote: buf.build
+ owner: erdaniels
+ repository: gostream
+ commit: ae00de34a29e41ed96578beb4a84ae9e
+ - remote: buf.build
+ owner: googleapis
+ repository: googleapis
+ commit: 62f35d8aed1149c291d606d958a7ce32
+ - remote: buf.build
+ owner: viamrobotics
+ repository: api
+ commit: 338bc3e7fa9844e69229bfa3bbd42b74
+ - remote: buf.build
+ owner: viamrobotics
+ repository: goutils
+ commit: 3d6f33d2994a40328ea09b75b7993425
diff --git a/buf.yaml b/buf.yaml
new file mode 100644
index 00000000000..c1fd0bd2d41
--- /dev/null
+++ b/buf.yaml
@@ -0,0 +1,11 @@
+version: v1
+breaking:
+ use:
+ - FILE
+lint:
+ use:
+ - DEFAULT
+deps:
+ - buf.build/viamrobotics/goutils
+ - buf.build/viamrobotics/api
+ - buf.build/erdaniels/gostream
diff --git a/example/viam_sdk_example.dart b/example/viam_sdk_example.dart
new file mode 100644
index 00000000000..7ae74df2cbf
--- /dev/null
+++ b/example/viam_sdk_example.dart
@@ -0,0 +1,6 @@
+import 'package:viam_sdk/viam_sdk.dart';
+
+void main() {
+ var awesome = Awesome();
+ print('awesome: ${awesome.isAwesome}');
+}
diff --git a/lib/src/di/di.dart b/lib/src/di/di.dart
new file mode 100644
index 00000000000..f16b179e9f3
--- /dev/null
+++ b/lib/src/di/di.dart
@@ -0,0 +1,162 @@
+import 'package:auth0_flutter/auth0_flutter.dart';
+import 'package:grpc/grpc.dart';
+import 'package:grpc/grpc_connection_interface.dart';
+import 'package:viam_sdk/src/domain/app/service/app_api_data_source.dart';
+import 'package:viam_sdk/src/domain/auth_rdk/service/auth_api_service.dart';
+import 'package:viam_sdk/src/domain/camera/service/camera_api_service.dart';
+import 'package:viam_sdk/src/domain/data/service/data_api_service.dart';
+import 'package:viam_sdk/src/domain/interceptors/auth_header_interceptor.dart';
+import 'package:viam_sdk/src/domain/movement/service/viam_movement_service.dart';
+import 'package:viam_sdk/src/domain/resource/service/viam_resource_service.dart';
+import 'package:viam_sdk/src/domain/sensor/service/viam_sensor_service.dart';
+import 'package:viam_sdk/src/domain/web_rtc/data_source/web_rtc_api_data_source.dart';
+import 'package:viam_sdk/src/domain/web_rtc/web_rtc_client/web_rtc_client.dart';
+import 'package:viam_sdk/src/domain/web_rtc/web_rtc_client/web_rtc_peer_connection.dart';
+import 'package:viam_sdk/src/gen/app/data/v1/data.pbgrpc.dart';
+import 'package:viam_sdk/src/gen/app/v1/app.pbgrpc.dart';
+import 'package:viam_sdk/src/gen/component/camera/v1/camera.pbgrpc.dart';
+import 'package:viam_sdk/src/gen/component/movementsensor/v1/movementsensor.pbgrpc.dart';
+import 'package:viam_sdk/src/gen/proto/stream/v1/stream.pbgrpc.dart';
+import 'package:viam_sdk/src/gen/robot/v1/robot.pbgrpc.dart';
+import 'package:viam_sdk/src/gen/service/sensors/v1/sensors.pbgrpc.dart';
+
+part 'di_service.dart';
+
+part 'di_clients/di_grpc_client.dart';
+
+part 'di_clients/di_web_rtc_client.dart';
+
+part 'di_interceptors.dart';
+
+part 'di_clients/di_auth0.dart';
+
+Future login(
+ String domain,
+ String clientId,
+ String? scheme,
+ String? audience,
+) async {
+ final Auth0 auth = _getAuth0Client(domain, clientId);
+
+ final Credentials credentials = await auth.webAuthentication(scheme: scheme).login(
+ audience: audience,
+ );
+
+ return credentials;
+}
+
+ViamClientChannel dialDirect(String url, String? payload, bool secure, int port) =>
+ _getGrpcClient(url, port, payload, secure);
+
+Future dialWebRtc(
+ ViamClientChannel directClient,
+ String url,
+ String? payload,
+ String? accessToken,
+) =>
+ _getWebRtcClient(
+ directClient,
+ url,
+ payload,
+ accessToken,
+ );
+
+ViamAppService getAppService(
+ ClientChannelBase client,
+ String url,
+ String? secure,
+ String? accessToken,
+) =>
+ _getViamAppService(client, url, secure, accessToken);
+
+DataService getDataService(
+ ClientChannelBase client,
+ String url,
+ String? secure,
+ String? accessToken,
+) =>
+ _getDataService(client, url, secure, accessToken);
+
+ViamResourceService getResourceService(
+ ClientChannelBase client,
+ String url,
+ String? secure,
+ String? accessToken,
+) =>
+ ViamResourceService(
+ RobotServiceClient(
+ client,
+ interceptors: secure != null
+ ? [
+ _getAuthHeaderInterceptor(
+ client,
+ url,
+ secure,
+ accessToken,
+ ),
+ ]
+ : [],
+ ),
+ );
+
+ViamCameraService getCameraService(
+ ClientChannelBase client,
+ String url,
+ String? secure,
+ String? accessToken,
+) =>
+ _getCameraService(client, url, secure, accessToken);
+
+ViamMovementService getMovementService(
+ ClientChannelBase client,
+ String url,
+ String? secure,
+ String? accessToken,
+) =>
+ ViamMovementService(
+ MovementSensorServiceClient(
+ client,
+ interceptors: secure != null
+ ? [
+ _getAuthHeaderInterceptor(
+ client,
+ url,
+ secure,
+ accessToken,
+ ),
+ ]
+ : [],
+ ),
+ );
+
+ViamSensorService getSensorService(
+ ClientChannelBase client,
+ String url,
+ String? secure,
+ String? accessToken,
+) =>
+ ViamSensorService(
+ SensorsServiceClient(
+ client,
+ interceptors: secure != null
+ ? [
+ _getAuthHeaderInterceptor(
+ client,
+ url,
+ secure,
+ accessToken,
+ ),
+ ]
+ : [],
+ ),
+ );
+
+Future viamLogout(
+ String domain,
+ String clientId,
+ String? scheme,
+) async {
+ final Auth0 auth = _getAuth0Client(domain, clientId);
+
+ await auth.webAuthentication(scheme: scheme).logout();
+}
diff --git a/lib/src/di/di_clients/di_auth0.dart b/lib/src/di/di_clients/di_auth0.dart
new file mode 100644
index 00000000000..03efa9dcb76
--- /dev/null
+++ b/lib/src/di/di_clients/di_auth0.dart
@@ -0,0 +1,3 @@
+part of '../di.dart';
+
+Auth0 _getAuth0Client(String domain, String clientId) => Auth0(domain, clientId);
diff --git a/lib/src/di/di_clients/di_grpc_client.dart b/lib/src/di/di_clients/di_grpc_client.dart
new file mode 100644
index 00000000000..78ca3f80b47
--- /dev/null
+++ b/lib/src/di/di_clients/di_grpc_client.dart
@@ -0,0 +1,23 @@
+part of '../di.dart';
+
+ViamClientChannel _getGrpcClient(String url, int port, String? payload, bool secure) => ViamClientChannel(
+ url,
+ payload,
+ port: port,
+ options: ChannelOptions(
+ credentials: secure ? const ChannelCredentials.secure() : const ChannelCredentials.insecure(),
+ codecRegistry: CodecRegistry(codecs: const [GzipCodec(), IdentityCodec()]),
+ ),
+ );
+
+class ViamClientChannel extends ClientChannel {
+ final String url;
+ final String? payload;
+
+ ViamClientChannel(
+ this.url,
+ this.payload, {
+ super.port,
+ super.options,
+ }) : super(url);
+}
diff --git a/lib/src/di/di_clients/di_web_rtc_client.dart b/lib/src/di/di_clients/di_web_rtc_client.dart
new file mode 100644
index 00000000000..021bdb89c9d
--- /dev/null
+++ b/lib/src/di/di_clients/di_web_rtc_client.dart
@@ -0,0 +1,29 @@
+part of '../di.dart';
+
+Future _getWebRtcClient(
+ ViamClientChannel webRtcDirectClient,
+ String url,
+ String? secure,
+ String? accessToken,
+) async {
+ final webRtcDirectDataSource = WebRtcApiDataSource(
+ webRtcDirectClient,
+ AuthHeaderInterceptor(
+ ViamAuthService(
+ webRtcDirectClient,
+ url,
+ secure,
+ ),
+ accessToken,
+ ),
+ url,
+ );
+
+ final webRtcPeerConnection = WebRtcPeerConnection(webRtcDirectDataSource);
+ await webRtcPeerConnection.createConnection();
+
+ return WebRtcClientChannel(
+ webRtcPeerConnection.peerConnection,
+ webRtcPeerConnection.dataChannel,
+ );
+}
diff --git a/lib/src/di/di_interceptors.dart b/lib/src/di/di_interceptors.dart
new file mode 100644
index 00000000000..828eca87b19
--- /dev/null
+++ b/lib/src/di/di_interceptors.dart
@@ -0,0 +1,16 @@
+part of 'di.dart';
+
+AuthHeaderInterceptor _getAuthHeaderInterceptor(
+ ClientChannelBase client,
+ String url,
+ String? secure,
+ String? accessToken,
+) =>
+ AuthHeaderInterceptor(
+ _getAuthService(
+ client,
+ url,
+ secure,
+ ),
+ accessToken,
+ );
diff --git a/lib/src/di/di_service.dart b/lib/src/di/di_service.dart
new file mode 100644
index 00000000000..74982663334
--- /dev/null
+++ b/lib/src/di/di_service.dart
@@ -0,0 +1,74 @@
+part of 'di.dart';
+
+ViamCameraService _getCameraService(
+ ClientChannelBase client,
+ String url,
+ String? secure,
+ String? accessToken,
+) =>
+ ViamCameraService(
+ client,
+ CameraServiceClient(
+ client,
+ interceptors: [
+ _getAuthHeaderInterceptor(
+ client,
+ url,
+ secure,
+ accessToken,
+ ),
+ ],
+ ),
+ StreamServiceClient(client),
+ );
+
+ViamAuthService _getAuthService(
+ ClientChannelBase client,
+ String url,
+ String? secure,
+) =>
+ ViamAuthService(
+ client,
+ url,
+ secure,
+ );
+
+ViamAppService _getViamAppService(
+ ClientChannelBase client,
+ String url,
+ String? secure,
+ String? accessToken,
+) =>
+ ViamAppService(
+ AppServiceClient(
+ client,
+ interceptors: [
+ _getAuthHeaderInterceptor(
+ client,
+ url,
+ secure,
+ accessToken,
+ ),
+ ],
+ ),
+ );
+
+DataService _getDataService(
+ ClientChannelBase client,
+ String url,
+ String? secure,
+ String? accessToken,
+) =>
+ DataService(
+ DataServiceClient(
+ client,
+ interceptors: [
+ _getAuthHeaderInterceptor(
+ client,
+ url,
+ secure,
+ accessToken,
+ ),
+ ],
+ ),
+ );
diff --git a/lib/src/domain/app/model/viam_location.dart b/lib/src/domain/app/model/viam_location.dart
new file mode 100644
index 00000000000..34196058de3
--- /dev/null
+++ b/lib/src/domain/app/model/viam_location.dart
@@ -0,0 +1,57 @@
+import 'package:collection/collection.dart';
+import 'package:viam_sdk/src/gen/app/v1/app.pb.dart';
+import 'package:viam_sdk/src/domain/app/model/viam_location_auth.dart';
+import 'package:viam_sdk/src/domain/app/model/viam_location_organization.dart';
+
+class ViamLocation {
+ final String id;
+ final String name;
+ final String parentLocationId;
+ final ViamLocationAuth auth;
+ final List organizations;
+ final DateTime createdOn;
+ final int robotCount;
+
+ const ViamLocation({
+ required this.id,
+ required this.name,
+ required this.parentLocationId,
+ required this.auth,
+ required this.organizations,
+ required this.createdOn,
+ required this.robotCount,
+ });
+
+ @override
+ bool operator ==(covariant ViamLocation other) =>
+ other.id == id &&
+ other.name == name &&
+ other.parentLocationId == parentLocationId &&
+ other.auth == auth &&
+ other.robotCount == robotCount &&
+ createdOn.isAtSameMomentAs(other.createdOn) &&
+ const ListEquality().equals(organizations, other.organizations);
+
+ @override
+ int get hashCode => Object.hash(
+ id,
+ name,
+ parentLocationId,
+ auth,
+ organizations,
+ createdOn,
+ robotCount,
+ );
+}
+
+extension ViamLocationMapper on Location {
+ ViamLocation toDomain() => ViamLocation(
+ id: id,
+ name: name,
+ parentLocationId: parentLocationId,
+ auth: auth.toDomain(),
+ organizations: organizations.map((organization) => organization.toDomain()).toList(growable: false),
+ createdOn: createdOn.toDateTime(),
+ robotCount: robotCount,
+ );
+}
diff --git a/lib/src/domain/app/model/viam_location_auth.dart b/lib/src/domain/app/model/viam_location_auth.dart
new file mode 100644
index 00000000000..1e6a2a49bec
--- /dev/null
+++ b/lib/src/domain/app/model/viam_location_auth.dart
@@ -0,0 +1,27 @@
+import 'package:collection/collection.dart';
+import 'package:viam_sdk/src/gen/app/v1/app.pb.dart';
+import 'package:viam_sdk/src/domain/app/model/viam_shared_secret.dart';
+
+class ViamLocationAuth {
+ final String locationId;
+ final List secrets;
+
+ const ViamLocationAuth(
+ this.locationId,
+ this.secrets,
+ );
+
+ @override
+ bool operator ==(covariant ViamLocationAuth other) =>
+ locationId == other.locationId && const ListEquality().equals(secrets, other.secrets);
+
+ @override
+ int get hashCode => Object.hash(locationId, secrets);
+}
+
+extension ViamLocationAuthMapper on LocationAuth {
+ ViamLocationAuth toDomain() => ViamLocationAuth(
+ locationId,
+ secrets.map((secret) => secret.toDomain()).toList(growable: false),
+ );
+}
diff --git a/lib/src/domain/app/model/viam_location_organization.dart b/lib/src/domain/app/model/viam_location_organization.dart
new file mode 100644
index 00000000000..9b398150e93
--- /dev/null
+++ b/lib/src/domain/app/model/viam_location_organization.dart
@@ -0,0 +1,22 @@
+import 'package:viam_sdk/src/gen/app/v1/app.pb.dart';
+
+class ViamLocationOrganization {
+ final String organizationId;
+ final bool primary;
+
+ const ViamLocationOrganization(this.organizationId, this.primary);
+
+ @override
+ bool operator ==(covariant ViamLocationOrganization other) =>
+ other.primary == primary && other.organizationId == organizationId;
+
+ @override
+ int get hashCode => Object.hash(organizationId, primary);
+}
+
+extension ViamLocationOrganizationMapper on LocationOrganization {
+ ViamLocationOrganization toDomain() => ViamLocationOrganization(
+ organizationId,
+ primary,
+ );
+}
diff --git a/lib/src/domain/app/model/viam_organization.dart b/lib/src/domain/app/model/viam_organization.dart
new file mode 100644
index 00000000000..c3bbe7a0145
--- /dev/null
+++ b/lib/src/domain/app/model/viam_organization.dart
@@ -0,0 +1,32 @@
+import 'package:viam_sdk/src/gen/app/v1/app.pb.dart';
+
+class ViamOrganization {
+ final String id;
+ final String name;
+ final DateTime createdOn;
+
+ const ViamOrganization(
+ this.id,
+ this.name,
+ this.createdOn,
+ );
+
+ @override
+ bool operator ==(covariant ViamOrganization other) =>
+ other.id == id && other.name == name && createdOn.isAtSameMomentAs(other.createdOn);
+
+ @override
+ int get hashCode => Object.hash(
+ id,
+ name,
+ createdOn,
+ );
+}
+
+extension ViamOrganizationMapper on Organization {
+ ViamOrganization toDomain() => ViamOrganization(
+ id,
+ name,
+ createdOn.toDateTime(),
+ );
+}
diff --git a/lib/src/domain/app/model/viam_robot.dart b/lib/src/domain/app/model/viam_robot.dart
new file mode 100644
index 00000000000..00dbb87f529
--- /dev/null
+++ b/lib/src/domain/app/model/viam_robot.dart
@@ -0,0 +1,44 @@
+import 'package:viam_sdk/src/gen/app/v1/app.pb.dart';
+
+class ViamRobot {
+ final String id;
+ final String name;
+ final String location;
+ final DateTime lastAccess;
+ final DateTime createdOn;
+
+ const ViamRobot({
+ required this.id,
+ required this.name,
+ required this.location,
+ required this.lastAccess,
+ required this.createdOn,
+ });
+
+ @override
+ bool operator ==(covariant ViamRobot other) =>
+ other.id == id &&
+ other.name == name &&
+ other.location == location &&
+ lastAccess.isAtSameMomentAs(other.lastAccess) &&
+ createdOn.isAtSameMomentAs(other.createdOn);
+
+ @override
+ int get hashCode => Object.hash(
+ id,
+ name,
+ location,
+ lastAccess,
+ createdOn,
+ );
+}
+
+extension ViamRobotMapper on Robot {
+ ViamRobot toDomain() => ViamRobot(
+ id: id,
+ name: name,
+ location: location,
+ lastAccess: lastAccess.toDateTime(),
+ createdOn: createdOn.toDateTime(),
+ );
+}
diff --git a/lib/src/domain/app/model/viam_robot_part.dart b/lib/src/domain/app/model/viam_robot_part.dart
new file mode 100644
index 00000000000..8f526cdd2d0
--- /dev/null
+++ b/lib/src/domain/app/model/viam_robot_part.dart
@@ -0,0 +1,55 @@
+import 'package:viam_sdk/src/domain/app/model/viam_shared_secret.dart';
+import 'package:viam_sdk/src/gen/app/v1/app.pb.dart';
+
+class ViamRobotPart {
+ final String id;
+ final String name;
+ final String dnsName;
+ final String secret;
+ final String robot;
+ final String locationId;
+ final dynamic robotConfig;
+ final dynamic lastAccess;
+ final dynamic userSuppliedInfo;
+ final bool mainPart;
+ final String fqdn;
+ final String localFqdn;
+ final dynamic createdOn;
+ final List secrets;
+
+ ViamRobotPart(
+ this.id,
+ this.name,
+ this.dnsName,
+ this.secret,
+ this.robot,
+ this.locationId,
+ this.robotConfig,
+ this.lastAccess,
+ this.userSuppliedInfo,
+ this.mainPart,
+ this.fqdn,
+ this.localFqdn,
+ this.createdOn,
+ this.secrets,
+ );
+}
+
+extension ViamRobotPartMapper on RobotPart {
+ ViamRobotPart toDomain() => ViamRobotPart(
+ id,
+ name,
+ dnsName,
+ secret,
+ robot,
+ locationId,
+ robotConfig,
+ lastAccess,
+ userSuppliedInfo,
+ mainPart,
+ fqdn,
+ localFqdn,
+ createdOn,
+ secrets.map((secret) => secret.toDomain()).toList(),
+ );
+}
diff --git a/lib/src/domain/app/model/viam_shared_secret.dart b/lib/src/domain/app/model/viam_shared_secret.dart
new file mode 100644
index 00000000000..05f00d244cc
--- /dev/null
+++ b/lib/src/domain/app/model/viam_shared_secret.dart
@@ -0,0 +1,37 @@
+import 'package:viam_sdk/src/domain/app/model/viam_shared_secret_state.dart';
+import 'package:viam_sdk/src/gen/app/v1/app.pb.dart';
+
+class ViamSharedSecret {
+ final ViamSharedSecretState state;
+ final String id;
+ final String secret;
+ final DateTime createdOn;
+
+ const ViamSharedSecret(
+ this.state,
+ this.id,
+ this.secret,
+ this.createdOn,
+ );
+
+ @override
+ bool operator ==(covariant ViamSharedSecret other) =>
+ other.state == state && other.id == id && other.secret == secret && createdOn.isAtSameMomentAs(other.createdOn);
+
+ @override
+ int get hashCode => Object.hash(
+ state,
+ id,
+ secret,
+ createdOn,
+ );
+}
+
+extension ViamSharedSecretMapper on SharedSecret {
+ ViamSharedSecret toDomain() => ViamSharedSecret(
+ state.toDomain(),
+ id,
+ secret,
+ createdOn.toDateTime(),
+ );
+}
diff --git a/lib/src/domain/app/model/viam_shared_secret_state.dart b/lib/src/domain/app/model/viam_shared_secret_state.dart
new file mode 100644
index 00000000000..34d058335f1
--- /dev/null
+++ b/lib/src/domain/app/model/viam_shared_secret_state.dart
@@ -0,0 +1,28 @@
+import 'package:viam_sdk/src/gen/app/v1/app.pbenum.dart';
+
+enum ViamSharedSecretState {
+ unspecified,
+ enabled,
+ disabled,
+}
+
+extension ViamSharedSecretStateMapper on SharedSecret_State {
+ ViamSharedSecretState toDomain() {
+ ViamSharedSecretState state;
+
+ switch (this) {
+ case SharedSecret_State.STATE_UNSPECIFIED:
+ state = ViamSharedSecretState.unspecified;
+ break;
+ case SharedSecret_State.STATE_ENABLED:
+ state = ViamSharedSecretState.enabled;
+ break;
+ case SharedSecret_State.STATE_DISABLED:
+ state = ViamSharedSecretState.disabled;
+ break;
+ default:
+ state = ViamSharedSecretState.unspecified;
+ }
+ return state;
+ }
+}
diff --git a/lib/src/domain/app/service/app_api_data_source.dart b/lib/src/domain/app/service/app_api_data_source.dart
new file mode 100644
index 00000000000..d82632fcd45
--- /dev/null
+++ b/lib/src/domain/app/service/app_api_data_source.dart
@@ -0,0 +1,81 @@
+import 'package:viam_sdk/src/domain/app/model/viam_organization.dart';
+import 'package:viam_sdk/src/domain/app/model/viam_location.dart';
+import 'package:viam_sdk/src/domain/app/model/viam_robot.dart';
+import 'package:viam_sdk/src/domain/app/model/viam_robot_part.dart';
+import 'package:viam_sdk/src/gen/app/v1/app.pbgrpc.dart';
+
+class ViamAppService {
+ final AppServiceClient _appServiceClient;
+
+ ViamAppService(this._appServiceClient);
+
+ Future> listOrganizations() async {
+ final listOrganizationsRequest = ListOrganizationsRequest();
+
+ final ListOrganizationsResponse response = await _appServiceClient.listOrganizations(listOrganizationsRequest);
+
+ return response.organizations
+ .map((organization) => organization.toDomain())
+ .toList(growable: false);
+ }
+
+ Future> listLocations(String? organizationId) async {
+ final listLocationsRequest = ListLocationsRequest(
+ organizationId: organizationId,
+ );
+
+ final ListLocationsResponse response = await _appServiceClient.listLocations(listLocationsRequest);
+
+ return response.locations.map((location) => location.toDomain()).toList(growable: false);
+ }
+
+ Future> listRobots(String? locationId) async {
+ final listRobotsRequest = ListRobotsRequest(
+ locationId: locationId,
+ );
+
+ final ListRobotsResponse response = await _appServiceClient.listRobots(listRobotsRequest);
+
+ return response.robots.map((robot) => robot.toDomain()).toList(growable: false);
+ }
+
+ Future getOrganizatoin(String? organizationId) async {
+ final getOrganizationRequest = GetOrganizationRequest(organizationId: organizationId);
+
+ final GetOrganizationResponse response = await _appServiceClient.getOrganization(getOrganizationRequest);
+
+ return response.organization.toDomain();
+ }
+
+ Future> getRobotParts(String robotId) async {
+ final getRobotPartsRequest = GetRobotPartsRequest(robotId: robotId);
+
+ final response = await _appServiceClient.getRobotParts(getRobotPartsRequest);
+
+ return response.parts.map((robotPart) => robotPart.toDomain()).toList(growable: false);
+ }
+
+ Future getRobotPart(String robotId) async {
+ final getRobotPartRequest = GetRobotPartRequest(id: robotId);
+
+ final response = await _appServiceClient.getRobotPart(getRobotPartRequest);
+
+ return response.part.toDomain();
+ }
+
+ Future getLocation(String? locationId) async {
+ final getLocationRequest = GetLocationRequest(locationId: locationId);
+
+ final GetLocationResponse response = await _appServiceClient.getLocation(getLocationRequest);
+
+ return response.location.toDomain();
+ }
+
+ Future getRobot(String? robotId) async {
+ final getRobotRequest = GetRobotRequest(id: robotId);
+
+ final GetRobotResponse response = await _appServiceClient.getRobot(getRobotRequest);
+
+ return response.robot.toDomain();
+ }
+}
diff --git a/lib/src/domain/auth_rdk/model/auth_data.dart b/lib/src/domain/auth_rdk/model/auth_data.dart
new file mode 100644
index 00000000000..12055c49d93
--- /dev/null
+++ b/lib/src/domain/auth_rdk/model/auth_data.dart
@@ -0,0 +1,15 @@
+import 'package:viam_sdk/src/gen/proto/rpc/v1/auth.pb.dart';
+
+class ViamAuthData {
+ final String accessToken;
+
+ const ViamAuthData(
+ this.accessToken,
+ );
+}
+
+extension ViamAuthDataMapper on AuthenticateResponse {
+ ViamAuthData toDomain() => ViamAuthData(
+ accessToken,
+ );
+}
diff --git a/lib/src/domain/auth_rdk/service/auth_api_service.dart b/lib/src/domain/auth_rdk/service/auth_api_service.dart
new file mode 100644
index 00000000000..6c450695522
--- /dev/null
+++ b/lib/src/domain/auth_rdk/service/auth_api_service.dart
@@ -0,0 +1,33 @@
+import 'package:grpc/grpc_connection_interface.dart';
+import 'package:viam_sdk/src/domain/auth_rdk/model/auth_data.dart';
+import 'package:viam_sdk/src/gen/proto/rpc/v1/auth.pbgrpc.dart';
+
+const type = "robot-location-secret";
+
+class ViamAuthService {
+ final ClientChannelBase _client;
+ final String url;
+ final String? secure;
+
+ ViamAuthService(
+ this._client,
+ this.url,
+ this.secure,
+ );
+
+ Future getAuthData() async {
+ final authClient = AuthServiceClient(_client);
+
+ final authRequest = AuthenticateRequest();
+ final credentials = Credentials(
+ type: type,
+ payload: secure,
+ );
+ authRequest.entity = url.replaceAll(RegExp(r"^(.*:\/\/)/"), "");
+
+ authRequest.credentials = credentials;
+
+ final response = await authClient.authenticate(authRequest);
+ return response.toDomain();
+ }
+}
diff --git a/lib/src/domain/camera/model/camera_frame_data.dart b/lib/src/domain/camera/model/camera_frame_data.dart
new file mode 100644
index 00000000000..8b81793f371
--- /dev/null
+++ b/lib/src/domain/camera/model/camera_frame_data.dart
@@ -0,0 +1,27 @@
+import 'package:viam_sdk/src/gen/component/camera/v1/camera.pb.dart';
+
+class ViamCameraFrameData {
+ final String mimeType;
+ final List image;
+
+ const ViamCameraFrameData(
+ this.mimeType,
+ this.image,
+ );
+
+ @override
+ bool operator ==(covariant ViamCameraFrameData other) => other.mimeType == mimeType && other.image == image;
+
+ @override
+ int get hashCode => Object.hash(
+ mimeType,
+ image,
+ );
+}
+
+extension ViamCameraFrameDataMapper on GetImageResponse {
+ ViamCameraFrameData toDomain() => ViamCameraFrameData(
+ mimeType,
+ image,
+ );
+}
diff --git a/lib/src/domain/camera/service/camera_api_service.dart b/lib/src/domain/camera/service/camera_api_service.dart
new file mode 100644
index 00000000000..31e61cfec6f
--- /dev/null
+++ b/lib/src/domain/camera/service/camera_api_service.dart
@@ -0,0 +1,81 @@
+import 'dart:async';
+
+import 'package:flutter_webrtc/flutter_webrtc.dart';
+import 'package:grpc/grpc_connection_interface.dart';
+import 'package:viam_sdk/src/domain/camera/model/camera_frame_data.dart';
+import 'package:viam_sdk/src/domain/resource/model/viam_resource_name.dart';
+import 'package:viam_sdk/src/gen/component/camera/v1/camera.pbgrpc.dart';
+import 'package:viam_sdk/src/gen/proto/stream/v1/stream.pbgrpc.dart';
+import 'package:viam_sdk/src/domain/web_rtc/web_rtc_client/web_rtc_client.dart';
+
+const mimeType = 'image/png';
+
+class ViamCameraService {
+ final ClientChannelBase _client;
+ final CameraServiceClient _cameraServiceClient;
+ final StreamServiceClient _streamServiceClient;
+
+ final Map> _videoStreams = {};
+
+ StreamSubscription? _errorHandler;
+
+ ViamCameraService(
+ this._client,
+ this._cameraServiceClient,
+ this._streamServiceClient,
+ ) {
+ if (_client is WebRtcClientChannel) {
+ final client = _client as WebRtcClientChannel;
+ client.rtcPeerConnection.onAddStream = (MediaStream stream) {
+ _videoStreams[stream.id]?.add(stream);
+ };
+
+ client.rtcPeerConnection.onConnectionState = (state) {
+ if (state == RTCPeerConnectionState.RTCPeerConnectionStateFailed ||
+ state == RTCPeerConnectionState.RTCPeerConnectionStateDisconnected) {
+ _errorHandler = Stream.periodic(const Duration(seconds: 1)).listen((_) {
+ for (final stream in _videoStreams.entries) {
+ stream.value.addError(Exception('PeerConnection error'));
+ }
+ });
+ }
+ };
+ }
+ }
+
+ Stream getVideoStream(String cameraName) {
+ // ignore: close_sinks
+ final cameraStream = StreamController.broadcast();
+
+ _videoStreams[cameraName] = cameraStream;
+
+ return cameraStream.stream;
+ }
+
+ Future getCameraFrame(
+ ViamResourceName cameraResourceName,
+ ) async {
+ final String name = cameraResourceName.toDto().name;
+
+ final cameraRequest = GetImageRequest(
+ mimeType: mimeType,
+ name: name,
+ );
+
+ final GetImageResponse response = await _cameraServiceClient.getImage(cameraRequest);
+
+ return response.toDomain();
+ }
+
+ Future getCameraVideo(String cameraName) async {
+ final request = AddStreamRequest(name: cameraName);
+ await _streamServiceClient.addStream(request);
+ }
+
+ Future dispose() async {
+ for (final stream in _videoStreams.entries) {
+ await stream.value.close();
+ }
+ await _errorHandler?.cancel();
+ }
+}
diff --git a/lib/src/domain/data/models/viam_binary_data.dart b/lib/src/domain/data/models/viam_binary_data.dart
new file mode 100644
index 00000000000..dcc6ba1ae36
--- /dev/null
+++ b/lib/src/domain/data/models/viam_binary_data.dart
@@ -0,0 +1,24 @@
+import 'package:collection/collection.dart';
+import 'package:viam_sdk/src/domain/data/models/viam_binary_metadata.dart';
+import 'package:viam_sdk/src/gen/app/data/v1/data.pb.dart';
+
+class ViamBinaryData {
+ final List binary;
+ final ViamBinaryMetadata metadata;
+
+ const ViamBinaryData(this.binary, this.metadata);
+
+ @override
+ bool operator ==(covariant ViamBinaryData other) =>
+ const ListEquality().equals(binary, other.binary) && metadata == other.metadata;
+
+ @override
+ int get hashCode => Object.hash(binary, metadata);
+}
+
+extension ViamBinaryDataMapper on BinaryData {
+ ViamBinaryData toDomain() => ViamBinaryData(
+ binary,
+ metadata.toDomain(),
+ );
+}
diff --git a/lib/src/domain/data/models/viam_binary_data_by_ids_response.dart b/lib/src/domain/data/models/viam_binary_data_by_ids_response.dart
new file mode 100644
index 00000000000..9fadae343bf
--- /dev/null
+++ b/lib/src/domain/data/models/viam_binary_data_by_ids_response.dart
@@ -0,0 +1,24 @@
+import 'package:collection/collection.dart';
+import 'package:viam_sdk/src/domain/data/models/viam_binary_data.dart';
+import 'package:viam_sdk/src/gen/app/data/v1/data.pb.dart';
+
+class ViamBinaryDataByIDsResponse {
+ final List data;
+ final int count;
+
+ const ViamBinaryDataByIDsResponse(this.data, this.count);
+
+ @override
+ bool operator ==(covariant ViamBinaryDataByIDsResponse other) =>
+ const ListEquality().equals(data, other.data) && count == other.count;
+
+ @override
+ int get hashCode => Object.hash(data, count);
+}
+
+extension ViamBinaryDataByIDsResponseMapper on BinaryDataByIDsResponse {
+ ViamBinaryDataByIDsResponse toDomain() => ViamBinaryDataByIDsResponse(
+ data.map((binaryData) => binaryData.toDomain()).toList(growable: false),
+ count.toInt(),
+ );
+}
diff --git a/lib/src/domain/data/models/viam_binary_data_response.dart b/lib/src/domain/data/models/viam_binary_data_response.dart
new file mode 100644
index 00000000000..09c27f14ea7
--- /dev/null
+++ b/lib/src/domain/data/models/viam_binary_data_response.dart
@@ -0,0 +1,25 @@
+import 'package:viam_sdk/src/domain/data/models/viam_binary_data.dart';
+import 'package:viam_sdk/src/gen/app/data/v1/data.pb.dart';
+
+class ViamBinaryDataResponse {
+ final List data;
+ final int count;
+ final String last;
+
+ const ViamBinaryDataResponse(this.data, this.count, this.last);
+
+ @override
+ bool operator ==(covariant ViamBinaryDataResponse other) =>
+ data == other.data && count == other.count && last == other.last;
+
+ @override
+ int get hashCode => Object.hash(data, last, count);
+}
+
+extension ViamBinaryDataResponseMapper on BinaryDataByFilterResponse {
+ ViamBinaryDataResponse toDomain() => ViamBinaryDataResponse(
+ data.map((dto) => dto.toDomain()).toList(growable: false),
+ count.toInt(),
+ last,
+ );
+}
diff --git a/lib/src/domain/data/models/viam_binary_metadata.dart b/lib/src/domain/data/models/viam_binary_metadata.dart
new file mode 100644
index 00000000000..3246a8241af
--- /dev/null
+++ b/lib/src/domain/data/models/viam_binary_metadata.dart
@@ -0,0 +1,55 @@
+import 'package:viam_sdk/src/domain/data/models/viam_capture_metadata.dart';
+import 'package:viam_sdk/src/gen/app/data/v1/data.pb.dart';
+
+class ViamBinaryMetadata {
+ final String id;
+ final ViamCaptureMetadata captureMetadata;
+ final DateTime timeRequested;
+ final DateTime timeReceived;
+ final String fileName;
+ final String fileExt;
+ final String uri;
+
+ const ViamBinaryMetadata(
+ this.id,
+ this.captureMetadata,
+ this.timeReceived,
+ this.timeRequested,
+ this.fileName,
+ this.fileExt,
+ this.uri,
+ );
+
+ @override
+ bool operator ==(covariant ViamBinaryMetadata other) =>
+ id == other.id &&
+ captureMetadata == other.captureMetadata &&
+ timeRequested.isAtSameMomentAs(other.timeRequested) &&
+ timeReceived.isAtSameMomentAs(other.timeReceived) &&
+ fileName == other.fileName &&
+ fileExt == other.fileExt &&
+ uri == other.uri;
+
+ @override
+ int get hashCode => Object.hash(
+ id,
+ captureMetadata,
+ timeReceived,
+ timeRequested,
+ fileExt,
+ fileName,
+ uri,
+ );
+}
+
+extension ViamBinaryMetadataMapper on BinaryMetadata {
+ ViamBinaryMetadata toDomain() => ViamBinaryMetadata(
+ id,
+ captureMetadata.toDomain(),
+ timeRequested.toDateTime(),
+ timeReceived.toDateTime(),
+ fileName,
+ fileExt,
+ uri,
+ );
+}
diff --git a/lib/src/domain/data/models/viam_capture_interval.dart b/lib/src/domain/data/models/viam_capture_interval.dart
new file mode 100644
index 00000000000..7a5b2b48444
--- /dev/null
+++ b/lib/src/domain/data/models/viam_capture_interval.dart
@@ -0,0 +1,37 @@
+import 'package:viam_sdk/src/gen/app/data/v1/data.pb.dart';
+import 'package:viam_sdk/src/gen/google/protobuf/timestamp.pb.dart';
+
+class ViamCaptureInterval {
+ final DateTime? start;
+ final DateTime? end;
+
+ const ViamCaptureInterval({this.start, this.end});
+
+ @override
+ bool operator ==(covariant ViamCaptureInterval other) =>
+ _checkIfDatesAreEqual(start, other.start) && _checkIfDatesAreEqual(end, other.end);
+
+ @override
+ int get hashCode => Object.hash(start, end);
+
+ bool _checkIfDatesAreEqual(DateTime? first, DateTime? second) {
+ bool isEqual;
+
+ if (first == null && second == null) {
+ isEqual = true;
+ } else if (first != null && second != null) {
+ isEqual = first.isAtSameMomentAs(second);
+ } else {
+ isEqual = false;
+ }
+
+ return isEqual;
+ }
+}
+
+extension CaptureIntervalMapper on ViamCaptureInterval {
+ CaptureInterval toDto() => CaptureInterval(
+ start: start != null ? Timestamp.fromDateTime(start!) : null,
+ end: end != null ? Timestamp.fromDateTime(end!) : null,
+ );
+}
diff --git a/lib/src/domain/data/models/viam_capture_metadata.dart b/lib/src/domain/data/models/viam_capture_metadata.dart
new file mode 100644
index 00000000000..a66b8bedc9e
--- /dev/null
+++ b/lib/src/domain/data/models/viam_capture_metadata.dart
@@ -0,0 +1,88 @@
+import 'package:collection/collection.dart';
+import 'package:viam_sdk/src/gen/app/data/v1/data.pb.dart';
+
+class ViamCaptureMetadata {
+ final String orgId;
+ final String locationId;
+ final String robotName;
+ final String robotId;
+ final String partName;
+ final String partId;
+ final String componentType;
+ final String componentModel;
+ final String componentName;
+ final String methodName;
+ final Map methodParameters;
+ final List tags;
+ final String mimeType;
+
+ ViamCaptureMetadata(
+ this.orgId,
+ this.locationId,
+ this.robotName,
+ this.robotId,
+ this.partName,
+ this.partId,
+ this.componentType,
+ this.componentModel,
+ this.componentName,
+ this.methodName,
+ this.methodParameters,
+ this.tags,
+ this.mimeType,
+ );
+
+ @override
+ bool operator ==(covariant ViamCaptureMetadata other) =>
+ orgId == other.orgId &&
+ locationId == other.locationId &&
+ robotName == other.robotName &&
+ robotId == other.robotId &&
+ partName == other.partName &&
+ partId == other.partId &&
+ componentType == other.componentType &&
+ componentModel == other.componentModel &&
+ componentName == other.componentName &&
+ methodName == other.methodName &&
+ const ListEquality().equals(
+ methodParameters.entries.toList(),
+ other.methodParameters.entries.toList(),
+ ) &&
+ const ListEquality().equals(tags, other.tags) &&
+ mimeType == other.mimeType;
+
+ @override
+ int get hashCode => Object.hash(
+ orgId,
+ locationId,
+ robotName,
+ robotId,
+ partName,
+ partId,
+ componentType,
+ componentModel,
+ componentName,
+ methodName,
+ methodParameters,
+ tags,
+ mimeType,
+ );
+}
+
+extension ViamCaptureMetadataMapper on CaptureMetadata {
+ ViamCaptureMetadata toDomain() => ViamCaptureMetadata(
+ orgId,
+ locationId,
+ robotName,
+ robotId,
+ partName,
+ partId,
+ componentType,
+ componentModel,
+ componentName,
+ methodName,
+ methodParameters,
+ tags,
+ mimeType,
+ );
+}
diff --git a/lib/src/domain/data/models/viam_data_request.dart b/lib/src/domain/data/models/viam_data_request.dart
new file mode 100644
index 00000000000..c8ab6ff6119
--- /dev/null
+++ b/lib/src/domain/data/models/viam_data_request.dart
@@ -0,0 +1,28 @@
+// ignore: depend_on_referenced_packages
+import 'package:fixnum/fixnum.dart';
+import 'package:viam_sdk/src/domain/data/models/viam_filter.dart';
+import 'package:viam_sdk/src/domain/data/models/viam_order.dart';
+import 'package:viam_sdk/src/gen/app/data/v1/data.pb.dart';
+
+class ViamDataRequest {
+ final ViamFilter filter;
+ final int? limit;
+ final String? last;
+ final ViamOrder? order;
+
+ const ViamDataRequest({
+ required this.filter,
+ this.limit,
+ this.last,
+ this.order,
+ });
+}
+
+extension DataRequestMapper on ViamDataRequest {
+ DataRequest toDto() => DataRequest(
+ filter: filter.toDto(),
+ limit: limit != null ? Int64(limit!) : null,
+ last: last,
+ sortOrder: order?.toDto(),
+ );
+}
diff --git a/lib/src/domain/data/models/viam_filter.dart b/lib/src/domain/data/models/viam_filter.dart
new file mode 100644
index 00000000000..a8374ffdbb2
--- /dev/null
+++ b/lib/src/domain/data/models/viam_filter.dart
@@ -0,0 +1,87 @@
+import 'package:collection/collection.dart';
+import 'package:viam_sdk/src/domain/data/models/viam_capture_interval.dart';
+import 'package:viam_sdk/src/domain/data/models/viam_tags_filter.dart';
+import 'package:viam_sdk/src/gen/app/data/v1/data.pb.dart';
+
+class ViamFilter {
+ final String? componentName;
+ final String? componentType;
+ final String? componentModel;
+ final String? method;
+ final String? robotName;
+ final String? robotId;
+ final String? partName;
+ final String? partId;
+ final List? locationIds;
+ final List? orgIds;
+ final List? mimeType;
+ final ViamCaptureInterval? captureInterval;
+ final ViamTagsFilter? tagsFilter;
+
+ const ViamFilter({
+ this.componentName,
+ this.componentType,
+ this.componentModel,
+ this.method,
+ this.robotName,
+ this.robotId,
+ this.partName,
+ this.partId,
+ this.locationIds,
+ this.orgIds,
+ this.mimeType,
+ this.captureInterval,
+ this.tagsFilter,
+ });
+
+ @override
+ bool operator ==(covariant ViamFilter other) =>
+ componentName == other.componentName &&
+ componentModel == other.componentModel &&
+ componentType == other.componentType &&
+ method == other.method &&
+ robotName == other.robotName &&
+ robotId == other.robotId &&
+ partName == other.partName &&
+ partId == other.partId &&
+ captureInterval == other.captureInterval &&
+ tagsFilter == other.tagsFilter &&
+ const ListEquality().equals(locationIds, other.locationIds) &&
+ const ListEquality().equals(orgIds, other.orgIds) &&
+ const ListEquality().equals(mimeType, other.mimeType);
+
+ @override
+ int get hashCode => Object.hash(
+ componentModel,
+ componentName,
+ componentType,
+ method,
+ robotName,
+ robotId,
+ partName,
+ partId,
+ captureInterval,
+ tagsFilter,
+ locationIds,
+ orgIds,
+ mimeType,
+ );
+}
+
+extension FilterMapper on ViamFilter {
+ Filter toDto() => Filter(
+ componentModel: componentModel,
+ componentName: componentName,
+ componentType: componentType,
+ method: method,
+ locationIds: locationIds,
+ mimeType: mimeType,
+ orgIds: orgIds,
+ partId: partId,
+ partName: partName,
+ robotName: robotName,
+ robotId: robotId,
+ tagsFilter: tagsFilter?.toDto(),
+ interval: captureInterval?.toDto(),
+ );
+}
diff --git a/lib/src/domain/data/models/viam_order.dart b/lib/src/domain/data/models/viam_order.dart
new file mode 100644
index 00000000000..29431d6da7b
--- /dev/null
+++ b/lib/src/domain/data/models/viam_order.dart
@@ -0,0 +1,20 @@
+import 'package:viam_sdk/src/gen/app/data/v1/data.pb.dart';
+
+enum ViamOrder {
+ unspecified,
+ descending,
+ ascending,
+}
+
+extension OrderMapper on ViamOrder {
+ Order toDto() {
+ switch (this) {
+ case ViamOrder.unspecified:
+ return Order.ORDER_UNSPECIFIED;
+ case ViamOrder.descending:
+ return Order.ORDER_UNSPECIFIED;
+ case ViamOrder.ascending:
+ return Order.ORDER_ASCENDING;
+ }
+ }
+}
diff --git a/lib/src/domain/data/models/viam_tabular_data.dart b/lib/src/domain/data/models/viam_tabular_data.dart
new file mode 100644
index 00000000000..6c201d2ea73
--- /dev/null
+++ b/lib/src/domain/data/models/viam_tabular_data.dart
@@ -0,0 +1,24 @@
+import 'package:viam_sdk/src/gen/app/data/v1/data.pb.dart';
+
+class ViamTabularData {
+ final dynamic data;
+ final int metadataIndex;
+ final dynamic timeRequested;
+ final dynamic timeReceived;
+
+ ViamTabularData(
+ this.data,
+ this.metadataIndex,
+ this.timeRequested,
+ this.timeReceived,
+ );
+}
+
+extension ViamTabularDataMapper on TabularData {
+ ViamTabularData toDomain() => ViamTabularData(
+ data,
+ metadataIndex,
+ timeRequested,
+ timeReceived,
+ );
+}
diff --git a/lib/src/domain/data/models/viam_tabular_data_response.dart b/lib/src/domain/data/models/viam_tabular_data_response.dart
new file mode 100644
index 00000000000..7b63db65d5d
--- /dev/null
+++ b/lib/src/domain/data/models/viam_tabular_data_response.dart
@@ -0,0 +1,29 @@
+import 'package:viam_sdk/src/domain/data/models/viam_capture_metadata.dart';
+import 'package:viam_sdk/src/domain/data/models/viam_tabular_data.dart';
+import 'package:viam_sdk/src/gen/app/data/v1/data.pb.dart';
+
+class ViamTabularDataResponse {
+ final List metadata;
+ final List data;
+ final int count;
+ final String last;
+ final int totalSizeBytes;
+
+ ViamTabularDataResponse(
+ this.metadata,
+ this.data,
+ this.count,
+ this.last,
+ this.totalSizeBytes,
+ );
+}
+
+extension ViamTabularDataResponseMapper on TabularDataByFilterResponse {
+ ViamTabularDataResponse toDomain() => ViamTabularDataResponse(
+ metadata.map((data) => data.toDomain()).toList().toList(growable: false),
+ data.map((tabularData) => tabularData.toDomain()).toList(growable: false),
+ count.toInt(),
+ last,
+ totalSizeBytes.toInt(),
+ );
+}
diff --git a/lib/src/domain/data/models/viam_tags_filter.dart b/lib/src/domain/data/models/viam_tags_filter.dart
new file mode 100644
index 00000000000..0e04d057116
--- /dev/null
+++ b/lib/src/domain/data/models/viam_tags_filter.dart
@@ -0,0 +1,27 @@
+import 'package:collection/collection.dart';
+import 'package:viam_sdk/src/domain/data/models/viam_tags_filter_type.dart';
+import 'package:viam_sdk/src/gen/app/data/v1/data.pb.dart';
+
+class ViamTagsFilter {
+ final ViamTagsFilterType? type;
+ final List? tags;
+
+ const ViamTagsFilter({
+ this.type,
+ this.tags,
+ });
+
+ @override
+ bool operator ==(covariant ViamTagsFilter other) =>
+ type == other.type && const ListEquality().equals(tags, other.tags);
+
+ @override
+ int get hashCode => Object.hash(type, tags);
+}
+
+extension TagsFilterMapper on ViamTagsFilter {
+ TagsFilter toDto() => TagsFilter(
+ type: type?.toDto(),
+ tags: tags,
+ );
+}
diff --git a/lib/src/domain/data/models/viam_tags_filter_type.dart b/lib/src/domain/data/models/viam_tags_filter_type.dart
new file mode 100644
index 00000000000..029e3f5c938
--- /dev/null
+++ b/lib/src/domain/data/models/viam_tags_filter_type.dart
@@ -0,0 +1,23 @@
+import 'package:viam_sdk/src/gen/app/data/v1/data.pb.dart';
+
+enum ViamTagsFilterType {
+ unspecified,
+ matchByOr,
+ tagged,
+ untaged,
+}
+
+extension TagsFilterTypeMapper on ViamTagsFilterType {
+ TagsFilterType toDto() {
+ switch (this) {
+ case ViamTagsFilterType.unspecified:
+ return TagsFilterType.TAGS_FILTER_TYPE_UNSPECIFIED;
+ case ViamTagsFilterType.matchByOr:
+ return TagsFilterType.TAGS_FILTER_TYPE_MATCH_BY_OR;
+ case ViamTagsFilterType.tagged:
+ return TagsFilterType.TAGS_FILTER_TYPE_TAGGED;
+ case ViamTagsFilterType.untaged:
+ return TagsFilterType.TAGS_FILTER_TYPE_UNTAGGED;
+ }
+ }
+}
diff --git a/lib/src/domain/data/service/data_api_service.dart b/lib/src/domain/data/service/data_api_service.dart
new file mode 100644
index 00000000000..d5c350b721f
--- /dev/null
+++ b/lib/src/domain/data/service/data_api_service.dart
@@ -0,0 +1,57 @@
+import 'package:viam_sdk/src/domain/data/models/viam_binary_data_by_ids_response.dart';
+import 'package:viam_sdk/src/domain/data/models/viam_binary_data_response.dart';
+import 'package:viam_sdk/src/domain/data/models/viam_data_request.dart';
+import 'package:viam_sdk/src/domain/data/models/viam_tabular_data_response.dart';
+import 'package:viam_sdk/src/gen/app/data/v1/data.pbgrpc.dart';
+
+class DataService {
+ final DataServiceClient _dataServiceClient;
+
+ DataService(
+ this._dataServiceClient,
+ );
+
+ Future tabularDataByFilter({
+ required ViamDataRequest viamDataRequest,
+ bool? countOnly,
+ }) async {
+ final getTabularDataRequest = TabularDataByFilterRequest(
+ dataRequest: viamDataRequest.toDto(),
+ countOnly: countOnly,
+ );
+
+ final response = await _dataServiceClient.tabularDataByFilter(getTabularDataRequest);
+
+ return response.toDomain();
+ }
+
+ Future binaryDataByFilter({
+ required ViamDataRequest viamDataRequest,
+ bool? includeBinary,
+ bool? countOnly,
+ }) async {
+ final binaryDataByFilterRequest = BinaryDataByFilterRequest(
+ dataRequest: viamDataRequest.toDto(),
+ countOnly: countOnly,
+ includeBinary: includeBinary,
+ );
+
+ final BinaryDataByFilterResponse response = await _dataServiceClient.binaryDataByFilter(binaryDataByFilterRequest);
+
+ return response.toDomain();
+ }
+
+ Future binaryDataByIDs({
+ required List fileIds,
+ bool? includeBinary,
+ }) async {
+ final binaryDataByIDsRequest = BinaryDataByIDsRequest(
+ fileIds: fileIds,
+ includeBinary: includeBinary,
+ );
+
+ final BinaryDataByIDsResponse response = await _dataServiceClient.binaryDataByIDs(binaryDataByIDsRequest);
+
+ return response.toDomain();
+ }
+}
diff --git a/lib/src/domain/errors/model/viam_connection_lost_error.dart b/lib/src/domain/errors/model/viam_connection_lost_error.dart
new file mode 100644
index 00000000000..c20cb86cebd
--- /dev/null
+++ b/lib/src/domain/errors/model/viam_connection_lost_error.dart
@@ -0,0 +1,8 @@
+class ViamConnectionLostError {
+ final String? message;
+
+ const ViamConnectionLostError([this.message]);
+
+ @override
+ String toString() => message ?? 'ConnectionLostError';
+}
diff --git a/lib/src/domain/interceptors/auth_header_interceptor.dart b/lib/src/domain/interceptors/auth_header_interceptor.dart
new file mode 100644
index 00000000000..4a6b11517e7
--- /dev/null
+++ b/lib/src/domain/interceptors/auth_header_interceptor.dart
@@ -0,0 +1,55 @@
+import 'dart:async';
+
+import 'package:grpc/grpc.dart';
+import 'package:viam_sdk/src/domain/auth_rdk/service/auth_api_service.dart';
+
+class AuthHeaderInterceptor implements ClientInterceptor {
+ final ViamAuthService _viamAuthService;
+ final String? accessToken;
+
+ const AuthHeaderInterceptor(
+ this._viamAuthService,
+ this.accessToken,
+ );
+
+ FutureOr optionsProvider(Map metadata, String uri) async {
+ String token;
+
+ if (accessToken != null) {
+ token = accessToken!;
+ } else {
+ final authData = await _viamAuthService.getAuthData();
+ token = authData.accessToken;
+ }
+
+ metadata['Authorization'] = "Bearer $token";
+ }
+
+ @override
+ ResponseFuture interceptUnary(
+ ClientMethod method,
+ Q request,
+ CallOptions options,
+ ClientUnaryInvoker invoker,
+ ) {
+ final opts = options.mergedWith(
+ CallOptions(providers: [optionsProvider]),
+ );
+
+ return invoker(method, request, opts);
+ }
+
+ @override
+ ResponseStream interceptStreaming(
+ ClientMethod method,
+ Stream requests,
+ CallOptions options,
+ ClientStreamingInvoker invoker,
+ ) {
+ final opts = options.mergedWith(
+ CallOptions(providers: [optionsProvider]),
+ );
+
+ return invoker(method, requests, opts);
+ }
+}
diff --git a/lib/src/domain/movement/model/viam_linear_velocity.dart b/lib/src/domain/movement/model/viam_linear_velocity.dart
new file mode 100644
index 00000000000..3aa87906755
--- /dev/null
+++ b/lib/src/domain/movement/model/viam_linear_velocity.dart
@@ -0,0 +1,27 @@
+import 'package:viam_sdk/src/gen/component/movementsensor/v1/movementsensor.pb.dart';
+
+class ViamLinearVelocity {
+ final double x;
+ final double y;
+ final double z;
+
+ const ViamLinearVelocity(
+ this.x,
+ this.y,
+ this.z,
+ );
+
+ @override
+ bool operator ==(covariant ViamLinearVelocity other) => other.x == x && other.y == y && other.z == z;
+
+ @override
+ int get hashCode => Object.hash(x, y, z);
+}
+
+extension ViamLinearVelocityMapper on GetLinearVelocityResponse {
+ ViamLinearVelocity toDomain() => ViamLinearVelocity(
+ linearVelocity.x,
+ linearVelocity.y,
+ linearVelocity.z,
+ );
+}
diff --git a/lib/src/domain/movement/model/viam_position.dart b/lib/src/domain/movement/model/viam_position.dart
new file mode 100644
index 00000000000..1b39f697bef
--- /dev/null
+++ b/lib/src/domain/movement/model/viam_position.dart
@@ -0,0 +1,32 @@
+import 'package:viam_sdk/src/gen/component/movementsensor/v1/movementsensor.pb.dart';
+
+class ViamPosition {
+ final double altitude;
+ final double latitude;
+ final double longitude;
+
+ const ViamPosition(
+ this.altitude,
+ this.latitude,
+ this.longitude,
+ );
+
+ @override
+ bool operator ==(covariant ViamPosition other) =>
+ other.altitude == altitude || other.latitude == latitude || other.longitude == longitude;
+
+ @override
+ int get hashCode => Object.hash(
+ altitude,
+ latitude,
+ longitude,
+ );
+}
+
+extension ViamPositionMapper on GetPositionResponse {
+ ViamPosition toDomain() => ViamPosition(
+ altitudeMm,
+ coordinate.latitude,
+ coordinate.longitude,
+ );
+}
diff --git a/lib/src/domain/movement/service/viam_movement_service.dart b/lib/src/domain/movement/service/viam_movement_service.dart
new file mode 100644
index 00000000000..625b51bd0ba
--- /dev/null
+++ b/lib/src/domain/movement/service/viam_movement_service.dart
@@ -0,0 +1,36 @@
+import 'package:viam_sdk/src/domain/movement/model/viam_linear_velocity.dart';
+import 'package:viam_sdk/src/domain/movement/model/viam_position.dart';
+import 'package:viam_sdk/src/domain/resource/model/viam_resource_name.dart';
+import 'package:viam_sdk/src/gen/component/movementsensor/v1/movementsensor.pbgrpc.dart';
+
+class ViamMovementService {
+ final MovementSensorServiceClient _movementSensorServiceClient;
+
+ ViamMovementService(
+ this._movementSensorServiceClient,
+ );
+
+ Future getPositionData(ViamResourceName name) async {
+ var locationRequest = GetPositionRequest();
+ final resourceName = name.toDto();
+ locationRequest.name = resourceName.name;
+
+ var response = await _movementSensorServiceClient.getPosition(locationRequest);
+
+ return response.toDomain();
+ }
+
+ Future getLinearVelocity(ViamResourceName name) async {
+ final resourceName = name.toDto();
+
+ final GetLinearVelocityRequest request = GetLinearVelocityRequest(
+ name: resourceName.name,
+ );
+
+ final dto = await _movementSensorServiceClient.getLinearVelocity(request);
+
+ final response = dto.toDomain();
+
+ return response;
+ }
+}
diff --git a/lib/src/domain/resource/model/resource_filters.dart b/lib/src/domain/resource/model/resource_filters.dart
new file mode 100644
index 00000000000..6b9da46d5e3
--- /dev/null
+++ b/lib/src/domain/resource/model/resource_filters.dart
@@ -0,0 +1,13 @@
+enum ViamResourceSubtypeFilters {
+ sensor('sensor');
+
+ final String value;
+ const ViamResourceSubtypeFilters(this.value);
+}
+
+enum ViamResourceNameFilters {
+ fluid('fluid-');
+
+ final String value;
+ const ViamResourceNameFilters(this.value);
+}
\ No newline at end of file
diff --git a/lib/src/domain/resource/model/viam_resource_name.dart b/lib/src/domain/resource/model/viam_resource_name.dart
new file mode 100644
index 00000000000..a8fedc0ecfb
--- /dev/null
+++ b/lib/src/domain/resource/model/viam_resource_name.dart
@@ -0,0 +1,45 @@
+import 'package:viam_sdk/src/gen/common/v1/common.pb.dart';
+
+class ViamResourceName {
+ final String namespace;
+ final String type;
+ final String subtype;
+ final String name;
+
+ const ViamResourceName(
+ this.namespace,
+ this.type,
+ this.subtype,
+ this.name,
+ );
+
+ @override
+ bool operator ==(covariant ViamResourceName other) =>
+ other.name == name && other.namespace == namespace && other.type == type && other.subtype == subtype;
+
+ @override
+ int get hashCode => Object.hash(
+ namespace,
+ type,
+ subtype,
+ name,
+ );
+}
+
+extension ViamResourceNameMapper on ResourceName {
+ ViamResourceName toDomain() => ViamResourceName(
+ namespace,
+ type,
+ subtype,
+ name,
+ );
+}
+
+extension ResourceNameMapper on ViamResourceName {
+ ResourceName toDto() => ResourceName(
+ name: name,
+ namespace: namespace,
+ subtype: subtype,
+ type: type,
+ );
+}
diff --git a/lib/src/domain/resource/service/viam_resource_service.dart b/lib/src/domain/resource/service/viam_resource_service.dart
new file mode 100644
index 00000000000..4a36a6041bf
--- /dev/null
+++ b/lib/src/domain/resource/service/viam_resource_service.dart
@@ -0,0 +1,25 @@
+import 'package:viam_sdk/src/domain/resource/model/viam_resource_name.dart';
+import 'package:viam_sdk/src/gen/robot/v1/robot.pbgrpc.dart';
+import 'package:viam_sdk/src/domain/resource/model/resource_filters.dart';
+
+class ViamResourceService {
+ final RobotServiceClient _robotServiceClient;
+
+ ViamResourceService(this._robotServiceClient);
+
+ Future> getResourceNames(
+ ViamResourceSubtypeFilters? subtype,
+ ViamResourceNameFilters? name,
+ ) async {
+ final response = await _robotServiceClient.resourceNames(
+ ResourceNamesRequest(),
+ );
+
+ final resources = response.resources
+ .where((resource) => subtype == null || subtype.value == resource.subtype)
+ .where((resource) => name == null || resource.name.contains(name.value))
+ .toList(growable: false);
+
+ return resources.map((dto) => dto.toDomain()).toList(growable: false);
+ }
+}
diff --git a/lib/src/domain/sensor/model/viam_sensor_readings.dart b/lib/src/domain/sensor/model/viam_sensor_readings.dart
new file mode 100644
index 00000000000..fbbdfd3d70e
--- /dev/null
+++ b/lib/src/domain/sensor/model/viam_sensor_readings.dart
@@ -0,0 +1,51 @@
+import 'package:viam_sdk/src/gen/google/protobuf/struct.pb.dart';
+import 'package:viam_sdk/src/gen/service/sensors/v1/sensors.pb.dart';
+
+class ViamSensorReadings {
+ final String namespace;
+ final String type;
+ final String subtype;
+ final String name;
+ final Map readings;
+
+ const ViamSensorReadings(
+ this.namespace,
+ this.type,
+ this.subtype,
+ this.name,
+ this.readings,
+ );
+
+ @override
+ bool operator ==(covariant ViamSensorReadings other) =>
+ other.name == name &&
+ other.namespace == namespace &&
+ other.type == type &&
+ other.subtype == subtype &&
+ other.readings.toString() == readings.toString();
+
+ @override
+ int get hashCode => Object.hash(
+ namespace,
+ type,
+ subtype,
+ name,
+ readings,
+ );
+}
+
+extension ViamSensorReadingsMapper on Readings {
+ ViamSensorReadings toDomain() => ViamSensorReadings(
+ name.namespace,
+ name.type,
+ name.subtype,
+ name.name,
+ _getReadings(readings),
+ );
+
+ Map _getReadings(Map readings) {
+ final Map map = {};
+ readings.forEach((key, value) => map[key] = value.numberValue);
+ return map;
+ }
+}
diff --git a/lib/src/domain/sensor/service/viam_sensor_service.dart b/lib/src/domain/sensor/service/viam_sensor_service.dart
new file mode 100644
index 00000000000..025b71d1131
--- /dev/null
+++ b/lib/src/domain/sensor/service/viam_sensor_service.dart
@@ -0,0 +1,34 @@
+import 'package:viam_sdk/src/domain/resource/model/viam_resource_name.dart';
+import 'package:viam_sdk/src/domain/sensor/model/viam_sensor_readings.dart';
+import 'package:viam_sdk/src/gen/common/v1/common.pb.dart';
+import 'package:viam_sdk/src/gen/service/sensors/v1/sensors.pbgrpc.dart';
+
+class ViamSensorService {
+ final SensorsServiceClient _sensorsServiceClient;
+
+ ViamSensorService(this._sensorsServiceClient);
+
+ Future> getSensorData(
+ List resourceNames,
+ String sensorRequestName,
+ ) async {
+ var sensorRequest = GetReadingsRequest();
+
+ sensorRequest.name = sensorRequestName;
+
+ final resourceNamesDto = resourceNames.map((resource) => resource.toDto()).toList(growable: false);
+
+ final sensorNames = ResourceName(
+ name: resourceNamesDto.first.name,
+ namespace: resourceNamesDto.first.namespace,
+ type: resourceNamesDto.first.type,
+ subtype: resourceNamesDto.first.subtype,
+ );
+
+ sensorRequest.sensorNames.addAll([sensorNames]);
+
+ var response = await _sensorsServiceClient.getReadings(sensorRequest);
+
+ return response.readings.map((dto) => dto.toDomain()).toList(growable: false);
+ }
+}
diff --git a/lib/src/domain/web_rtc/data_source/web_rtc_api_data_source.dart b/lib/src/domain/web_rtc/data_source/web_rtc_api_data_source.dart
new file mode 100644
index 00000000000..f41cb746944
--- /dev/null
+++ b/lib/src/domain/web_rtc/data_source/web_rtc_api_data_source.dart
@@ -0,0 +1,115 @@
+import 'package:grpc/grpc.dart';
+import 'package:viam_sdk/src/domain/interceptors/auth_header_interceptor.dart';
+import 'package:viam_sdk/src/di/di.dart';
+import 'package:viam_sdk/src/gen/google/rpc/status.pb.dart';
+import 'package:viam_sdk/src/gen/proto/rpc/webrtc/v1/signaling.pbgrpc.dart';
+import 'package:viam_sdk/src/gen/proto/stream/v1/stream.pbgrpc.dart';
+
+const _rpcHostKey = 'rpc-host';
+
+class WebRtcApiDataSource {
+ final ViamClientChannel _client;
+ final AuthHeaderInterceptor _authHeaderInterceptor;
+ final String hostUrl;
+
+ WebRtcApiDataSource(
+ this._client,
+ this._authHeaderInterceptor,
+ this.hostUrl,
+ );
+
+ Future> getResponseStream(String sdp) async {
+ final metaData = {
+ _rpcHostKey: hostUrl,
+ };
+
+ final stub = SignalingServiceClient(
+ _client,
+ interceptors: [_authHeaderInterceptor],
+ options: CallOptions(
+ metadata: metaData,
+ ),
+ );
+
+ final request = CallRequest(sdp: sdp);
+
+ final call = stub.call(request);
+
+ return call;
+ }
+
+ Future update(String uuid, {bool done = false}) async {
+ final metaData = {
+ _rpcHostKey: hostUrl,
+ };
+
+ final stub = SignalingServiceClient(
+ _client,
+ options: CallOptions(
+ metadata: metaData,
+ ),
+ interceptors: [_authHeaderInterceptor],
+ );
+
+ late CallUpdateRequest updateRequest;
+ if (done) {
+ updateRequest = CallUpdateRequest(
+ uuid: uuid,
+ done: true,
+ );
+ } else {
+ updateRequest = CallUpdateRequest(
+ uuid: uuid,
+ );
+ }
+
+ await stub.callUpdate(updateRequest);
+ }
+
+ Future sendError(String uuid, String msg) async {
+ final metaData = {
+ _rpcHostKey: hostUrl,
+ };
+
+ final stub = SignalingServiceClient(
+ _client,
+ options: CallOptions(
+ metadata: metaData,
+ ),
+ interceptors: [_authHeaderInterceptor],
+ );
+
+ final updateRequest = CallUpdateRequest(uuid: uuid, error: Status(message: msg));
+
+ await stub.callUpdate(updateRequest);
+ }
+
+ Future updateICECandidate(ICECandidate cand, String uuid) async {
+ final metaData = {
+ _rpcHostKey: hostUrl,
+ };
+
+ final stub = SignalingServiceClient(
+ _client,
+ options: CallOptions(
+ metadata: metaData,
+ ),
+ interceptors: [_authHeaderInterceptor],
+ );
+
+ final updateRequest = CallUpdateRequest(uuid: uuid, candidate: cand);
+
+ await stub.callUpdate(updateRequest);
+ }
+
+ Future addStreamName(String name) async {
+ final stub = StreamServiceClient(
+ _client,
+ interceptors: [_authHeaderInterceptor],
+ );
+
+ final updateRequest = AddStreamRequest(name: name);
+
+ await stub.addStream(updateRequest);
+ }
+}
diff --git a/lib/src/domain/web_rtc/web_rtc_client/signalling_server_address.dart b/lib/src/domain/web_rtc/web_rtc_client/signalling_server_address.dart
new file mode 100644
index 00000000000..b01b4a539d2
--- /dev/null
+++ b/lib/src/domain/web_rtc/web_rtc_client/signalling_server_address.dart
@@ -0,0 +1,4 @@
+class SignallingServerAddress {
+ static const address = 'app.viam.com';
+ static const port = 443;
+}
\ No newline at end of file
diff --git a/lib/src/domain/web_rtc/web_rtc_client/web_rtc_client.dart b/lib/src/domain/web_rtc/web_rtc_client/web_rtc_client.dart
new file mode 100644
index 00000000000..6a79686c1bb
--- /dev/null
+++ b/lib/src/domain/web_rtc/web_rtc_client/web_rtc_client.dart
@@ -0,0 +1,24 @@
+import 'package:flutter_webrtc/flutter_webrtc.dart';
+import 'package:grpc/grpc_connection_interface.dart';
+import 'package:viam_sdk/src/domain/web_rtc/web_rtc_client/web_rtc_client_connection.dart';
+
+class WebRtcClientChannel extends ClientChannelBase {
+ final RTCPeerConnection rtcPeerConnection;
+ final RTCDataChannel dataChannel;
+ final List onMessageListeners = [];
+
+ WebRtcClientChannel(this.rtcPeerConnection, this.dataChannel) {
+ dataChannel.onMessage = (data) {
+ onMessageListeners.forEach((listener) => listener(data));
+ };
+ }
+
+ void addOnMessageListener(Function(RTCDataChannelMessage data) listener) => onMessageListeners.add(listener);
+
+ void removeOnMessageListener(Function(RTCDataChannelMessage data) listener) {
+ onMessageListeners.remove(listener);
+ }
+
+ @override
+ ClientConnection createConnection() => WebRtcClientConnection(this);
+}
diff --git a/lib/src/domain/web_rtc/web_rtc_client/web_rtc_client_connection.dart b/lib/src/domain/web_rtc/web_rtc_client/web_rtc_client_connection.dart
new file mode 100644
index 00000000000..904d25d4986
--- /dev/null
+++ b/lib/src/domain/web_rtc/web_rtc_client/web_rtc_client_connection.dart
@@ -0,0 +1,59 @@
+import 'dart:async';
+
+//ignore: depend_on_referenced_packages
+import 'package:fixnum/fixnum.dart';
+import 'package:grpc/grpc.dart';
+import 'package:grpc/grpc_connection_interface.dart';
+import 'package:viam_sdk/src/gen/google/protobuf/duration.pb.dart' as grpc_duration;
+import 'package:viam_sdk/src/gen/proto/rpc/webrtc/v1/grpc.pb.dart' as grpc;
+import 'package:viam_sdk/src/domain/web_rtc/web_rtc_client/web_rtc_client.dart';
+import 'package:viam_sdk/src/domain/web_rtc/web_rtc_client/web_rtc_transport_stream.dart';
+
+class WebRtcClientConnection extends ClientConnection {
+ final WebRtcClientChannel webRtcClientChannel;
+
+ WebRtcClientConnection(this.webRtcClientChannel);
+
+ @override
+ String get authority => "";
+
+ @override
+ set onStateChanged(void Function(ConnectionState p1) cb) {}
+
+ @override
+ String get scheme => "";
+
+ @override
+ void dispatchCall(ClientCall call) {
+ call.onConnectionReady(this);
+ }
+
+ int id = 0;
+
+ @override
+ GrpcTransportStream makeRequest(
+ String path,
+ Duration? timeout,
+ Map metadata,
+ ErrorHandler onRequestFailure, {
+ required CallOptions callOptions,
+ }) {
+ final stream = grpc.Stream(id: Int64(id++));
+ final grpMetadata = grpc.Metadata(md: metadata.map((key, value) => MapEntry(key, grpc.Strings(values: [value]))));
+ final grpcTimeout = timeout != null
+ ? grpc_duration.Duration(
+ seconds: Int64(timeout.inSeconds),
+ nanos: timeout.inMicroseconds * 1000,
+ )
+ : null;
+ final headers = grpc.RequestHeaders(method: path, metadata: grpMetadata, timeout: grpcTimeout);
+ final request = grpc.Request(stream: stream, headers: headers);
+ return WebRtcTransportStream(webRtcClientChannel, request, onRequestFailure);
+ }
+
+ @override
+ Future shutdown() async {}
+
+ @override
+ Future terminate() async {}
+}
diff --git a/lib/src/domain/web_rtc/web_rtc_client/web_rtc_peer_connection.dart b/lib/src/domain/web_rtc/web_rtc_client/web_rtc_peer_connection.dart
new file mode 100644
index 00000000000..1d7516bda7f
--- /dev/null
+++ b/lib/src/domain/web_rtc/web_rtc_client/web_rtc_peer_connection.dart
@@ -0,0 +1,234 @@
+import 'dart:async';
+import 'dart:convert';
+
+import 'package:fimber_io/fimber_io.dart';
+import 'package:flutter_webrtc/flutter_webrtc.dart';
+import 'package:grpc/grpc.dart';
+import 'package:viam_sdk/src/domain/web_rtc/data_source/web_rtc_api_data_source.dart';
+import 'package:viam_sdk/src/gen/proto/rpc/webrtc/v1/signaling.pbgrpc.dart';
+
+class WebRtcPeerConnection {
+ final WebRtcApiDataSource _webRtcDirectDataSource;
+
+ late RTCDataChannel dataChannel;
+ late RTCPeerConnection peerConnection;
+
+ late RTCDataChannel _negotiationChannel;
+ late RTCSessionDescription _offer;
+
+ late ResponseStream _responseStream;
+ final _setRemoteCompleter = Completer();
+ final _webRtcConnectionCompleted = Completer();
+
+ String _uuid = '';
+ bool _ignoreOffer = false;
+
+ WebRtcPeerConnection(this._webRtcDirectDataSource);
+
+ Future createConnection() async {
+ await _webRTCInit();
+ await _webRtcConnectionCompleted.future;
+ }
+
+ Future _webRTCInit() async {
+ ///create Peer;
+ final rtcConfig = {
+ 'iceServers': [
+ {
+ "urls": "stun:global.stun.twilio.com:3478?transport=udp",
+ 'sdpSemantics': 'unified-plan',
+ },
+ ]
+ };
+
+ peerConnection = await createPeerConnection(rtcConfig);
+
+ dataChannel = await peerConnection.createDataChannel(
+ 'data',
+ RTCDataChannelInit()
+ ..binaryType = 'arraybuffer'
+ ..id = 0
+ ..negotiated = true
+ ..ordered = true,
+ );
+
+ _negotiationChannel = await peerConnection.createDataChannel(
+ 'negotiation',
+ RTCDataChannelInit()
+ ..binaryType = 'arraybuffer'
+ ..id = 1
+ ..negotiated = true
+ ..ordered = true,
+ );
+ _registerPeerConnectionListeners();
+
+ ///call Signaling Service Call method
+
+ _offer = await peerConnection.createOffer({
+ 'mandatory': {
+ 'OfferToReceiveAudio': false,
+ 'OfferToReceiveVideo': false,
+ }
+ });
+
+ final sdp = RTCSessionDescription(_offer.sdp, 'offer');
+ await peerConnection.setLocalDescription(sdp);
+
+ final sdpJsonString = _convertSDPtoJsonString(sdp);
+
+ final encodedBase64String = _encodeSDPJsonStringToBase64String(sdpJsonString);
+
+ try {
+ _responseStream = await _webRtcDirectDataSource.getResponseStream(encodedBase64String);
+ } catch (error, st) {
+ //TODO: Add error handling
+ Fimber.e(
+ 'Get Response stream error',
+ ex: error,
+ stacktrace: st,
+ );
+ }
+
+ bool isResponseStreamInitialized = false;
+ _responseStream.listen((CallResponse response) async {
+ if (response.hasInit()) {
+ if (isResponseStreamInitialized) {
+ return;
+ }
+ isResponseStreamInitialized = true;
+ await _handleInitResponse(response);
+ } else if (response.hasUpdate()) {
+ await _handleUpdateResponse(response);
+ }
+ }, onError: (error) {
+ _webRtcConnectionCompleted.completeError(error);
+ });
+ }
+
+ Future _handleInitResponse(CallResponse response) async {
+ final init = response.init;
+ _uuid = response.uuid;
+
+ final base64SDPString = init.sdp;
+ final decodedSDPString = base64Decode(base64SDPString);
+ final sdpString = utf8.decode(decodedSDPString);
+
+ final decodedSDPMap = json.decode(sdpString) as Map;
+
+ final remoteSDP = RTCSessionDescription(
+ decodedSDPMap['sdp'],
+ decodedSDPMap['type'],
+ );
+
+ try {
+ await peerConnection.setRemoteDescription(remoteSDP);
+ _setRemoteCompleter.complete();
+ } catch (error, st) {
+ //TODO: Add error handling
+ Fimber.e(
+ 'Set Remote SDP error',
+ ex: error,
+ stacktrace: st,
+ );
+ }
+ }
+
+ Future _handleUpdateResponse(CallResponse response) async {
+ await Future.delayed(const Duration(seconds: 1));
+ final iceCandidate = response.update.candidate;
+
+ final mappedRTCIceCandidate = RTCIceCandidate(
+ iceCandidate.candidate,
+ iceCandidate.sdpMid,
+ iceCandidate.sdpmLineIndex,
+ );
+
+ try {
+ await peerConnection.addCandidate(mappedRTCIceCandidate);
+ } catch (error, st) {
+ //TODO: Add error handling
+ Fimber.e(
+ 'Add Candidate error',
+ ex: error,
+ stacktrace: st,
+ );
+ }
+ }
+
+ void _registerPeerConnectionListeners() {
+ peerConnection.onIceCandidate = (RTCIceCandidate candidate) async {
+ await _setRemoteCompleter.future;
+
+ if (candidate.candidate == null) {
+ return;
+ }
+
+ try {
+ final candidateProto = ICECandidate(
+ candidate: candidate.candidate,
+ sdpMid: candidate.sdpMid,
+ sdpmLineIndex: candidate.sdpMLineIndex,
+ );
+ await _webRtcDirectDataSource.updateICECandidate(candidateProto, _uuid);
+ } catch (error, st) {
+ //TODO: Add error handling
+ Fimber.e(
+ 'Update ICECandidate error',
+ ex: error,
+ stacktrace: st,
+ );
+ }
+ };
+
+ _negotiationChannel.onMessage = (msg) async {
+ final decodedMsg = base64Decode(msg.text);
+ final sdpString = utf8.decode(decodedMsg);
+
+ final decodedSDPMap = json.decode(sdpString) as Map;
+
+ final sdp = RTCSessionDescription(
+ decodedSDPMap['sdp'],
+ decodedSDPMap['type'],
+ );
+ final offerCollision =
+ sdp.type == 'offer' && peerConnection.signalingState != RTCSignalingState.RTCSignalingStateStable;
+
+ _ignoreOffer = offerCollision;
+
+ if (_ignoreOffer) {
+ return;
+ }
+
+ await peerConnection.setRemoteDescription(sdp);
+
+ if (sdp.type == 'offer') {
+ final mediaConstraints = {
+ 'audio': true,
+ 'video': true,
+ };
+ final answer = await peerConnection.createAnswer(mediaConstraints);
+ await peerConnection.setLocalDescription(answer);
+ final sdpJsonString = _convertSDPtoJsonString(await peerConnection.getLocalDescription());
+
+ final encodedBase64String = _encodeSDPJsonStringToBase64String(sdpJsonString);
+ await _negotiationChannel.send(RTCDataChannelMessage(encodedBase64String));
+ }
+ };
+
+ dataChannel.onDataChannelState = (state) {
+ if (state == RTCDataChannelState.RTCDataChannelOpen) {
+ _webRtcConnectionCompleted.complete();
+ }
+ };
+ }
+
+ String _convertSDPtoJsonString(RTCSessionDescription? sdp) {
+ final jsonSDP = sdp?.toMap();
+ return jsonEncode(jsonSDP);
+ }
+
+ String _encodeSDPJsonStringToBase64String(String sdp) {
+ final bytes = utf8.encode(sdp);
+ return base64.encode(bytes);
+ }
+}
diff --git a/lib/src/domain/web_rtc/web_rtc_client/web_rtc_transport_stream.dart b/lib/src/domain/web_rtc/web_rtc_client/web_rtc_transport_stream.dart
new file mode 100644
index 00000000000..2d09981e870
--- /dev/null
+++ b/lib/src/domain/web_rtc/web_rtc_client/web_rtc_transport_stream.dart
@@ -0,0 +1,146 @@
+import 'dart:async';
+
+import 'package:collection/collection.dart';
+import 'package:flutter_webrtc/flutter_webrtc.dart';
+import 'package:grpc/grpc.dart';
+import 'package:grpc/grpc_connection_interface.dart';
+
+import '../../../gen/proto/rpc/webrtc/v1/grpc.pb.dart' as grpc;
+import '../../errors/model/viam_connection_lost_error.dart';
+import 'web_rtc_client.dart';
+
+const _grpcStatusKey = 'grpc-status';
+const _grpcMessageKey = 'grpc-message';
+
+class WebRtcTransportStream extends GrpcTransportStream {
+ final WebRtcClientChannel webRtcClientChannel;
+ final grpc.Request headersRequest;
+ final ErrorHandler onRequestFailure;
+
+ bool headersSent = false;
+ final List receivedPacketMessageData = [];
+
+ final StreamController> _outgoingMessages =
+ StreamController>();
+ final StreamController _incomingMessages = StreamController();
+
+ @override
+ Stream get incomingMessages => _incomingMessages.stream;
+
+ @override
+ StreamSink> get outgoingMessages => _outgoingMessages.sink;
+
+ WebRtcTransportStream(
+ this.webRtcClientChannel,
+ this.headersRequest,
+ this.onRequestFailure,
+ ) {
+ _listenToOutgoingMessages();
+ _listenToDataChannel();
+ }
+
+ @override
+ Future terminate() async {
+ webRtcClientChannel.removeOnMessageListener(onMessage);
+ await Future.wait([
+ _incomingMessages.close(),
+ _outgoingMessages.close(),
+ ]);
+ }
+
+ void _listenToOutgoingMessages() {
+ _outgoingMessages.stream.listen((List data) {
+ final payloadRequest = grpc.Request(
+ stream: headersRequest.stream,
+ message: grpc.RequestMessage(
+ hasMessage: true,
+ eos: true,
+ packetMessage: grpc.PacketMessage(
+ data: data,
+ eom: true,
+ ),
+ ),
+ );
+
+ final connectionState =
+ webRtcClientChannel.rtcPeerConnection.connectionState;
+
+ if (connectionState ==
+ RTCPeerConnectionState.RTCPeerConnectionStateFailed ||
+ connectionState ==
+ RTCPeerConnectionState.RTCPeerConnectionStateDisconnected) {
+ onRequestFailure(
+ const ViamConnectionLostError('RTCPeerConnection lost'),
+ StackTrace.current,
+ );
+ return;
+ }
+
+ if (!headersSent) {
+ headersSent = true;
+ webRtcClientChannel.dataChannel.send(
+ RTCDataChannelMessage.fromBinary(headersRequest.writeToBuffer()));
+ }
+ webRtcClientChannel.dataChannel.send(
+ RTCDataChannelMessage.fromBinary(payloadRequest.writeToBuffer()));
+ });
+ }
+
+ void onMessage(RTCDataChannelMessage data) {
+ final response = grpc.Response.fromBuffer(data.binary);
+
+ if (response.stream.id != headersRequest.stream.id) {
+ return;
+ }
+
+ final headers = response.headers;
+ final trailers = response.trailers;
+ final message = response.message;
+
+ final type = response.whichType();
+
+ switch (type) {
+ case grpc.Response_Type.headers:
+ _addGrpcMessage(
+ GrpcMetadata(
+ headers.metadata.md.map(
+ (key, value) => MapEntry(
+ key,
+ value.values.firstOrNull ?? '',
+ ),
+ ),
+ ),
+ );
+ break;
+ case grpc.Response_Type.message:
+ receivedPacketMessageData.addAll(message.packetMessage.data);
+ if (message.packetMessage.eom) {
+ _addGrpcMessage(GrpcData(
+ List.unmodifiable(receivedPacketMessageData),
+ isCompressed: false,
+ ));
+ receivedPacketMessageData.clear();
+ }
+ break;
+ case grpc.Response_Type.trailers:
+ _addGrpcMessage(GrpcMetadata({
+ _grpcStatusKey: trailers.status.code.toString(),
+ _grpcMessageKey: trailers.status.message,
+ }));
+ _incomingMessages.close();
+ break;
+ case grpc.Response_Type.notSet:
+ break;
+ }
+ }
+
+ void _listenToDataChannel() {
+ webRtcClientChannel.addOnMessageListener(onMessage);
+ }
+
+ void _addGrpcMessage(GrpcMessage msg) {
+ if (!_incomingMessages.isClosed) {
+ _incomingMessages.add(msg);
+ }
+ }
+}
diff --git a/lib/src/gen/app/data/v1/data.pb.dart b/lib/src/gen/app/data/v1/data.pb.dart
new file mode 100644
index 00000000000..e5f3a5e015c
--- /dev/null
+++ b/lib/src/gen/app/data/v1/data.pb.dart
@@ -0,0 +1,2194 @@
+///
+// Generated code. Do not modify.
+// source: app/data/v1/data.proto
+//
+// @dart = 2.12
+// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
+
+import 'dart:core' as $core;
+
+import 'package:fixnum/fixnum.dart' as $fixnum;
+import 'package:protobuf/protobuf.dart' as $pb;
+
+import '../../../google/protobuf/any.pb.dart' as $1;
+import '../../../google/protobuf/timestamp.pb.dart' as $2;
+import '../../../google/protobuf/struct.pb.dart' as $3;
+
+import 'data.pbenum.dart';
+
+export 'data.pbenum.dart';
+
+class Result extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'Result', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..e(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'status', $pb.PbFieldType.OE, defaultOrMaker: Status.STATUS_UNSPECIFIED, valueOf: Status.valueOf, enumValues: Status.values)
+ ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'message')
+ ..hasRequiredFields = false
+ ;
+
+ Result._() : super();
+ factory Result({
+ Status? status,
+ $core.String? message,
+ }) {
+ final _result = create();
+ if (status != null) {
+ _result.status = status;
+ }
+ if (message != null) {
+ _result.message = message;
+ }
+ return _result;
+ }
+ factory Result.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory Result.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ Result clone() => Result()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ Result copyWith(void Function(Result) updates) => super.copyWith((message) => updates(message as Result)) as Result; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static Result create() => Result._();
+ Result createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static Result getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static Result? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ Status get status => $_getN(0);
+ @$pb.TagNumber(1)
+ set status(Status v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasStatus() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearStatus() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.String get message => $_getSZ(1);
+ @$pb.TagNumber(2)
+ set message($core.String v) { $_setString(1, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasMessage() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearMessage() => clearField(2);
+}
+
+class DataRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DataRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'filter', subBuilder: Filter.create)
+ ..a<$fixnum.Int64>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'limit', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO)
+ ..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'last')
+ ..e(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'sortOrder', $pb.PbFieldType.OE, defaultOrMaker: Order.ORDER_UNSPECIFIED, valueOf: Order.valueOf, enumValues: Order.values)
+ ..hasRequiredFields = false
+ ;
+
+ DataRequest._() : super();
+ factory DataRequest({
+ Filter? filter,
+ $fixnum.Int64? limit,
+ $core.String? last,
+ Order? sortOrder,
+ }) {
+ final _result = create();
+ if (filter != null) {
+ _result.filter = filter;
+ }
+ if (limit != null) {
+ _result.limit = limit;
+ }
+ if (last != null) {
+ _result.last = last;
+ }
+ if (sortOrder != null) {
+ _result.sortOrder = sortOrder;
+ }
+ return _result;
+ }
+ factory DataRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory DataRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ DataRequest clone() => DataRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ DataRequest copyWith(void Function(DataRequest) updates) => super.copyWith((message) => updates(message as DataRequest)) as DataRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static DataRequest create() => DataRequest._();
+ DataRequest createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static DataRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static DataRequest? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ Filter get filter => $_getN(0);
+ @$pb.TagNumber(1)
+ set filter(Filter v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasFilter() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearFilter() => clearField(1);
+ @$pb.TagNumber(1)
+ Filter ensureFilter() => $_ensure(0);
+
+ @$pb.TagNumber(2)
+ $fixnum.Int64 get limit => $_getI64(1);
+ @$pb.TagNumber(2)
+ set limit($fixnum.Int64 v) { $_setInt64(1, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasLimit() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearLimit() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $core.String get last => $_getSZ(2);
+ @$pb.TagNumber(3)
+ set last($core.String v) { $_setString(2, v); }
+ @$pb.TagNumber(3)
+ $core.bool hasLast() => $_has(2);
+ @$pb.TagNumber(3)
+ void clearLast() => clearField(3);
+
+ @$pb.TagNumber(4)
+ Order get sortOrder => $_getN(3);
+ @$pb.TagNumber(4)
+ set sortOrder(Order v) { setField(4, v); }
+ @$pb.TagNumber(4)
+ $core.bool hasSortOrder() => $_has(3);
+ @$pb.TagNumber(4)
+ void clearSortOrder() => clearField(4);
+}
+
+class Filter extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'Filter', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'componentName')
+ ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'componentType')
+ ..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'componentModel')
+ ..aOS(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'method')
+ ..pPS(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'tags')
+ ..aOS(6, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'robotName')
+ ..aOS(7, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'robotId')
+ ..aOS(8, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'partName')
+ ..aOS(9, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'partId')
+ ..pPS(10, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'locationIds')
+ ..pPS(11, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'orgIds')
+ ..pPS(12, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'mimeType')
+ ..aOM(13, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'interval', subBuilder: CaptureInterval.create)
+ ..aOM(14, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'tagsFilter', subBuilder: TagsFilter.create)
+ ..hasRequiredFields = false
+ ;
+
+ Filter._() : super();
+ factory Filter({
+ $core.String? componentName,
+ $core.String? componentType,
+ $core.String? componentModel,
+ $core.String? method,
+ @$core.Deprecated('This field is deprecated.')
+ $core.Iterable<$core.String>? tags,
+ $core.String? robotName,
+ $core.String? robotId,
+ $core.String? partName,
+ $core.String? partId,
+ $core.Iterable<$core.String>? locationIds,
+ $core.Iterable<$core.String>? orgIds,
+ $core.Iterable<$core.String>? mimeType,
+ CaptureInterval? interval,
+ TagsFilter? tagsFilter,
+ }) {
+ final _result = create();
+ if (componentName != null) {
+ _result.componentName = componentName;
+ }
+ if (componentType != null) {
+ _result.componentType = componentType;
+ }
+ if (componentModel != null) {
+ _result.componentModel = componentModel;
+ }
+ if (method != null) {
+ _result.method = method;
+ }
+ if (tags != null) {
+ // ignore: deprecated_member_use_from_same_package
+ _result.tags.addAll(tags);
+ }
+ if (robotName != null) {
+ _result.robotName = robotName;
+ }
+ if (robotId != null) {
+ _result.robotId = robotId;
+ }
+ if (partName != null) {
+ _result.partName = partName;
+ }
+ if (partId != null) {
+ _result.partId = partId;
+ }
+ if (locationIds != null) {
+ _result.locationIds.addAll(locationIds);
+ }
+ if (orgIds != null) {
+ _result.orgIds.addAll(orgIds);
+ }
+ if (mimeType != null) {
+ _result.mimeType.addAll(mimeType);
+ }
+ if (interval != null) {
+ _result.interval = interval;
+ }
+ if (tagsFilter != null) {
+ _result.tagsFilter = tagsFilter;
+ }
+ return _result;
+ }
+ factory Filter.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory Filter.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ Filter clone() => Filter()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ Filter copyWith(void Function(Filter) updates) => super.copyWith((message) => updates(message as Filter)) as Filter; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static Filter create() => Filter._();
+ Filter createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static Filter getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static Filter? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get componentName => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set componentName($core.String v) { $_setString(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasComponentName() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearComponentName() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.String get componentType => $_getSZ(1);
+ @$pb.TagNumber(2)
+ set componentType($core.String v) { $_setString(1, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasComponentType() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearComponentType() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $core.String get componentModel => $_getSZ(2);
+ @$pb.TagNumber(3)
+ set componentModel($core.String v) { $_setString(2, v); }
+ @$pb.TagNumber(3)
+ $core.bool hasComponentModel() => $_has(2);
+ @$pb.TagNumber(3)
+ void clearComponentModel() => clearField(3);
+
+ @$pb.TagNumber(4)
+ $core.String get method => $_getSZ(3);
+ @$pb.TagNumber(4)
+ set method($core.String v) { $_setString(3, v); }
+ @$pb.TagNumber(4)
+ $core.bool hasMethod() => $_has(3);
+ @$pb.TagNumber(4)
+ void clearMethod() => clearField(4);
+
+ @$core.Deprecated('This field is deprecated.')
+ @$pb.TagNumber(5)
+ $core.List<$core.String> get tags => $_getList(4);
+
+ @$pb.TagNumber(6)
+ $core.String get robotName => $_getSZ(5);
+ @$pb.TagNumber(6)
+ set robotName($core.String v) { $_setString(5, v); }
+ @$pb.TagNumber(6)
+ $core.bool hasRobotName() => $_has(5);
+ @$pb.TagNumber(6)
+ void clearRobotName() => clearField(6);
+
+ @$pb.TagNumber(7)
+ $core.String get robotId => $_getSZ(6);
+ @$pb.TagNumber(7)
+ set robotId($core.String v) { $_setString(6, v); }
+ @$pb.TagNumber(7)
+ $core.bool hasRobotId() => $_has(6);
+ @$pb.TagNumber(7)
+ void clearRobotId() => clearField(7);
+
+ @$pb.TagNumber(8)
+ $core.String get partName => $_getSZ(7);
+ @$pb.TagNumber(8)
+ set partName($core.String v) { $_setString(7, v); }
+ @$pb.TagNumber(8)
+ $core.bool hasPartName() => $_has(7);
+ @$pb.TagNumber(8)
+ void clearPartName() => clearField(8);
+
+ @$pb.TagNumber(9)
+ $core.String get partId => $_getSZ(8);
+ @$pb.TagNumber(9)
+ set partId($core.String v) { $_setString(8, v); }
+ @$pb.TagNumber(9)
+ $core.bool hasPartId() => $_has(8);
+ @$pb.TagNumber(9)
+ void clearPartId() => clearField(9);
+
+ @$pb.TagNumber(10)
+ $core.List<$core.String> get locationIds => $_getList(9);
+
+ @$pb.TagNumber(11)
+ $core.List<$core.String> get orgIds => $_getList(10);
+
+ @$pb.TagNumber(12)
+ $core.List<$core.String> get mimeType => $_getList(11);
+
+ @$pb.TagNumber(13)
+ CaptureInterval get interval => $_getN(12);
+ @$pb.TagNumber(13)
+ set interval(CaptureInterval v) { setField(13, v); }
+ @$pb.TagNumber(13)
+ $core.bool hasInterval() => $_has(12);
+ @$pb.TagNumber(13)
+ void clearInterval() => clearField(13);
+ @$pb.TagNumber(13)
+ CaptureInterval ensureInterval() => $_ensure(12);
+
+ @$pb.TagNumber(14)
+ TagsFilter get tagsFilter => $_getN(13);
+ @$pb.TagNumber(14)
+ set tagsFilter(TagsFilter v) { setField(14, v); }
+ @$pb.TagNumber(14)
+ $core.bool hasTagsFilter() => $_has(13);
+ @$pb.TagNumber(14)
+ void clearTagsFilter() => clearField(14);
+ @$pb.TagNumber(14)
+ TagsFilter ensureTagsFilter() => $_ensure(13);
+}
+
+class TagsFilter extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'TagsFilter', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..e(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'type', $pb.PbFieldType.OE, defaultOrMaker: TagsFilterType.TAGS_FILTER_TYPE_UNSPECIFIED, valueOf: TagsFilterType.valueOf, enumValues: TagsFilterType.values)
+ ..pPS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'tags')
+ ..hasRequiredFields = false
+ ;
+
+ TagsFilter._() : super();
+ factory TagsFilter({
+ TagsFilterType? type,
+ $core.Iterable<$core.String>? tags,
+ }) {
+ final _result = create();
+ if (type != null) {
+ _result.type = type;
+ }
+ if (tags != null) {
+ _result.tags.addAll(tags);
+ }
+ return _result;
+ }
+ factory TagsFilter.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory TagsFilter.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ TagsFilter clone() => TagsFilter()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ TagsFilter copyWith(void Function(TagsFilter) updates) => super.copyWith((message) => updates(message as TagsFilter)) as TagsFilter; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static TagsFilter create() => TagsFilter._();
+ TagsFilter createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static TagsFilter getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static TagsFilter? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ TagsFilterType get type => $_getN(0);
+ @$pb.TagNumber(1)
+ set type(TagsFilterType v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasType() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearType() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.List<$core.String> get tags => $_getList(1);
+}
+
+class CaptureMetadata extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'CaptureMetadata', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'orgId')
+ ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'locationId')
+ ..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'robotName')
+ ..aOS(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'robotId')
+ ..aOS(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'partName')
+ ..aOS(6, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'partId')
+ ..aOS(7, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'componentType')
+ ..aOS(8, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'componentModel')
+ ..aOS(9, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'componentName')
+ ..aOS(10, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'methodName')
+ ..m<$core.String, $1.Any>(11, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'methodParameters', entryClassName: 'CaptureMetadata.MethodParametersEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OM, valueCreator: $1.Any.create, packageName: const $pb.PackageName('viam.app.data.v1'))
+ ..pPS(12, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'tags')
+ ..aOS(13, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'mimeType')
+ ..hasRequiredFields = false
+ ;
+
+ CaptureMetadata._() : super();
+ factory CaptureMetadata({
+ $core.String? orgId,
+ $core.String? locationId,
+ $core.String? robotName,
+ $core.String? robotId,
+ $core.String? partName,
+ $core.String? partId,
+ $core.String? componentType,
+ $core.String? componentModel,
+ $core.String? componentName,
+ $core.String? methodName,
+ $core.Map<$core.String, $1.Any>? methodParameters,
+ $core.Iterable<$core.String>? tags,
+ $core.String? mimeType,
+ }) {
+ final _result = create();
+ if (orgId != null) {
+ _result.orgId = orgId;
+ }
+ if (locationId != null) {
+ _result.locationId = locationId;
+ }
+ if (robotName != null) {
+ _result.robotName = robotName;
+ }
+ if (robotId != null) {
+ _result.robotId = robotId;
+ }
+ if (partName != null) {
+ _result.partName = partName;
+ }
+ if (partId != null) {
+ _result.partId = partId;
+ }
+ if (componentType != null) {
+ _result.componentType = componentType;
+ }
+ if (componentModel != null) {
+ _result.componentModel = componentModel;
+ }
+ if (componentName != null) {
+ _result.componentName = componentName;
+ }
+ if (methodName != null) {
+ _result.methodName = methodName;
+ }
+ if (methodParameters != null) {
+ _result.methodParameters.addAll(methodParameters);
+ }
+ if (tags != null) {
+ _result.tags.addAll(tags);
+ }
+ if (mimeType != null) {
+ _result.mimeType = mimeType;
+ }
+ return _result;
+ }
+ factory CaptureMetadata.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory CaptureMetadata.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ CaptureMetadata clone() => CaptureMetadata()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ CaptureMetadata copyWith(void Function(CaptureMetadata) updates) => super.copyWith((message) => updates(message as CaptureMetadata)) as CaptureMetadata; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static CaptureMetadata create() => CaptureMetadata._();
+ CaptureMetadata createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static CaptureMetadata getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static CaptureMetadata? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get orgId => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set orgId($core.String v) { $_setString(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasOrgId() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearOrgId() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.String get locationId => $_getSZ(1);
+ @$pb.TagNumber(2)
+ set locationId($core.String v) { $_setString(1, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasLocationId() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearLocationId() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $core.String get robotName => $_getSZ(2);
+ @$pb.TagNumber(3)
+ set robotName($core.String v) { $_setString(2, v); }
+ @$pb.TagNumber(3)
+ $core.bool hasRobotName() => $_has(2);
+ @$pb.TagNumber(3)
+ void clearRobotName() => clearField(3);
+
+ @$pb.TagNumber(4)
+ $core.String get robotId => $_getSZ(3);
+ @$pb.TagNumber(4)
+ set robotId($core.String v) { $_setString(3, v); }
+ @$pb.TagNumber(4)
+ $core.bool hasRobotId() => $_has(3);
+ @$pb.TagNumber(4)
+ void clearRobotId() => clearField(4);
+
+ @$pb.TagNumber(5)
+ $core.String get partName => $_getSZ(4);
+ @$pb.TagNumber(5)
+ set partName($core.String v) { $_setString(4, v); }
+ @$pb.TagNumber(5)
+ $core.bool hasPartName() => $_has(4);
+ @$pb.TagNumber(5)
+ void clearPartName() => clearField(5);
+
+ @$pb.TagNumber(6)
+ $core.String get partId => $_getSZ(5);
+ @$pb.TagNumber(6)
+ set partId($core.String v) { $_setString(5, v); }
+ @$pb.TagNumber(6)
+ $core.bool hasPartId() => $_has(5);
+ @$pb.TagNumber(6)
+ void clearPartId() => clearField(6);
+
+ @$pb.TagNumber(7)
+ $core.String get componentType => $_getSZ(6);
+ @$pb.TagNumber(7)
+ set componentType($core.String v) { $_setString(6, v); }
+ @$pb.TagNumber(7)
+ $core.bool hasComponentType() => $_has(6);
+ @$pb.TagNumber(7)
+ void clearComponentType() => clearField(7);
+
+ @$pb.TagNumber(8)
+ $core.String get componentModel => $_getSZ(7);
+ @$pb.TagNumber(8)
+ set componentModel($core.String v) { $_setString(7, v); }
+ @$pb.TagNumber(8)
+ $core.bool hasComponentModel() => $_has(7);
+ @$pb.TagNumber(8)
+ void clearComponentModel() => clearField(8);
+
+ @$pb.TagNumber(9)
+ $core.String get componentName => $_getSZ(8);
+ @$pb.TagNumber(9)
+ set componentName($core.String v) { $_setString(8, v); }
+ @$pb.TagNumber(9)
+ $core.bool hasComponentName() => $_has(8);
+ @$pb.TagNumber(9)
+ void clearComponentName() => clearField(9);
+
+ @$pb.TagNumber(10)
+ $core.String get methodName => $_getSZ(9);
+ @$pb.TagNumber(10)
+ set methodName($core.String v) { $_setString(9, v); }
+ @$pb.TagNumber(10)
+ $core.bool hasMethodName() => $_has(9);
+ @$pb.TagNumber(10)
+ void clearMethodName() => clearField(10);
+
+ @$pb.TagNumber(11)
+ $core.Map<$core.String, $1.Any> get methodParameters => $_getMap(10);
+
+ @$pb.TagNumber(12)
+ $core.List<$core.String> get tags => $_getList(11);
+
+ @$pb.TagNumber(13)
+ $core.String get mimeType => $_getSZ(12);
+ @$pb.TagNumber(13)
+ set mimeType($core.String v) { $_setString(12, v); }
+ @$pb.TagNumber(13)
+ $core.bool hasMimeType() => $_has(12);
+ @$pb.TagNumber(13)
+ void clearMimeType() => clearField(13);
+}
+
+class CaptureInterval extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'CaptureInterval', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..aOM<$2.Timestamp>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'start', subBuilder: $2.Timestamp.create)
+ ..aOM<$2.Timestamp>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'end', subBuilder: $2.Timestamp.create)
+ ..hasRequiredFields = false
+ ;
+
+ CaptureInterval._() : super();
+ factory CaptureInterval({
+ $2.Timestamp? start,
+ $2.Timestamp? end,
+ }) {
+ final _result = create();
+ if (start != null) {
+ _result.start = start;
+ }
+ if (end != null) {
+ _result.end = end;
+ }
+ return _result;
+ }
+ factory CaptureInterval.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory CaptureInterval.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ CaptureInterval clone() => CaptureInterval()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ CaptureInterval copyWith(void Function(CaptureInterval) updates) => super.copyWith((message) => updates(message as CaptureInterval)) as CaptureInterval; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static CaptureInterval create() => CaptureInterval._();
+ CaptureInterval createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static CaptureInterval getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static CaptureInterval? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $2.Timestamp get start => $_getN(0);
+ @$pb.TagNumber(1)
+ set start($2.Timestamp v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasStart() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearStart() => clearField(1);
+ @$pb.TagNumber(1)
+ $2.Timestamp ensureStart() => $_ensure(0);
+
+ @$pb.TagNumber(2)
+ $2.Timestamp get end => $_getN(1);
+ @$pb.TagNumber(2)
+ set end($2.Timestamp v) { setField(2, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasEnd() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearEnd() => clearField(2);
+ @$pb.TagNumber(2)
+ $2.Timestamp ensureEnd() => $_ensure(1);
+}
+
+class TabularDataByFilterRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'TabularDataByFilterRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'dataRequest', subBuilder: DataRequest.create)
+ ..aOB(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'countOnly')
+ ..hasRequiredFields = false
+ ;
+
+ TabularDataByFilterRequest._() : super();
+ factory TabularDataByFilterRequest({
+ DataRequest? dataRequest,
+ $core.bool? countOnly,
+ }) {
+ final _result = create();
+ if (dataRequest != null) {
+ _result.dataRequest = dataRequest;
+ }
+ if (countOnly != null) {
+ _result.countOnly = countOnly;
+ }
+ return _result;
+ }
+ factory TabularDataByFilterRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory TabularDataByFilterRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ TabularDataByFilterRequest clone() => TabularDataByFilterRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ TabularDataByFilterRequest copyWith(void Function(TabularDataByFilterRequest) updates) => super.copyWith((message) => updates(message as TabularDataByFilterRequest)) as TabularDataByFilterRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static TabularDataByFilterRequest create() => TabularDataByFilterRequest._();
+ TabularDataByFilterRequest createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static TabularDataByFilterRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static TabularDataByFilterRequest? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ DataRequest get dataRequest => $_getN(0);
+ @$pb.TagNumber(1)
+ set dataRequest(DataRequest v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasDataRequest() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearDataRequest() => clearField(1);
+ @$pb.TagNumber(1)
+ DataRequest ensureDataRequest() => $_ensure(0);
+
+ @$pb.TagNumber(2)
+ $core.bool get countOnly => $_getBF(1);
+ @$pb.TagNumber(2)
+ set countOnly($core.bool v) { $_setBool(1, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasCountOnly() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearCountOnly() => clearField(2);
+}
+
+class TabularDataByFilterResponse extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'TabularDataByFilterResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..pc(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'metadata', $pb.PbFieldType.PM, subBuilder: CaptureMetadata.create)
+ ..pc(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'data', $pb.PbFieldType.PM, subBuilder: TabularData.create)
+ ..aInt64(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'count')
+ ..aOS(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'last')
+ ..a<$fixnum.Int64>(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'totalSizeBytes', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO)
+ ..hasRequiredFields = false
+ ;
+
+ TabularDataByFilterResponse._() : super();
+ factory TabularDataByFilterResponse({
+ $core.Iterable? metadata,
+ $core.Iterable? data,
+ $fixnum.Int64? count,
+ $core.String? last,
+ $fixnum.Int64? totalSizeBytes,
+ }) {
+ final _result = create();
+ if (metadata != null) {
+ _result.metadata.addAll(metadata);
+ }
+ if (data != null) {
+ _result.data.addAll(data);
+ }
+ if (count != null) {
+ _result.count = count;
+ }
+ if (last != null) {
+ _result.last = last;
+ }
+ if (totalSizeBytes != null) {
+ _result.totalSizeBytes = totalSizeBytes;
+ }
+ return _result;
+ }
+ factory TabularDataByFilterResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory TabularDataByFilterResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ TabularDataByFilterResponse clone() => TabularDataByFilterResponse()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ TabularDataByFilterResponse copyWith(void Function(TabularDataByFilterResponse) updates) => super.copyWith((message) => updates(message as TabularDataByFilterResponse)) as TabularDataByFilterResponse; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static TabularDataByFilterResponse create() => TabularDataByFilterResponse._();
+ TabularDataByFilterResponse createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static TabularDataByFilterResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static TabularDataByFilterResponse? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List get metadata => $_getList(0);
+
+ @$pb.TagNumber(2)
+ $core.List get data => $_getList(1);
+
+ @$pb.TagNumber(3)
+ $fixnum.Int64 get count => $_getI64(2);
+ @$pb.TagNumber(3)
+ set count($fixnum.Int64 v) { $_setInt64(2, v); }
+ @$pb.TagNumber(3)
+ $core.bool hasCount() => $_has(2);
+ @$pb.TagNumber(3)
+ void clearCount() => clearField(3);
+
+ @$pb.TagNumber(4)
+ $core.String get last => $_getSZ(3);
+ @$pb.TagNumber(4)
+ set last($core.String v) { $_setString(3, v); }
+ @$pb.TagNumber(4)
+ $core.bool hasLast() => $_has(3);
+ @$pb.TagNumber(4)
+ void clearLast() => clearField(4);
+
+ @$pb.TagNumber(5)
+ $fixnum.Int64 get totalSizeBytes => $_getI64(4);
+ @$pb.TagNumber(5)
+ set totalSizeBytes($fixnum.Int64 v) { $_setInt64(4, v); }
+ @$pb.TagNumber(5)
+ $core.bool hasTotalSizeBytes() => $_has(4);
+ @$pb.TagNumber(5)
+ void clearTotalSizeBytes() => clearField(5);
+}
+
+class TabularData extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'TabularData', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..aOM<$3.Struct>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'data', subBuilder: $3.Struct.create)
+ ..a<$core.int>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'metadataIndex', $pb.PbFieldType.O3)
+ ..aOM<$2.Timestamp>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'timeRequested', subBuilder: $2.Timestamp.create)
+ ..aOM<$2.Timestamp>(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'timeReceived', subBuilder: $2.Timestamp.create)
+ ..hasRequiredFields = false
+ ;
+
+ TabularData._() : super();
+ factory TabularData({
+ $3.Struct? data,
+ $core.int? metadataIndex,
+ $2.Timestamp? timeRequested,
+ $2.Timestamp? timeReceived,
+ }) {
+ final _result = create();
+ if (data != null) {
+ _result.data = data;
+ }
+ if (metadataIndex != null) {
+ _result.metadataIndex = metadataIndex;
+ }
+ if (timeRequested != null) {
+ _result.timeRequested = timeRequested;
+ }
+ if (timeReceived != null) {
+ _result.timeReceived = timeReceived;
+ }
+ return _result;
+ }
+ factory TabularData.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory TabularData.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ TabularData clone() => TabularData()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ TabularData copyWith(void Function(TabularData) updates) => super.copyWith((message) => updates(message as TabularData)) as TabularData; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static TabularData create() => TabularData._();
+ TabularData createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static TabularData getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static TabularData? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $3.Struct get data => $_getN(0);
+ @$pb.TagNumber(1)
+ set data($3.Struct v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasData() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearData() => clearField(1);
+ @$pb.TagNumber(1)
+ $3.Struct ensureData() => $_ensure(0);
+
+ @$pb.TagNumber(2)
+ $core.int get metadataIndex => $_getIZ(1);
+ @$pb.TagNumber(2)
+ set metadataIndex($core.int v) { $_setSignedInt32(1, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasMetadataIndex() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearMetadataIndex() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $2.Timestamp get timeRequested => $_getN(2);
+ @$pb.TagNumber(3)
+ set timeRequested($2.Timestamp v) { setField(3, v); }
+ @$pb.TagNumber(3)
+ $core.bool hasTimeRequested() => $_has(2);
+ @$pb.TagNumber(3)
+ void clearTimeRequested() => clearField(3);
+ @$pb.TagNumber(3)
+ $2.Timestamp ensureTimeRequested() => $_ensure(2);
+
+ @$pb.TagNumber(4)
+ $2.Timestamp get timeReceived => $_getN(3);
+ @$pb.TagNumber(4)
+ set timeReceived($2.Timestamp v) { setField(4, v); }
+ @$pb.TagNumber(4)
+ $core.bool hasTimeReceived() => $_has(3);
+ @$pb.TagNumber(4)
+ void clearTimeReceived() => clearField(4);
+ @$pb.TagNumber(4)
+ $2.Timestamp ensureTimeReceived() => $_ensure(3);
+}
+
+class BinaryData extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'BinaryData', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..a<$core.List<$core.int>>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'binary', $pb.PbFieldType.OY)
+ ..aOM(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'metadata', subBuilder: BinaryMetadata.create)
+ ..hasRequiredFields = false
+ ;
+
+ BinaryData._() : super();
+ factory BinaryData({
+ $core.List<$core.int>? binary,
+ BinaryMetadata? metadata,
+ }) {
+ final _result = create();
+ if (binary != null) {
+ _result.binary = binary;
+ }
+ if (metadata != null) {
+ _result.metadata = metadata;
+ }
+ return _result;
+ }
+ factory BinaryData.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory BinaryData.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ BinaryData clone() => BinaryData()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ BinaryData copyWith(void Function(BinaryData) updates) => super.copyWith((message) => updates(message as BinaryData)) as BinaryData; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static BinaryData create() => BinaryData._();
+ BinaryData createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static BinaryData getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static BinaryData? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<$core.int> get binary => $_getN(0);
+ @$pb.TagNumber(1)
+ set binary($core.List<$core.int> v) { $_setBytes(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasBinary() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearBinary() => clearField(1);
+
+ @$pb.TagNumber(2)
+ BinaryMetadata get metadata => $_getN(1);
+ @$pb.TagNumber(2)
+ set metadata(BinaryMetadata v) { setField(2, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasMetadata() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearMetadata() => clearField(2);
+ @$pb.TagNumber(2)
+ BinaryMetadata ensureMetadata() => $_ensure(1);
+}
+
+class BinaryDataByFilterRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'BinaryDataByFilterRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'dataRequest', subBuilder: DataRequest.create)
+ ..aOB(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'includeBinary')
+ ..aOB(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'countOnly')
+ ..hasRequiredFields = false
+ ;
+
+ BinaryDataByFilterRequest._() : super();
+ factory BinaryDataByFilterRequest({
+ DataRequest? dataRequest,
+ $core.bool? includeBinary,
+ $core.bool? countOnly,
+ }) {
+ final _result = create();
+ if (dataRequest != null) {
+ _result.dataRequest = dataRequest;
+ }
+ if (includeBinary != null) {
+ _result.includeBinary = includeBinary;
+ }
+ if (countOnly != null) {
+ _result.countOnly = countOnly;
+ }
+ return _result;
+ }
+ factory BinaryDataByFilterRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory BinaryDataByFilterRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ BinaryDataByFilterRequest clone() => BinaryDataByFilterRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ BinaryDataByFilterRequest copyWith(void Function(BinaryDataByFilterRequest) updates) => super.copyWith((message) => updates(message as BinaryDataByFilterRequest)) as BinaryDataByFilterRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static BinaryDataByFilterRequest create() => BinaryDataByFilterRequest._();
+ BinaryDataByFilterRequest createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static BinaryDataByFilterRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static BinaryDataByFilterRequest? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ DataRequest get dataRequest => $_getN(0);
+ @$pb.TagNumber(1)
+ set dataRequest(DataRequest v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasDataRequest() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearDataRequest() => clearField(1);
+ @$pb.TagNumber(1)
+ DataRequest ensureDataRequest() => $_ensure(0);
+
+ @$pb.TagNumber(2)
+ $core.bool get includeBinary => $_getBF(1);
+ @$pb.TagNumber(2)
+ set includeBinary($core.bool v) { $_setBool(1, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasIncludeBinary() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearIncludeBinary() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $core.bool get countOnly => $_getBF(2);
+ @$pb.TagNumber(3)
+ set countOnly($core.bool v) { $_setBool(2, v); }
+ @$pb.TagNumber(3)
+ $core.bool hasCountOnly() => $_has(2);
+ @$pb.TagNumber(3)
+ void clearCountOnly() => clearField(3);
+}
+
+class BinaryDataByFilterResponse extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'BinaryDataByFilterResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..pc(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'data', $pb.PbFieldType.PM, subBuilder: BinaryData.create)
+ ..a<$fixnum.Int64>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'count', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO)
+ ..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'last')
+ ..hasRequiredFields = false
+ ;
+
+ BinaryDataByFilterResponse._() : super();
+ factory BinaryDataByFilterResponse({
+ $core.Iterable? data,
+ $fixnum.Int64? count,
+ $core.String? last,
+ }) {
+ final _result = create();
+ if (data != null) {
+ _result.data.addAll(data);
+ }
+ if (count != null) {
+ _result.count = count;
+ }
+ if (last != null) {
+ _result.last = last;
+ }
+ return _result;
+ }
+ factory BinaryDataByFilterResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory BinaryDataByFilterResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ BinaryDataByFilterResponse clone() => BinaryDataByFilterResponse()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ BinaryDataByFilterResponse copyWith(void Function(BinaryDataByFilterResponse) updates) => super.copyWith((message) => updates(message as BinaryDataByFilterResponse)) as BinaryDataByFilterResponse; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static BinaryDataByFilterResponse create() => BinaryDataByFilterResponse._();
+ BinaryDataByFilterResponse createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static BinaryDataByFilterResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static BinaryDataByFilterResponse? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List get data => $_getList(0);
+
+ @$pb.TagNumber(2)
+ $fixnum.Int64 get count => $_getI64(1);
+ @$pb.TagNumber(2)
+ set count($fixnum.Int64 v) { $_setInt64(1, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasCount() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearCount() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $core.String get last => $_getSZ(2);
+ @$pb.TagNumber(3)
+ set last($core.String v) { $_setString(2, v); }
+ @$pb.TagNumber(3)
+ $core.bool hasLast() => $_has(2);
+ @$pb.TagNumber(3)
+ void clearLast() => clearField(3);
+}
+
+class BinaryDataByIDsRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'BinaryDataByIDsRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..pPS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'fileIds')
+ ..aOB(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'includeBinary')
+ ..hasRequiredFields = false
+ ;
+
+ BinaryDataByIDsRequest._() : super();
+ factory BinaryDataByIDsRequest({
+ $core.Iterable<$core.String>? fileIds,
+ $core.bool? includeBinary,
+ }) {
+ final _result = create();
+ if (fileIds != null) {
+ _result.fileIds.addAll(fileIds);
+ }
+ if (includeBinary != null) {
+ _result.includeBinary = includeBinary;
+ }
+ return _result;
+ }
+ factory BinaryDataByIDsRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory BinaryDataByIDsRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ BinaryDataByIDsRequest clone() => BinaryDataByIDsRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ BinaryDataByIDsRequest copyWith(void Function(BinaryDataByIDsRequest) updates) => super.copyWith((message) => updates(message as BinaryDataByIDsRequest)) as BinaryDataByIDsRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static BinaryDataByIDsRequest create() => BinaryDataByIDsRequest._();
+ BinaryDataByIDsRequest createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static BinaryDataByIDsRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static BinaryDataByIDsRequest? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<$core.String> get fileIds => $_getList(0);
+
+ @$pb.TagNumber(2)
+ $core.bool get includeBinary => $_getBF(1);
+ @$pb.TagNumber(2)
+ set includeBinary($core.bool v) { $_setBool(1, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasIncludeBinary() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearIncludeBinary() => clearField(2);
+}
+
+class BinaryDataByIDsResponse extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'BinaryDataByIDsResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..pc(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'data', $pb.PbFieldType.PM, subBuilder: BinaryData.create)
+ ..a<$fixnum.Int64>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'count', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO)
+ ..hasRequiredFields = false
+ ;
+
+ BinaryDataByIDsResponse._() : super();
+ factory BinaryDataByIDsResponse({
+ $core.Iterable? data,
+ $fixnum.Int64? count,
+ }) {
+ final _result = create();
+ if (data != null) {
+ _result.data.addAll(data);
+ }
+ if (count != null) {
+ _result.count = count;
+ }
+ return _result;
+ }
+ factory BinaryDataByIDsResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory BinaryDataByIDsResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ BinaryDataByIDsResponse clone() => BinaryDataByIDsResponse()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ BinaryDataByIDsResponse copyWith(void Function(BinaryDataByIDsResponse) updates) => super.copyWith((message) => updates(message as BinaryDataByIDsResponse)) as BinaryDataByIDsResponse; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static BinaryDataByIDsResponse create() => BinaryDataByIDsResponse._();
+ BinaryDataByIDsResponse createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static BinaryDataByIDsResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static BinaryDataByIDsResponse? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List get data => $_getList(0);
+
+ @$pb.TagNumber(2)
+ $fixnum.Int64 get count => $_getI64(1);
+ @$pb.TagNumber(2)
+ set count($fixnum.Int64 v) { $_setInt64(1, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasCount() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearCount() => clearField(2);
+}
+
+class BinaryMetadata extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'BinaryMetadata', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'id')
+ ..aOM(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'captureMetadata', subBuilder: CaptureMetadata.create)
+ ..aOM<$2.Timestamp>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'timeRequested', subBuilder: $2.Timestamp.create)
+ ..aOM<$2.Timestamp>(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'timeReceived', subBuilder: $2.Timestamp.create)
+ ..aOS(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'fileName')
+ ..aOS(6, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'fileExt')
+ ..aOS(7, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'uri')
+ ..hasRequiredFields = false
+ ;
+
+ BinaryMetadata._() : super();
+ factory BinaryMetadata({
+ $core.String? id,
+ CaptureMetadata? captureMetadata,
+ $2.Timestamp? timeRequested,
+ $2.Timestamp? timeReceived,
+ $core.String? fileName,
+ $core.String? fileExt,
+ $core.String? uri,
+ }) {
+ final _result = create();
+ if (id != null) {
+ _result.id = id;
+ }
+ if (captureMetadata != null) {
+ _result.captureMetadata = captureMetadata;
+ }
+ if (timeRequested != null) {
+ _result.timeRequested = timeRequested;
+ }
+ if (timeReceived != null) {
+ _result.timeReceived = timeReceived;
+ }
+ if (fileName != null) {
+ _result.fileName = fileName;
+ }
+ if (fileExt != null) {
+ _result.fileExt = fileExt;
+ }
+ if (uri != null) {
+ _result.uri = uri;
+ }
+ return _result;
+ }
+ factory BinaryMetadata.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory BinaryMetadata.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ BinaryMetadata clone() => BinaryMetadata()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ BinaryMetadata copyWith(void Function(BinaryMetadata) updates) => super.copyWith((message) => updates(message as BinaryMetadata)) as BinaryMetadata; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static BinaryMetadata create() => BinaryMetadata._();
+ BinaryMetadata createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static BinaryMetadata getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static BinaryMetadata? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get id => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set id($core.String v) { $_setString(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasId() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearId() => clearField(1);
+
+ @$pb.TagNumber(2)
+ CaptureMetadata get captureMetadata => $_getN(1);
+ @$pb.TagNumber(2)
+ set captureMetadata(CaptureMetadata v) { setField(2, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasCaptureMetadata() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearCaptureMetadata() => clearField(2);
+ @$pb.TagNumber(2)
+ CaptureMetadata ensureCaptureMetadata() => $_ensure(1);
+
+ @$pb.TagNumber(3)
+ $2.Timestamp get timeRequested => $_getN(2);
+ @$pb.TagNumber(3)
+ set timeRequested($2.Timestamp v) { setField(3, v); }
+ @$pb.TagNumber(3)
+ $core.bool hasTimeRequested() => $_has(2);
+ @$pb.TagNumber(3)
+ void clearTimeRequested() => clearField(3);
+ @$pb.TagNumber(3)
+ $2.Timestamp ensureTimeRequested() => $_ensure(2);
+
+ @$pb.TagNumber(4)
+ $2.Timestamp get timeReceived => $_getN(3);
+ @$pb.TagNumber(4)
+ set timeReceived($2.Timestamp v) { setField(4, v); }
+ @$pb.TagNumber(4)
+ $core.bool hasTimeReceived() => $_has(3);
+ @$pb.TagNumber(4)
+ void clearTimeReceived() => clearField(4);
+ @$pb.TagNumber(4)
+ $2.Timestamp ensureTimeReceived() => $_ensure(3);
+
+ @$pb.TagNumber(5)
+ $core.String get fileName => $_getSZ(4);
+ @$pb.TagNumber(5)
+ set fileName($core.String v) { $_setString(4, v); }
+ @$pb.TagNumber(5)
+ $core.bool hasFileName() => $_has(4);
+ @$pb.TagNumber(5)
+ void clearFileName() => clearField(5);
+
+ @$pb.TagNumber(6)
+ $core.String get fileExt => $_getSZ(5);
+ @$pb.TagNumber(6)
+ set fileExt($core.String v) { $_setString(5, v); }
+ @$pb.TagNumber(6)
+ $core.bool hasFileExt() => $_has(5);
+ @$pb.TagNumber(6)
+ void clearFileExt() => clearField(6);
+
+ @$pb.TagNumber(7)
+ $core.String get uri => $_getSZ(6);
+ @$pb.TagNumber(7)
+ set uri($core.String v) { $_setString(6, v); }
+ @$pb.TagNumber(7)
+ $core.bool hasUri() => $_has(6);
+ @$pb.TagNumber(7)
+ void clearUri() => clearField(7);
+}
+
+class DeleteTabularDataByFilterRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DeleteTabularDataByFilterRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'filter', subBuilder: Filter.create)
+ ..hasRequiredFields = false
+ ;
+
+ DeleteTabularDataByFilterRequest._() : super();
+ factory DeleteTabularDataByFilterRequest({
+ Filter? filter,
+ }) {
+ final _result = create();
+ if (filter != null) {
+ _result.filter = filter;
+ }
+ return _result;
+ }
+ factory DeleteTabularDataByFilterRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory DeleteTabularDataByFilterRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ DeleteTabularDataByFilterRequest clone() => DeleteTabularDataByFilterRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ DeleteTabularDataByFilterRequest copyWith(void Function(DeleteTabularDataByFilterRequest) updates) => super.copyWith((message) => updates(message as DeleteTabularDataByFilterRequest)) as DeleteTabularDataByFilterRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static DeleteTabularDataByFilterRequest create() => DeleteTabularDataByFilterRequest._();
+ DeleteTabularDataByFilterRequest createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static DeleteTabularDataByFilterRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static DeleteTabularDataByFilterRequest? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ Filter get filter => $_getN(0);
+ @$pb.TagNumber(1)
+ set filter(Filter v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasFilter() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearFilter() => clearField(1);
+ @$pb.TagNumber(1)
+ Filter ensureFilter() => $_ensure(0);
+}
+
+class DeleteTabularDataByFilterResponse extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DeleteTabularDataByFilterResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..a<$fixnum.Int64>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deletedCount', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO)
+ ..aOM(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'result', subBuilder: Result.create)
+ ..hasRequiredFields = false
+ ;
+
+ DeleteTabularDataByFilterResponse._() : super();
+ factory DeleteTabularDataByFilterResponse({
+ $fixnum.Int64? deletedCount,
+ Result? result,
+ }) {
+ final _result = create();
+ if (deletedCount != null) {
+ _result.deletedCount = deletedCount;
+ }
+ if (result != null) {
+ _result.result = result;
+ }
+ return _result;
+ }
+ factory DeleteTabularDataByFilterResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory DeleteTabularDataByFilterResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ DeleteTabularDataByFilterResponse clone() => DeleteTabularDataByFilterResponse()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ DeleteTabularDataByFilterResponse copyWith(void Function(DeleteTabularDataByFilterResponse) updates) => super.copyWith((message) => updates(message as DeleteTabularDataByFilterResponse)) as DeleteTabularDataByFilterResponse; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static DeleteTabularDataByFilterResponse create() => DeleteTabularDataByFilterResponse._();
+ DeleteTabularDataByFilterResponse createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static DeleteTabularDataByFilterResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static DeleteTabularDataByFilterResponse? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $fixnum.Int64 get deletedCount => $_getI64(0);
+ @$pb.TagNumber(1)
+ set deletedCount($fixnum.Int64 v) { $_setInt64(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasDeletedCount() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearDeletedCount() => clearField(1);
+
+ @$pb.TagNumber(2)
+ Result get result => $_getN(1);
+ @$pb.TagNumber(2)
+ set result(Result v) { setField(2, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasResult() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearResult() => clearField(2);
+ @$pb.TagNumber(2)
+ Result ensureResult() => $_ensure(1);
+}
+
+class DeleteBinaryDataByFilterRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DeleteBinaryDataByFilterRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'filter', subBuilder: Filter.create)
+ ..hasRequiredFields = false
+ ;
+
+ DeleteBinaryDataByFilterRequest._() : super();
+ factory DeleteBinaryDataByFilterRequest({
+ Filter? filter,
+ }) {
+ final _result = create();
+ if (filter != null) {
+ _result.filter = filter;
+ }
+ return _result;
+ }
+ factory DeleteBinaryDataByFilterRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory DeleteBinaryDataByFilterRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ DeleteBinaryDataByFilterRequest clone() => DeleteBinaryDataByFilterRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ DeleteBinaryDataByFilterRequest copyWith(void Function(DeleteBinaryDataByFilterRequest) updates) => super.copyWith((message) => updates(message as DeleteBinaryDataByFilterRequest)) as DeleteBinaryDataByFilterRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static DeleteBinaryDataByFilterRequest create() => DeleteBinaryDataByFilterRequest._();
+ DeleteBinaryDataByFilterRequest createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static DeleteBinaryDataByFilterRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static DeleteBinaryDataByFilterRequest? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ Filter get filter => $_getN(0);
+ @$pb.TagNumber(1)
+ set filter(Filter v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasFilter() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearFilter() => clearField(1);
+ @$pb.TagNumber(1)
+ Filter ensureFilter() => $_ensure(0);
+}
+
+class DeleteBinaryDataByFilterResponse extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DeleteBinaryDataByFilterResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..a<$fixnum.Int64>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deletedCount', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO)
+ ..aOM(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'result', subBuilder: Result.create)
+ ..hasRequiredFields = false
+ ;
+
+ DeleteBinaryDataByFilterResponse._() : super();
+ factory DeleteBinaryDataByFilterResponse({
+ $fixnum.Int64? deletedCount,
+ Result? result,
+ }) {
+ final _result = create();
+ if (deletedCount != null) {
+ _result.deletedCount = deletedCount;
+ }
+ if (result != null) {
+ _result.result = result;
+ }
+ return _result;
+ }
+ factory DeleteBinaryDataByFilterResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory DeleteBinaryDataByFilterResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ DeleteBinaryDataByFilterResponse clone() => DeleteBinaryDataByFilterResponse()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ DeleteBinaryDataByFilterResponse copyWith(void Function(DeleteBinaryDataByFilterResponse) updates) => super.copyWith((message) => updates(message as DeleteBinaryDataByFilterResponse)) as DeleteBinaryDataByFilterResponse; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static DeleteBinaryDataByFilterResponse create() => DeleteBinaryDataByFilterResponse._();
+ DeleteBinaryDataByFilterResponse createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static DeleteBinaryDataByFilterResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static DeleteBinaryDataByFilterResponse? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $fixnum.Int64 get deletedCount => $_getI64(0);
+ @$pb.TagNumber(1)
+ set deletedCount($fixnum.Int64 v) { $_setInt64(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasDeletedCount() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearDeletedCount() => clearField(1);
+
+ @$pb.TagNumber(2)
+ Result get result => $_getN(1);
+ @$pb.TagNumber(2)
+ set result(Result v) { setField(2, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasResult() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearResult() => clearField(2);
+ @$pb.TagNumber(2)
+ Result ensureResult() => $_ensure(1);
+}
+
+class DeleteBinaryDataByIDsRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DeleteBinaryDataByIDsRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..pPS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'fileIds')
+ ..hasRequiredFields = false
+ ;
+
+ DeleteBinaryDataByIDsRequest._() : super();
+ factory DeleteBinaryDataByIDsRequest({
+ $core.Iterable<$core.String>? fileIds,
+ }) {
+ final _result = create();
+ if (fileIds != null) {
+ _result.fileIds.addAll(fileIds);
+ }
+ return _result;
+ }
+ factory DeleteBinaryDataByIDsRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory DeleteBinaryDataByIDsRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ DeleteBinaryDataByIDsRequest clone() => DeleteBinaryDataByIDsRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ DeleteBinaryDataByIDsRequest copyWith(void Function(DeleteBinaryDataByIDsRequest) updates) => super.copyWith((message) => updates(message as DeleteBinaryDataByIDsRequest)) as DeleteBinaryDataByIDsRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static DeleteBinaryDataByIDsRequest create() => DeleteBinaryDataByIDsRequest._();
+ DeleteBinaryDataByIDsRequest createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static DeleteBinaryDataByIDsRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static DeleteBinaryDataByIDsRequest? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<$core.String> get fileIds => $_getList(0);
+}
+
+class DeleteBinaryDataByIDsResponse extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DeleteBinaryDataByIDsResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..a<$fixnum.Int64>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deletedCount', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO)
+ ..aOM(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'result', subBuilder: Result.create)
+ ..hasRequiredFields = false
+ ;
+
+ DeleteBinaryDataByIDsResponse._() : super();
+ factory DeleteBinaryDataByIDsResponse({
+ $fixnum.Int64? deletedCount,
+ Result? result,
+ }) {
+ final _result = create();
+ if (deletedCount != null) {
+ _result.deletedCount = deletedCount;
+ }
+ if (result != null) {
+ _result.result = result;
+ }
+ return _result;
+ }
+ factory DeleteBinaryDataByIDsResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory DeleteBinaryDataByIDsResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ DeleteBinaryDataByIDsResponse clone() => DeleteBinaryDataByIDsResponse()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ DeleteBinaryDataByIDsResponse copyWith(void Function(DeleteBinaryDataByIDsResponse) updates) => super.copyWith((message) => updates(message as DeleteBinaryDataByIDsResponse)) as DeleteBinaryDataByIDsResponse; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static DeleteBinaryDataByIDsResponse create() => DeleteBinaryDataByIDsResponse._();
+ DeleteBinaryDataByIDsResponse createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static DeleteBinaryDataByIDsResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static DeleteBinaryDataByIDsResponse? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $fixnum.Int64 get deletedCount => $_getI64(0);
+ @$pb.TagNumber(1)
+ set deletedCount($fixnum.Int64 v) { $_setInt64(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasDeletedCount() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearDeletedCount() => clearField(1);
+
+ @$pb.TagNumber(2)
+ Result get result => $_getN(1);
+ @$pb.TagNumber(2)
+ set result(Result v) { setField(2, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasResult() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearResult() => clearField(2);
+ @$pb.TagNumber(2)
+ Result ensureResult() => $_ensure(1);
+}
+
+class AddTagsToBinaryDataByFileIDsRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'AddTagsToBinaryDataByFileIDsRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..pPS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'fileIds')
+ ..pPS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'tags')
+ ..hasRequiredFields = false
+ ;
+
+ AddTagsToBinaryDataByFileIDsRequest._() : super();
+ factory AddTagsToBinaryDataByFileIDsRequest({
+ $core.Iterable<$core.String>? fileIds,
+ $core.Iterable<$core.String>? tags,
+ }) {
+ final _result = create();
+ if (fileIds != null) {
+ _result.fileIds.addAll(fileIds);
+ }
+ if (tags != null) {
+ _result.tags.addAll(tags);
+ }
+ return _result;
+ }
+ factory AddTagsToBinaryDataByFileIDsRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory AddTagsToBinaryDataByFileIDsRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ AddTagsToBinaryDataByFileIDsRequest clone() => AddTagsToBinaryDataByFileIDsRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ AddTagsToBinaryDataByFileIDsRequest copyWith(void Function(AddTagsToBinaryDataByFileIDsRequest) updates) => super.copyWith((message) => updates(message as AddTagsToBinaryDataByFileIDsRequest)) as AddTagsToBinaryDataByFileIDsRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static AddTagsToBinaryDataByFileIDsRequest create() => AddTagsToBinaryDataByFileIDsRequest._();
+ AddTagsToBinaryDataByFileIDsRequest createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static AddTagsToBinaryDataByFileIDsRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static AddTagsToBinaryDataByFileIDsRequest? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<$core.String> get fileIds => $_getList(0);
+
+ @$pb.TagNumber(2)
+ $core.List<$core.String> get tags => $_getList(1);
+}
+
+class AddTagsToBinaryDataByFileIDsResponse extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'AddTagsToBinaryDataByFileIDsResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..hasRequiredFields = false
+ ;
+
+ AddTagsToBinaryDataByFileIDsResponse._() : super();
+ factory AddTagsToBinaryDataByFileIDsResponse() => create();
+ factory AddTagsToBinaryDataByFileIDsResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory AddTagsToBinaryDataByFileIDsResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ AddTagsToBinaryDataByFileIDsResponse clone() => AddTagsToBinaryDataByFileIDsResponse()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ AddTagsToBinaryDataByFileIDsResponse copyWith(void Function(AddTagsToBinaryDataByFileIDsResponse) updates) => super.copyWith((message) => updates(message as AddTagsToBinaryDataByFileIDsResponse)) as AddTagsToBinaryDataByFileIDsResponse; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static AddTagsToBinaryDataByFileIDsResponse create() => AddTagsToBinaryDataByFileIDsResponse._();
+ AddTagsToBinaryDataByFileIDsResponse createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static AddTagsToBinaryDataByFileIDsResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static AddTagsToBinaryDataByFileIDsResponse? _defaultInstance;
+}
+
+class AddTagsToBinaryDataByFilterRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'AddTagsToBinaryDataByFilterRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'filter', subBuilder: Filter.create)
+ ..pPS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'tags')
+ ..hasRequiredFields = false
+ ;
+
+ AddTagsToBinaryDataByFilterRequest._() : super();
+ factory AddTagsToBinaryDataByFilterRequest({
+ Filter? filter,
+ $core.Iterable<$core.String>? tags,
+ }) {
+ final _result = create();
+ if (filter != null) {
+ _result.filter = filter;
+ }
+ if (tags != null) {
+ _result.tags.addAll(tags);
+ }
+ return _result;
+ }
+ factory AddTagsToBinaryDataByFilterRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory AddTagsToBinaryDataByFilterRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ AddTagsToBinaryDataByFilterRequest clone() => AddTagsToBinaryDataByFilterRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ AddTagsToBinaryDataByFilterRequest copyWith(void Function(AddTagsToBinaryDataByFilterRequest) updates) => super.copyWith((message) => updates(message as AddTagsToBinaryDataByFilterRequest)) as AddTagsToBinaryDataByFilterRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static AddTagsToBinaryDataByFilterRequest create() => AddTagsToBinaryDataByFilterRequest._();
+ AddTagsToBinaryDataByFilterRequest createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static AddTagsToBinaryDataByFilterRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static AddTagsToBinaryDataByFilterRequest? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ Filter get filter => $_getN(0);
+ @$pb.TagNumber(1)
+ set filter(Filter v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasFilter() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearFilter() => clearField(1);
+ @$pb.TagNumber(1)
+ Filter ensureFilter() => $_ensure(0);
+
+ @$pb.TagNumber(2)
+ $core.List<$core.String> get tags => $_getList(1);
+}
+
+class AddTagsToBinaryDataByFilterResponse extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'AddTagsToBinaryDataByFilterResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..hasRequiredFields = false
+ ;
+
+ AddTagsToBinaryDataByFilterResponse._() : super();
+ factory AddTagsToBinaryDataByFilterResponse() => create();
+ factory AddTagsToBinaryDataByFilterResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory AddTagsToBinaryDataByFilterResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ AddTagsToBinaryDataByFilterResponse clone() => AddTagsToBinaryDataByFilterResponse()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ AddTagsToBinaryDataByFilterResponse copyWith(void Function(AddTagsToBinaryDataByFilterResponse) updates) => super.copyWith((message) => updates(message as AddTagsToBinaryDataByFilterResponse)) as AddTagsToBinaryDataByFilterResponse; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static AddTagsToBinaryDataByFilterResponse create() => AddTagsToBinaryDataByFilterResponse._();
+ AddTagsToBinaryDataByFilterResponse createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static AddTagsToBinaryDataByFilterResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static AddTagsToBinaryDataByFilterResponse? _defaultInstance;
+}
+
+class RemoveTagsFromBinaryDataByFileIDsRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'RemoveTagsFromBinaryDataByFileIDsRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..pPS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'fileIds')
+ ..pPS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'tags')
+ ..hasRequiredFields = false
+ ;
+
+ RemoveTagsFromBinaryDataByFileIDsRequest._() : super();
+ factory RemoveTagsFromBinaryDataByFileIDsRequest({
+ $core.Iterable<$core.String>? fileIds,
+ $core.Iterable<$core.String>? tags,
+ }) {
+ final _result = create();
+ if (fileIds != null) {
+ _result.fileIds.addAll(fileIds);
+ }
+ if (tags != null) {
+ _result.tags.addAll(tags);
+ }
+ return _result;
+ }
+ factory RemoveTagsFromBinaryDataByFileIDsRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory RemoveTagsFromBinaryDataByFileIDsRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ RemoveTagsFromBinaryDataByFileIDsRequest clone() => RemoveTagsFromBinaryDataByFileIDsRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ RemoveTagsFromBinaryDataByFileIDsRequest copyWith(void Function(RemoveTagsFromBinaryDataByFileIDsRequest) updates) => super.copyWith((message) => updates(message as RemoveTagsFromBinaryDataByFileIDsRequest)) as RemoveTagsFromBinaryDataByFileIDsRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static RemoveTagsFromBinaryDataByFileIDsRequest create() => RemoveTagsFromBinaryDataByFileIDsRequest._();
+ RemoveTagsFromBinaryDataByFileIDsRequest createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static RemoveTagsFromBinaryDataByFileIDsRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static RemoveTagsFromBinaryDataByFileIDsRequest? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<$core.String> get fileIds => $_getList(0);
+
+ @$pb.TagNumber(2)
+ $core.List<$core.String> get tags => $_getList(1);
+}
+
+class RemoveTagsFromBinaryDataByFileIDsResponse extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'RemoveTagsFromBinaryDataByFileIDsResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..a<$fixnum.Int64>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deletedCount', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO)
+ ..hasRequiredFields = false
+ ;
+
+ RemoveTagsFromBinaryDataByFileIDsResponse._() : super();
+ factory RemoveTagsFromBinaryDataByFileIDsResponse({
+ $fixnum.Int64? deletedCount,
+ }) {
+ final _result = create();
+ if (deletedCount != null) {
+ _result.deletedCount = deletedCount;
+ }
+ return _result;
+ }
+ factory RemoveTagsFromBinaryDataByFileIDsResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory RemoveTagsFromBinaryDataByFileIDsResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ RemoveTagsFromBinaryDataByFileIDsResponse clone() => RemoveTagsFromBinaryDataByFileIDsResponse()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ RemoveTagsFromBinaryDataByFileIDsResponse copyWith(void Function(RemoveTagsFromBinaryDataByFileIDsResponse) updates) => super.copyWith((message) => updates(message as RemoveTagsFromBinaryDataByFileIDsResponse)) as RemoveTagsFromBinaryDataByFileIDsResponse; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static RemoveTagsFromBinaryDataByFileIDsResponse create() => RemoveTagsFromBinaryDataByFileIDsResponse._();
+ RemoveTagsFromBinaryDataByFileIDsResponse createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static RemoveTagsFromBinaryDataByFileIDsResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static RemoveTagsFromBinaryDataByFileIDsResponse? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $fixnum.Int64 get deletedCount => $_getI64(0);
+ @$pb.TagNumber(1)
+ set deletedCount($fixnum.Int64 v) { $_setInt64(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasDeletedCount() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearDeletedCount() => clearField(1);
+}
+
+class RemoveTagsFromBinaryDataByFilterRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'RemoveTagsFromBinaryDataByFilterRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'filter', subBuilder: Filter.create)
+ ..pPS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'tags')
+ ..hasRequiredFields = false
+ ;
+
+ RemoveTagsFromBinaryDataByFilterRequest._() : super();
+ factory RemoveTagsFromBinaryDataByFilterRequest({
+ Filter? filter,
+ $core.Iterable<$core.String>? tags,
+ }) {
+ final _result = create();
+ if (filter != null) {
+ _result.filter = filter;
+ }
+ if (tags != null) {
+ _result.tags.addAll(tags);
+ }
+ return _result;
+ }
+ factory RemoveTagsFromBinaryDataByFilterRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory RemoveTagsFromBinaryDataByFilterRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ RemoveTagsFromBinaryDataByFilterRequest clone() => RemoveTagsFromBinaryDataByFilterRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ RemoveTagsFromBinaryDataByFilterRequest copyWith(void Function(RemoveTagsFromBinaryDataByFilterRequest) updates) => super.copyWith((message) => updates(message as RemoveTagsFromBinaryDataByFilterRequest)) as RemoveTagsFromBinaryDataByFilterRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static RemoveTagsFromBinaryDataByFilterRequest create() => RemoveTagsFromBinaryDataByFilterRequest._();
+ RemoveTagsFromBinaryDataByFilterRequest createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static RemoveTagsFromBinaryDataByFilterRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static RemoveTagsFromBinaryDataByFilterRequest? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ Filter get filter => $_getN(0);
+ @$pb.TagNumber(1)
+ set filter(Filter v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasFilter() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearFilter() => clearField(1);
+ @$pb.TagNumber(1)
+ Filter ensureFilter() => $_ensure(0);
+
+ @$pb.TagNumber(2)
+ $core.List<$core.String> get tags => $_getList(1);
+}
+
+class RemoveTagsFromBinaryDataByFilterResponse extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'RemoveTagsFromBinaryDataByFilterResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..a<$fixnum.Int64>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deletedCount', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO)
+ ..hasRequiredFields = false
+ ;
+
+ RemoveTagsFromBinaryDataByFilterResponse._() : super();
+ factory RemoveTagsFromBinaryDataByFilterResponse({
+ $fixnum.Int64? deletedCount,
+ }) {
+ final _result = create();
+ if (deletedCount != null) {
+ _result.deletedCount = deletedCount;
+ }
+ return _result;
+ }
+ factory RemoveTagsFromBinaryDataByFilterResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory RemoveTagsFromBinaryDataByFilterResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ RemoveTagsFromBinaryDataByFilterResponse clone() => RemoveTagsFromBinaryDataByFilterResponse()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ RemoveTagsFromBinaryDataByFilterResponse copyWith(void Function(RemoveTagsFromBinaryDataByFilterResponse) updates) => super.copyWith((message) => updates(message as RemoveTagsFromBinaryDataByFilterResponse)) as RemoveTagsFromBinaryDataByFilterResponse; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static RemoveTagsFromBinaryDataByFilterResponse create() => RemoveTagsFromBinaryDataByFilterResponse._();
+ RemoveTagsFromBinaryDataByFilterResponse createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static RemoveTagsFromBinaryDataByFilterResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static RemoveTagsFromBinaryDataByFilterResponse? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $fixnum.Int64 get deletedCount => $_getI64(0);
+ @$pb.TagNumber(1)
+ set deletedCount($fixnum.Int64 v) { $_setInt64(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasDeletedCount() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearDeletedCount() => clearField(1);
+}
+
+class TagsByFilterRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'TagsByFilterRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'filter', subBuilder: Filter.create)
+ ..hasRequiredFields = false
+ ;
+
+ TagsByFilterRequest._() : super();
+ factory TagsByFilterRequest({
+ Filter? filter,
+ }) {
+ final _result = create();
+ if (filter != null) {
+ _result.filter = filter;
+ }
+ return _result;
+ }
+ factory TagsByFilterRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory TagsByFilterRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ TagsByFilterRequest clone() => TagsByFilterRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ TagsByFilterRequest copyWith(void Function(TagsByFilterRequest) updates) => super.copyWith((message) => updates(message as TagsByFilterRequest)) as TagsByFilterRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static TagsByFilterRequest create() => TagsByFilterRequest._();
+ TagsByFilterRequest createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static TagsByFilterRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static TagsByFilterRequest? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ Filter get filter => $_getN(0);
+ @$pb.TagNumber(1)
+ set filter(Filter v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasFilter() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearFilter() => clearField(1);
+ @$pb.TagNumber(1)
+ Filter ensureFilter() => $_ensure(0);
+}
+
+class TagsByFilterResponse extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'TagsByFilterResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.data.v1'), createEmptyInstance: create)
+ ..pPS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'tags')
+ ..hasRequiredFields = false
+ ;
+
+ TagsByFilterResponse._() : super();
+ factory TagsByFilterResponse({
+ $core.Iterable<$core.String>? tags,
+ }) {
+ final _result = create();
+ if (tags != null) {
+ _result.tags.addAll(tags);
+ }
+ return _result;
+ }
+ factory TagsByFilterResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory TagsByFilterResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ TagsByFilterResponse clone() => TagsByFilterResponse()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ TagsByFilterResponse copyWith(void Function(TagsByFilterResponse) updates) => super.copyWith((message) => updates(message as TagsByFilterResponse)) as TagsByFilterResponse; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static TagsByFilterResponse create() => TagsByFilterResponse._();
+ TagsByFilterResponse createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static TagsByFilterResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static TagsByFilterResponse? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<$core.String> get tags => $_getList(0);
+}
+
diff --git a/lib/src/gen/app/data/v1/data.pbenum.dart b/lib/src/gen/app/data/v1/data.pbenum.dart
new file mode 100644
index 00000000000..4001ec7893b
--- /dev/null
+++ b/lib/src/gen/app/data/v1/data.pbenum.dart
@@ -0,0 +1,64 @@
+///
+// Generated code. Do not modify.
+// source: app/data/v1/data.proto
+//
+// @dart = 2.12
+// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
+
+// ignore_for_file: UNDEFINED_SHOWN_NAME
+import 'dart:core' as $core;
+import 'package:protobuf/protobuf.dart' as $pb;
+
+class Order extends $pb.ProtobufEnum {
+ static const Order ORDER_UNSPECIFIED = Order._(0, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ORDER_UNSPECIFIED');
+ static const Order ORDER_DESCENDING = Order._(1, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ORDER_DESCENDING');
+ static const Order ORDER_ASCENDING = Order._(2, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ORDER_ASCENDING');
+
+ static const $core.List values = [
+ ORDER_UNSPECIFIED,
+ ORDER_DESCENDING,
+ ORDER_ASCENDING,
+ ];
+
+ static final $core.Map<$core.int, Order> _byValue = $pb.ProtobufEnum.initByValue(values);
+ static Order? valueOf($core.int value) => _byValue[value];
+
+ const Order._($core.int v, $core.String n) : super(v, n);
+}
+
+class Status extends $pb.ProtobufEnum {
+ static const Status STATUS_UNSPECIFIED = Status._(0, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'STATUS_UNSPECIFIED');
+ static const Status STATUS_PARTIAL_SUCCESS = Status._(1, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'STATUS_PARTIAL_SUCCESS');
+ static const Status STATUS_SUCCESS = Status._(2, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'STATUS_SUCCESS');
+
+ static const $core.List values = [
+ STATUS_UNSPECIFIED,
+ STATUS_PARTIAL_SUCCESS,
+ STATUS_SUCCESS,
+ ];
+
+ static final $core.Map<$core.int, Status> _byValue = $pb.ProtobufEnum.initByValue(values);
+ static Status? valueOf($core.int value) => _byValue[value];
+
+ const Status._($core.int v, $core.String n) : super(v, n);
+}
+
+class TagsFilterType extends $pb.ProtobufEnum {
+ static const TagsFilterType TAGS_FILTER_TYPE_UNSPECIFIED = TagsFilterType._(0, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'TAGS_FILTER_TYPE_UNSPECIFIED');
+ static const TagsFilterType TAGS_FILTER_TYPE_MATCH_BY_OR = TagsFilterType._(1, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'TAGS_FILTER_TYPE_MATCH_BY_OR');
+ static const TagsFilterType TAGS_FILTER_TYPE_TAGGED = TagsFilterType._(2, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'TAGS_FILTER_TYPE_TAGGED');
+ static const TagsFilterType TAGS_FILTER_TYPE_UNTAGGED = TagsFilterType._(3, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'TAGS_FILTER_TYPE_UNTAGGED');
+
+ static const $core.List values = [
+ TAGS_FILTER_TYPE_UNSPECIFIED,
+ TAGS_FILTER_TYPE_MATCH_BY_OR,
+ TAGS_FILTER_TYPE_TAGGED,
+ TAGS_FILTER_TYPE_UNTAGGED,
+ ];
+
+ static final $core.Map<$core.int, TagsFilterType> _byValue = $pb.ProtobufEnum.initByValue(values);
+ static TagsFilterType? valueOf($core.int value) => _byValue[value];
+
+ const TagsFilterType._($core.int v, $core.String n) : super(v, n);
+}
+
diff --git a/lib/src/gen/app/data/v1/data.pbgrpc.dart b/lib/src/gen/app/data/v1/data.pbgrpc.dart
new file mode 100644
index 00000000000..3ec2abb405d
--- /dev/null
+++ b/lib/src/gen/app/data/v1/data.pbgrpc.dart
@@ -0,0 +1,378 @@
+///
+// Generated code. Do not modify.
+// source: app/data/v1/data.proto
+//
+// @dart = 2.12
+// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
+
+import 'dart:async' as $async;
+
+import 'dart:core' as $core;
+
+import 'package:grpc/service_api.dart' as $grpc;
+import 'data.pb.dart' as $0;
+export 'data.pb.dart';
+
+class DataServiceClient extends $grpc.Client {
+ static final _$tabularDataByFilter = $grpc.ClientMethod<
+ $0.TabularDataByFilterRequest, $0.TabularDataByFilterResponse>(
+ '/viam.app.data.v1.DataService/TabularDataByFilter',
+ ($0.TabularDataByFilterRequest value) => value.writeToBuffer(),
+ ($core.List<$core.int> value) =>
+ $0.TabularDataByFilterResponse.fromBuffer(value));
+ static final _$binaryDataByFilter = $grpc.ClientMethod<
+ $0.BinaryDataByFilterRequest, $0.BinaryDataByFilterResponse>(
+ '/viam.app.data.v1.DataService/BinaryDataByFilter',
+ ($0.BinaryDataByFilterRequest value) => value.writeToBuffer(),
+ ($core.List<$core.int> value) =>
+ $0.BinaryDataByFilterResponse.fromBuffer(value));
+ static final _$binaryDataByIDs =
+ $grpc.ClientMethod<$0.BinaryDataByIDsRequest, $0.BinaryDataByIDsResponse>(
+ '/viam.app.data.v1.DataService/BinaryDataByIDs',
+ ($0.BinaryDataByIDsRequest value) => value.writeToBuffer(),
+ ($core.List<$core.int> value) =>
+ $0.BinaryDataByIDsResponse.fromBuffer(value));
+ static final _$deleteTabularDataByFilter = $grpc.ClientMethod<
+ $0.DeleteTabularDataByFilterRequest,
+ $0.DeleteTabularDataByFilterResponse>(
+ '/viam.app.data.v1.DataService/DeleteTabularDataByFilter',
+ ($0.DeleteTabularDataByFilterRequest value) => value.writeToBuffer(),
+ ($core.List<$core.int> value) =>
+ $0.DeleteTabularDataByFilterResponse.fromBuffer(value));
+ static final _$deleteBinaryDataByFilter = $grpc.ClientMethod<
+ $0.DeleteBinaryDataByFilterRequest,
+ $0.DeleteBinaryDataByFilterResponse>(
+ '/viam.app.data.v1.DataService/DeleteBinaryDataByFilter',
+ ($0.DeleteBinaryDataByFilterRequest value) => value.writeToBuffer(),
+ ($core.List<$core.int> value) =>
+ $0.DeleteBinaryDataByFilterResponse.fromBuffer(value));
+ static final _$deleteBinaryDataByIDs = $grpc.ClientMethod<
+ $0.DeleteBinaryDataByIDsRequest, $0.DeleteBinaryDataByIDsResponse>(
+ '/viam.app.data.v1.DataService/DeleteBinaryDataByIDs',
+ ($0.DeleteBinaryDataByIDsRequest value) => value.writeToBuffer(),
+ ($core.List<$core.int> value) =>
+ $0.DeleteBinaryDataByIDsResponse.fromBuffer(value));
+ static final _$addTagsToBinaryDataByFileIDs = $grpc.ClientMethod<
+ $0.AddTagsToBinaryDataByFileIDsRequest,
+ $0.AddTagsToBinaryDataByFileIDsResponse>(
+ '/viam.app.data.v1.DataService/AddTagsToBinaryDataByFileIDs',
+ ($0.AddTagsToBinaryDataByFileIDsRequest value) => value.writeToBuffer(),
+ ($core.List<$core.int> value) =>
+ $0.AddTagsToBinaryDataByFileIDsResponse.fromBuffer(value));
+ static final _$addTagsToBinaryDataByFilter = $grpc.ClientMethod<
+ $0.AddTagsToBinaryDataByFilterRequest,
+ $0.AddTagsToBinaryDataByFilterResponse>(
+ '/viam.app.data.v1.DataService/AddTagsToBinaryDataByFilter',
+ ($0.AddTagsToBinaryDataByFilterRequest value) => value.writeToBuffer(),
+ ($core.List<$core.int> value) =>
+ $0.AddTagsToBinaryDataByFilterResponse.fromBuffer(value));
+ static final _$removeTagsFromBinaryDataByFileIDs = $grpc.ClientMethod<
+ $0.RemoveTagsFromBinaryDataByFileIDsRequest,
+ $0.RemoveTagsFromBinaryDataByFileIDsResponse>(
+ '/viam.app.data.v1.DataService/RemoveTagsFromBinaryDataByFileIDs',
+ ($0.RemoveTagsFromBinaryDataByFileIDsRequest value) =>
+ value.writeToBuffer(),
+ ($core.List<$core.int> value) =>
+ $0.RemoveTagsFromBinaryDataByFileIDsResponse.fromBuffer(value));
+ static final _$removeTagsFromBinaryDataByFilter = $grpc.ClientMethod<
+ $0.RemoveTagsFromBinaryDataByFilterRequest,
+ $0.RemoveTagsFromBinaryDataByFilterResponse>(
+ '/viam.app.data.v1.DataService/RemoveTagsFromBinaryDataByFilter',
+ ($0.RemoveTagsFromBinaryDataByFilterRequest value) =>
+ value.writeToBuffer(),
+ ($core.List<$core.int> value) =>
+ $0.RemoveTagsFromBinaryDataByFilterResponse.fromBuffer(value));
+ static final _$tagsByFilter =
+ $grpc.ClientMethod<$0.TagsByFilterRequest, $0.TagsByFilterResponse>(
+ '/viam.app.data.v1.DataService/TagsByFilter',
+ ($0.TagsByFilterRequest value) => value.writeToBuffer(),
+ ($core.List<$core.int> value) =>
+ $0.TagsByFilterResponse.fromBuffer(value));
+
+ DataServiceClient($grpc.ClientChannel channel,
+ {$grpc.CallOptions? options,
+ $core.Iterable<$grpc.ClientInterceptor>? interceptors})
+ : super(channel, options: options, interceptors: interceptors);
+
+ $grpc.ResponseFuture<$0.TabularDataByFilterResponse> tabularDataByFilter(
+ $0.TabularDataByFilterRequest request,
+ {$grpc.CallOptions? options}) {
+ return $createUnaryCall(_$tabularDataByFilter, request, options: options);
+ }
+
+ $grpc.ResponseFuture<$0.BinaryDataByFilterResponse> binaryDataByFilter(
+ $0.BinaryDataByFilterRequest request,
+ {$grpc.CallOptions? options}) {
+ return $createUnaryCall(_$binaryDataByFilter, request, options: options);
+ }
+
+ $grpc.ResponseFuture<$0.BinaryDataByIDsResponse> binaryDataByIDs(
+ $0.BinaryDataByIDsRequest request,
+ {$grpc.CallOptions? options}) {
+ return $createUnaryCall(_$binaryDataByIDs, request, options: options);
+ }
+
+ $grpc.ResponseFuture<$0.DeleteTabularDataByFilterResponse>
+ deleteTabularDataByFilter($0.DeleteTabularDataByFilterRequest request,
+ {$grpc.CallOptions? options}) {
+ return $createUnaryCall(_$deleteTabularDataByFilter, request,
+ options: options);
+ }
+
+ $grpc.ResponseFuture<$0.DeleteBinaryDataByFilterResponse>
+ deleteBinaryDataByFilter($0.DeleteBinaryDataByFilterRequest request,
+ {$grpc.CallOptions? options}) {
+ return $createUnaryCall(_$deleteBinaryDataByFilter, request,
+ options: options);
+ }
+
+ $grpc.ResponseFuture<$0.DeleteBinaryDataByIDsResponse> deleteBinaryDataByIDs(
+ $0.DeleteBinaryDataByIDsRequest request,
+ {$grpc.CallOptions? options}) {
+ return $createUnaryCall(_$deleteBinaryDataByIDs, request, options: options);
+ }
+
+ $grpc.ResponseFuture<$0.AddTagsToBinaryDataByFileIDsResponse>
+ addTagsToBinaryDataByFileIDs(
+ $0.AddTagsToBinaryDataByFileIDsRequest request,
+ {$grpc.CallOptions? options}) {
+ return $createUnaryCall(_$addTagsToBinaryDataByFileIDs, request,
+ options: options);
+ }
+
+ $grpc.ResponseFuture<$0.AddTagsToBinaryDataByFilterResponse>
+ addTagsToBinaryDataByFilter($0.AddTagsToBinaryDataByFilterRequest request,
+ {$grpc.CallOptions? options}) {
+ return $createUnaryCall(_$addTagsToBinaryDataByFilter, request,
+ options: options);
+ }
+
+ $grpc.ResponseFuture<$0.RemoveTagsFromBinaryDataByFileIDsResponse>
+ removeTagsFromBinaryDataByFileIDs(
+ $0.RemoveTagsFromBinaryDataByFileIDsRequest request,
+ {$grpc.CallOptions? options}) {
+ return $createUnaryCall(_$removeTagsFromBinaryDataByFileIDs, request,
+ options: options);
+ }
+
+ $grpc.ResponseFuture<$0.RemoveTagsFromBinaryDataByFilterResponse>
+ removeTagsFromBinaryDataByFilter(
+ $0.RemoveTagsFromBinaryDataByFilterRequest request,
+ {$grpc.CallOptions? options}) {
+ return $createUnaryCall(_$removeTagsFromBinaryDataByFilter, request,
+ options: options);
+ }
+
+ $grpc.ResponseFuture<$0.TagsByFilterResponse> tagsByFilter(
+ $0.TagsByFilterRequest request,
+ {$grpc.CallOptions? options}) {
+ return $createUnaryCall(_$tagsByFilter, request, options: options);
+ }
+}
+
+abstract class DataServiceBase extends $grpc.Service {
+ $core.String get $name => 'viam.app.data.v1.DataService';
+
+ DataServiceBase() {
+ $addMethod($grpc.ServiceMethod<$0.TabularDataByFilterRequest,
+ $0.TabularDataByFilterResponse>(
+ 'TabularDataByFilter',
+ tabularDataByFilter_Pre,
+ false,
+ false,
+ ($core.List<$core.int> value) =>
+ $0.TabularDataByFilterRequest.fromBuffer(value),
+ ($0.TabularDataByFilterResponse value) => value.writeToBuffer()));
+ $addMethod($grpc.ServiceMethod<$0.BinaryDataByFilterRequest,
+ $0.BinaryDataByFilterResponse>(
+ 'BinaryDataByFilter',
+ binaryDataByFilter_Pre,
+ false,
+ false,
+ ($core.List<$core.int> value) =>
+ $0.BinaryDataByFilterRequest.fromBuffer(value),
+ ($0.BinaryDataByFilterResponse value) => value.writeToBuffer()));
+ $addMethod($grpc.ServiceMethod<$0.BinaryDataByIDsRequest,
+ $0.BinaryDataByIDsResponse>(
+ 'BinaryDataByIDs',
+ binaryDataByIDs_Pre,
+ false,
+ false,
+ ($core.List<$core.int> value) =>
+ $0.BinaryDataByIDsRequest.fromBuffer(value),
+ ($0.BinaryDataByIDsResponse value) => value.writeToBuffer()));
+ $addMethod($grpc.ServiceMethod<$0.DeleteTabularDataByFilterRequest,
+ $0.DeleteTabularDataByFilterResponse>(
+ 'DeleteTabularDataByFilter',
+ deleteTabularDataByFilter_Pre,
+ false,
+ false,
+ ($core.List<$core.int> value) =>
+ $0.DeleteTabularDataByFilterRequest.fromBuffer(value),
+ ($0.DeleteTabularDataByFilterResponse value) => value.writeToBuffer()));
+ $addMethod($grpc.ServiceMethod<$0.DeleteBinaryDataByFilterRequest,
+ $0.DeleteBinaryDataByFilterResponse>(
+ 'DeleteBinaryDataByFilter',
+ deleteBinaryDataByFilter_Pre,
+ false,
+ false,
+ ($core.List<$core.int> value) =>
+ $0.DeleteBinaryDataByFilterRequest.fromBuffer(value),
+ ($0.DeleteBinaryDataByFilterResponse value) => value.writeToBuffer()));
+ $addMethod($grpc.ServiceMethod<$0.DeleteBinaryDataByIDsRequest,
+ $0.DeleteBinaryDataByIDsResponse>(
+ 'DeleteBinaryDataByIDs',
+ deleteBinaryDataByIDs_Pre,
+ false,
+ false,
+ ($core.List<$core.int> value) =>
+ $0.DeleteBinaryDataByIDsRequest.fromBuffer(value),
+ ($0.DeleteBinaryDataByIDsResponse value) => value.writeToBuffer()));
+ $addMethod($grpc.ServiceMethod<$0.AddTagsToBinaryDataByFileIDsRequest,
+ $0.AddTagsToBinaryDataByFileIDsResponse>(
+ 'AddTagsToBinaryDataByFileIDs',
+ addTagsToBinaryDataByFileIDs_Pre,
+ false,
+ false,
+ ($core.List<$core.int> value) =>
+ $0.AddTagsToBinaryDataByFileIDsRequest.fromBuffer(value),
+ ($0.AddTagsToBinaryDataByFileIDsResponse value) =>
+ value.writeToBuffer()));
+ $addMethod($grpc.ServiceMethod<$0.AddTagsToBinaryDataByFilterRequest,
+ $0.AddTagsToBinaryDataByFilterResponse>(
+ 'AddTagsToBinaryDataByFilter',
+ addTagsToBinaryDataByFilter_Pre,
+ false,
+ false,
+ ($core.List<$core.int> value) =>
+ $0.AddTagsToBinaryDataByFilterRequest.fromBuffer(value),
+ ($0.AddTagsToBinaryDataByFilterResponse value) =>
+ value.writeToBuffer()));
+ $addMethod($grpc.ServiceMethod<$0.RemoveTagsFromBinaryDataByFileIDsRequest,
+ $0.RemoveTagsFromBinaryDataByFileIDsResponse>(
+ 'RemoveTagsFromBinaryDataByFileIDs',
+ removeTagsFromBinaryDataByFileIDs_Pre,
+ false,
+ false,
+ ($core.List<$core.int> value) =>
+ $0.RemoveTagsFromBinaryDataByFileIDsRequest.fromBuffer(value),
+ ($0.RemoveTagsFromBinaryDataByFileIDsResponse value) =>
+ value.writeToBuffer()));
+ $addMethod($grpc.ServiceMethod<$0.RemoveTagsFromBinaryDataByFilterRequest,
+ $0.RemoveTagsFromBinaryDataByFilterResponse>(
+ 'RemoveTagsFromBinaryDataByFilter',
+ removeTagsFromBinaryDataByFilter_Pre,
+ false,
+ false,
+ ($core.List<$core.int> value) =>
+ $0.RemoveTagsFromBinaryDataByFilterRequest.fromBuffer(value),
+ ($0.RemoveTagsFromBinaryDataByFilterResponse value) =>
+ value.writeToBuffer()));
+ $addMethod(
+ $grpc.ServiceMethod<$0.TagsByFilterRequest, $0.TagsByFilterResponse>(
+ 'TagsByFilter',
+ tagsByFilter_Pre,
+ false,
+ false,
+ ($core.List<$core.int> value) =>
+ $0.TagsByFilterRequest.fromBuffer(value),
+ ($0.TagsByFilterResponse value) => value.writeToBuffer()));
+ }
+
+ $async.Future<$0.TabularDataByFilterResponse> tabularDataByFilter_Pre(
+ $grpc.ServiceCall call,
+ $async.Future<$0.TabularDataByFilterRequest> request) async {
+ return tabularDataByFilter(call, await request);
+ }
+
+ $async.Future<$0.BinaryDataByFilterResponse> binaryDataByFilter_Pre(
+ $grpc.ServiceCall call,
+ $async.Future<$0.BinaryDataByFilterRequest> request) async {
+ return binaryDataByFilter(call, await request);
+ }
+
+ $async.Future<$0.BinaryDataByIDsResponse> binaryDataByIDs_Pre(
+ $grpc.ServiceCall call,
+ $async.Future<$0.BinaryDataByIDsRequest> request) async {
+ return binaryDataByIDs(call, await request);
+ }
+
+ $async.Future<$0.DeleteTabularDataByFilterResponse>
+ deleteTabularDataByFilter_Pre($grpc.ServiceCall call,
+ $async.Future<$0.DeleteTabularDataByFilterRequest> request) async {
+ return deleteTabularDataByFilter(call, await request);
+ }
+
+ $async.Future<$0.DeleteBinaryDataByFilterResponse>
+ deleteBinaryDataByFilter_Pre($grpc.ServiceCall call,
+ $async.Future<$0.DeleteBinaryDataByFilterRequest> request) async {
+ return deleteBinaryDataByFilter(call, await request);
+ }
+
+ $async.Future<$0.DeleteBinaryDataByIDsResponse> deleteBinaryDataByIDs_Pre(
+ $grpc.ServiceCall call,
+ $async.Future<$0.DeleteBinaryDataByIDsRequest> request) async {
+ return deleteBinaryDataByIDs(call, await request);
+ }
+
+ $async.Future<$0.AddTagsToBinaryDataByFileIDsResponse>
+ addTagsToBinaryDataByFileIDs_Pre($grpc.ServiceCall call,
+ $async.Future<$0.AddTagsToBinaryDataByFileIDsRequest> request) async {
+ return addTagsToBinaryDataByFileIDs(call, await request);
+ }
+
+ $async.Future<$0.AddTagsToBinaryDataByFilterResponse>
+ addTagsToBinaryDataByFilter_Pre($grpc.ServiceCall call,
+ $async.Future<$0.AddTagsToBinaryDataByFilterRequest> request) async {
+ return addTagsToBinaryDataByFilter(call, await request);
+ }
+
+ $async.Future<$0.RemoveTagsFromBinaryDataByFileIDsResponse>
+ removeTagsFromBinaryDataByFileIDs_Pre(
+ $grpc.ServiceCall call,
+ $async.Future<$0.RemoveTagsFromBinaryDataByFileIDsRequest>
+ request) async {
+ return removeTagsFromBinaryDataByFileIDs(call, await request);
+ }
+
+ $async.Future<$0.RemoveTagsFromBinaryDataByFilterResponse>
+ removeTagsFromBinaryDataByFilter_Pre(
+ $grpc.ServiceCall call,
+ $async.Future<$0.RemoveTagsFromBinaryDataByFilterRequest>
+ request) async {
+ return removeTagsFromBinaryDataByFilter(call, await request);
+ }
+
+ $async.Future<$0.TagsByFilterResponse> tagsByFilter_Pre(
+ $grpc.ServiceCall call,
+ $async.Future<$0.TagsByFilterRequest> request) async {
+ return tagsByFilter(call, await request);
+ }
+
+ $async.Future<$0.TabularDataByFilterResponse> tabularDataByFilter(
+ $grpc.ServiceCall call, $0.TabularDataByFilterRequest request);
+ $async.Future<$0.BinaryDataByFilterResponse> binaryDataByFilter(
+ $grpc.ServiceCall call, $0.BinaryDataByFilterRequest request);
+ $async.Future<$0.BinaryDataByIDsResponse> binaryDataByIDs(
+ $grpc.ServiceCall call, $0.BinaryDataByIDsRequest request);
+ $async.Future<$0.DeleteTabularDataByFilterResponse> deleteTabularDataByFilter(
+ $grpc.ServiceCall call, $0.DeleteTabularDataByFilterRequest request);
+ $async.Future<$0.DeleteBinaryDataByFilterResponse> deleteBinaryDataByFilter(
+ $grpc.ServiceCall call, $0.DeleteBinaryDataByFilterRequest request);
+ $async.Future<$0.DeleteBinaryDataByIDsResponse> deleteBinaryDataByIDs(
+ $grpc.ServiceCall call, $0.DeleteBinaryDataByIDsRequest request);
+ $async.Future<$0.AddTagsToBinaryDataByFileIDsResponse>
+ addTagsToBinaryDataByFileIDs($grpc.ServiceCall call,
+ $0.AddTagsToBinaryDataByFileIDsRequest request);
+ $async.Future<$0.AddTagsToBinaryDataByFilterResponse>
+ addTagsToBinaryDataByFilter($grpc.ServiceCall call,
+ $0.AddTagsToBinaryDataByFilterRequest request);
+ $async.Future<$0.RemoveTagsFromBinaryDataByFileIDsResponse>
+ removeTagsFromBinaryDataByFileIDs($grpc.ServiceCall call,
+ $0.RemoveTagsFromBinaryDataByFileIDsRequest request);
+ $async.Future<$0.RemoveTagsFromBinaryDataByFilterResponse>
+ removeTagsFromBinaryDataByFilter($grpc.ServiceCall call,
+ $0.RemoveTagsFromBinaryDataByFilterRequest request);
+ $async.Future<$0.TagsByFilterResponse> tagsByFilter(
+ $grpc.ServiceCall call, $0.TagsByFilterRequest request);
+}
diff --git a/lib/src/gen/app/data/v1/data.pbjson.dart b/lib/src/gen/app/data/v1/data.pbjson.dart
new file mode 100644
index 00000000000..a01e3b7eceb
--- /dev/null
+++ b/lib/src/gen/app/data/v1/data.pbjson.dart
@@ -0,0 +1,428 @@
+///
+// Generated code. Do not modify.
+// source: app/data/v1/data.proto
+//
+// @dart = 2.12
+// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,deprecated_member_use_from_same_package,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
+
+import 'dart:core' as $core;
+import 'dart:convert' as $convert;
+import 'dart:typed_data' as $typed_data;
+@$core.Deprecated('Use orderDescriptor instead')
+const Order$json = const {
+ '1': 'Order',
+ '2': const [
+ const {'1': 'ORDER_UNSPECIFIED', '2': 0},
+ const {'1': 'ORDER_DESCENDING', '2': 1},
+ const {'1': 'ORDER_ASCENDING', '2': 2},
+ ],
+};
+
+/// Descriptor for `Order`. Decode as a `google.protobuf.EnumDescriptorProto`.
+final $typed_data.Uint8List orderDescriptor = $convert.base64Decode('CgVPcmRlchIVChFPUkRFUl9VTlNQRUNJRklFRBAAEhQKEE9SREVSX0RFU0NFTkRJTkcQARITCg9PUkRFUl9BU0NFTkRJTkcQAg==');
+@$core.Deprecated('Use statusDescriptor instead')
+const Status$json = const {
+ '1': 'Status',
+ '2': const [
+ const {'1': 'STATUS_UNSPECIFIED', '2': 0},
+ const {'1': 'STATUS_PARTIAL_SUCCESS', '2': 1},
+ const {'1': 'STATUS_SUCCESS', '2': 2},
+ ],
+};
+
+/// Descriptor for `Status`. Decode as a `google.protobuf.EnumDescriptorProto`.
+final $typed_data.Uint8List statusDescriptor = $convert.base64Decode('CgZTdGF0dXMSFgoSU1RBVFVTX1VOU1BFQ0lGSUVEEAASGgoWU1RBVFVTX1BBUlRJQUxfU1VDQ0VTUxABEhIKDlNUQVRVU19TVUNDRVNTEAI=');
+@$core.Deprecated('Use tagsFilterTypeDescriptor instead')
+const TagsFilterType$json = const {
+ '1': 'TagsFilterType',
+ '2': const [
+ const {'1': 'TAGS_FILTER_TYPE_UNSPECIFIED', '2': 0},
+ const {'1': 'TAGS_FILTER_TYPE_MATCH_BY_OR', '2': 1},
+ const {'1': 'TAGS_FILTER_TYPE_TAGGED', '2': 2},
+ const {'1': 'TAGS_FILTER_TYPE_UNTAGGED', '2': 3},
+ ],
+};
+
+/// Descriptor for `TagsFilterType`. Decode as a `google.protobuf.EnumDescriptorProto`.
+final $typed_data.Uint8List tagsFilterTypeDescriptor = $convert.base64Decode('Cg5UYWdzRmlsdGVyVHlwZRIgChxUQUdTX0ZJTFRFUl9UWVBFX1VOU1BFQ0lGSUVEEAASIAocVEFHU19GSUxURVJfVFlQRV9NQVRDSF9CWV9PUhABEhsKF1RBR1NfRklMVEVSX1RZUEVfVEFHR0VEEAISHQoZVEFHU19GSUxURVJfVFlQRV9VTlRBR0dFRBAD');
+@$core.Deprecated('Use resultDescriptor instead')
+const Result$json = const {
+ '1': 'Result',
+ '2': const [
+ const {'1': 'status', '3': 1, '4': 1, '5': 14, '6': '.viam.app.data.v1.Status', '10': 'status'},
+ const {'1': 'message', '3': 2, '4': 1, '5': 9, '10': 'message'},
+ ],
+};
+
+/// Descriptor for `Result`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List resultDescriptor = $convert.base64Decode('CgZSZXN1bHQSMAoGc3RhdHVzGAEgASgOMhgudmlhbS5hcHAuZGF0YS52MS5TdGF0dXNSBnN0YXR1cxIYCgdtZXNzYWdlGAIgASgJUgdtZXNzYWdl');
+@$core.Deprecated('Use dataRequestDescriptor instead')
+const DataRequest$json = const {
+ '1': 'DataRequest',
+ '2': const [
+ const {'1': 'filter', '3': 1, '4': 1, '5': 11, '6': '.viam.app.data.v1.Filter', '10': 'filter'},
+ const {'1': 'limit', '3': 2, '4': 1, '5': 4, '10': 'limit'},
+ const {'1': 'last', '3': 3, '4': 1, '5': 9, '10': 'last'},
+ const {'1': 'sort_order', '3': 4, '4': 1, '5': 14, '6': '.viam.app.data.v1.Order', '10': 'sortOrder'},
+ ],
+};
+
+/// Descriptor for `DataRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List dataRequestDescriptor = $convert.base64Decode('CgtEYXRhUmVxdWVzdBIwCgZmaWx0ZXIYASABKAsyGC52aWFtLmFwcC5kYXRhLnYxLkZpbHRlclIGZmlsdGVyEhQKBWxpbWl0GAIgASgEUgVsaW1pdBISCgRsYXN0GAMgASgJUgRsYXN0EjYKCnNvcnRfb3JkZXIYBCABKA4yFy52aWFtLmFwcC5kYXRhLnYxLk9yZGVyUglzb3J0T3JkZXI=');
+@$core.Deprecated('Use filterDescriptor instead')
+const Filter$json = const {
+ '1': 'Filter',
+ '2': const [
+ const {'1': 'component_name', '3': 1, '4': 1, '5': 9, '10': 'componentName'},
+ const {'1': 'component_type', '3': 2, '4': 1, '5': 9, '10': 'componentType'},
+ const {'1': 'component_model', '3': 3, '4': 1, '5': 9, '10': 'componentModel'},
+ const {'1': 'method', '3': 4, '4': 1, '5': 9, '10': 'method'},
+ const {'1': 'robot_name', '3': 6, '4': 1, '5': 9, '10': 'robotName'},
+ const {'1': 'robot_id', '3': 7, '4': 1, '5': 9, '10': 'robotId'},
+ const {'1': 'part_name', '3': 8, '4': 1, '5': 9, '10': 'partName'},
+ const {'1': 'part_id', '3': 9, '4': 1, '5': 9, '10': 'partId'},
+ const {'1': 'location_ids', '3': 10, '4': 3, '5': 9, '10': 'locationIds'},
+ const {'1': 'org_ids', '3': 11, '4': 3, '5': 9, '10': 'orgIds'},
+ const {'1': 'mime_type', '3': 12, '4': 3, '5': 9, '10': 'mimeType'},
+ const {'1': 'interval', '3': 13, '4': 1, '5': 11, '6': '.viam.app.data.v1.CaptureInterval', '10': 'interval'},
+ const {'1': 'tags_filter', '3': 14, '4': 1, '5': 11, '6': '.viam.app.data.v1.TagsFilter', '10': 'tagsFilter'},
+ const {
+ '1': 'tags',
+ '3': 5,
+ '4': 3,
+ '5': 9,
+ '8': const {'3': true},
+ '10': 'tags',
+ },
+ ],
+};
+
+/// Descriptor for `Filter`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List filterDescriptor = $convert.base64Decode('CgZGaWx0ZXISJQoOY29tcG9uZW50X25hbWUYASABKAlSDWNvbXBvbmVudE5hbWUSJQoOY29tcG9uZW50X3R5cGUYAiABKAlSDWNvbXBvbmVudFR5cGUSJwoPY29tcG9uZW50X21vZGVsGAMgASgJUg5jb21wb25lbnRNb2RlbBIWCgZtZXRob2QYBCABKAlSBm1ldGhvZBIdCgpyb2JvdF9uYW1lGAYgASgJUglyb2JvdE5hbWUSGQoIcm9ib3RfaWQYByABKAlSB3JvYm90SWQSGwoJcGFydF9uYW1lGAggASgJUghwYXJ0TmFtZRIXCgdwYXJ0X2lkGAkgASgJUgZwYXJ0SWQSIQoMbG9jYXRpb25faWRzGAogAygJUgtsb2NhdGlvbklkcxIXCgdvcmdfaWRzGAsgAygJUgZvcmdJZHMSGwoJbWltZV90eXBlGAwgAygJUghtaW1lVHlwZRI9CghpbnRlcnZhbBgNIAEoCzIhLnZpYW0uYXBwLmRhdGEudjEuQ2FwdHVyZUludGVydmFsUghpbnRlcnZhbBI9Cgt0YWdzX2ZpbHRlchgOIAEoCzIcLnZpYW0uYXBwLmRhdGEudjEuVGFnc0ZpbHRlclIKdGFnc0ZpbHRlchIWCgR0YWdzGAUgAygJQgIYAVIEdGFncw==');
+@$core.Deprecated('Use tagsFilterDescriptor instead')
+const TagsFilter$json = const {
+ '1': 'TagsFilter',
+ '2': const [
+ const {'1': 'type', '3': 1, '4': 1, '5': 14, '6': '.viam.app.data.v1.TagsFilterType', '10': 'type'},
+ const {'1': 'tags', '3': 2, '4': 3, '5': 9, '10': 'tags'},
+ ],
+};
+
+/// Descriptor for `TagsFilter`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List tagsFilterDescriptor = $convert.base64Decode('CgpUYWdzRmlsdGVyEjQKBHR5cGUYASABKA4yIC52aWFtLmFwcC5kYXRhLnYxLlRhZ3NGaWx0ZXJUeXBlUgR0eXBlEhIKBHRhZ3MYAiADKAlSBHRhZ3M=');
+@$core.Deprecated('Use captureMetadataDescriptor instead')
+const CaptureMetadata$json = const {
+ '1': 'CaptureMetadata',
+ '2': const [
+ const {'1': 'org_id', '3': 1, '4': 1, '5': 9, '10': 'orgId'},
+ const {'1': 'location_id', '3': 2, '4': 1, '5': 9, '10': 'locationId'},
+ const {'1': 'robot_name', '3': 3, '4': 1, '5': 9, '10': 'robotName'},
+ const {'1': 'robot_id', '3': 4, '4': 1, '5': 9, '10': 'robotId'},
+ const {'1': 'part_name', '3': 5, '4': 1, '5': 9, '10': 'partName'},
+ const {'1': 'part_id', '3': 6, '4': 1, '5': 9, '10': 'partId'},
+ const {'1': 'component_type', '3': 7, '4': 1, '5': 9, '10': 'componentType'},
+ const {'1': 'component_model', '3': 8, '4': 1, '5': 9, '10': 'componentModel'},
+ const {'1': 'component_name', '3': 9, '4': 1, '5': 9, '10': 'componentName'},
+ const {'1': 'method_name', '3': 10, '4': 1, '5': 9, '10': 'methodName'},
+ const {'1': 'method_parameters', '3': 11, '4': 3, '5': 11, '6': '.viam.app.data.v1.CaptureMetadata.MethodParametersEntry', '10': 'methodParameters'},
+ const {'1': 'tags', '3': 12, '4': 3, '5': 9, '10': 'tags'},
+ const {'1': 'mime_type', '3': 13, '4': 1, '5': 9, '10': 'mimeType'},
+ ],
+ '3': const [CaptureMetadata_MethodParametersEntry$json],
+};
+
+@$core.Deprecated('Use captureMetadataDescriptor instead')
+const CaptureMetadata_MethodParametersEntry$json = const {
+ '1': 'MethodParametersEntry',
+ '2': const [
+ const {'1': 'key', '3': 1, '4': 1, '5': 9, '10': 'key'},
+ const {'1': 'value', '3': 2, '4': 1, '5': 11, '6': '.google.protobuf.Any', '10': 'value'},
+ ],
+ '7': const {'7': true},
+};
+
+/// Descriptor for `CaptureMetadata`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List captureMetadataDescriptor = $convert.base64Decode('Cg9DYXB0dXJlTWV0YWRhdGESFQoGb3JnX2lkGAEgASgJUgVvcmdJZBIfCgtsb2NhdGlvbl9pZBgCIAEoCVIKbG9jYXRpb25JZBIdCgpyb2JvdF9uYW1lGAMgASgJUglyb2JvdE5hbWUSGQoIcm9ib3RfaWQYBCABKAlSB3JvYm90SWQSGwoJcGFydF9uYW1lGAUgASgJUghwYXJ0TmFtZRIXCgdwYXJ0X2lkGAYgASgJUgZwYXJ0SWQSJQoOY29tcG9uZW50X3R5cGUYByABKAlSDWNvbXBvbmVudFR5cGUSJwoPY29tcG9uZW50X21vZGVsGAggASgJUg5jb21wb25lbnRNb2RlbBIlCg5jb21wb25lbnRfbmFtZRgJIAEoCVINY29tcG9uZW50TmFtZRIfCgttZXRob2RfbmFtZRgKIAEoCVIKbWV0aG9kTmFtZRJkChFtZXRob2RfcGFyYW1ldGVycxgLIAMoCzI3LnZpYW0uYXBwLmRhdGEudjEuQ2FwdHVyZU1ldGFkYXRhLk1ldGhvZFBhcmFtZXRlcnNFbnRyeVIQbWV0aG9kUGFyYW1ldGVycxISCgR0YWdzGAwgAygJUgR0YWdzEhsKCW1pbWVfdHlwZRgNIAEoCVIIbWltZVR5cGUaWQoVTWV0aG9kUGFyYW1ldGVyc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EioKBXZhbHVlGAIgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIFdmFsdWU6AjgB');
+@$core.Deprecated('Use captureIntervalDescriptor instead')
+const CaptureInterval$json = const {
+ '1': 'CaptureInterval',
+ '2': const [
+ const {'1': 'start', '3': 1, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '10': 'start'},
+ const {'1': 'end', '3': 2, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '10': 'end'},
+ ],
+};
+
+/// Descriptor for `CaptureInterval`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List captureIntervalDescriptor = $convert.base64Decode('Cg9DYXB0dXJlSW50ZXJ2YWwSMAoFc3RhcnQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wUgVzdGFydBIsCgNlbmQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wUgNlbmQ=');
+@$core.Deprecated('Use tabularDataByFilterRequestDescriptor instead')
+const TabularDataByFilterRequest$json = const {
+ '1': 'TabularDataByFilterRequest',
+ '2': const [
+ const {'1': 'data_request', '3': 1, '4': 1, '5': 11, '6': '.viam.app.data.v1.DataRequest', '10': 'dataRequest'},
+ const {'1': 'count_only', '3': 2, '4': 1, '5': 8, '10': 'countOnly'},
+ ],
+};
+
+/// Descriptor for `TabularDataByFilterRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List tabularDataByFilterRequestDescriptor = $convert.base64Decode('ChpUYWJ1bGFyRGF0YUJ5RmlsdGVyUmVxdWVzdBJACgxkYXRhX3JlcXVlc3QYASABKAsyHS52aWFtLmFwcC5kYXRhLnYxLkRhdGFSZXF1ZXN0UgtkYXRhUmVxdWVzdBIdCgpjb3VudF9vbmx5GAIgASgIUgljb3VudE9ubHk=');
+@$core.Deprecated('Use tabularDataByFilterResponseDescriptor instead')
+const TabularDataByFilterResponse$json = const {
+ '1': 'TabularDataByFilterResponse',
+ '2': const [
+ const {'1': 'metadata', '3': 1, '4': 3, '5': 11, '6': '.viam.app.data.v1.CaptureMetadata', '10': 'metadata'},
+ const {'1': 'data', '3': 2, '4': 3, '5': 11, '6': '.viam.app.data.v1.TabularData', '10': 'data'},
+ const {'1': 'count', '3': 3, '4': 1, '5': 3, '10': 'count'},
+ const {'1': 'last', '3': 4, '4': 1, '5': 9, '10': 'last'},
+ const {'1': 'total_size_bytes', '3': 5, '4': 1, '5': 4, '10': 'totalSizeBytes'},
+ ],
+};
+
+/// Descriptor for `TabularDataByFilterResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List tabularDataByFilterResponseDescriptor = $convert.base64Decode('ChtUYWJ1bGFyRGF0YUJ5RmlsdGVyUmVzcG9uc2USPQoIbWV0YWRhdGEYASADKAsyIS52aWFtLmFwcC5kYXRhLnYxLkNhcHR1cmVNZXRhZGF0YVIIbWV0YWRhdGESMQoEZGF0YRgCIAMoCzIdLnZpYW0uYXBwLmRhdGEudjEuVGFidWxhckRhdGFSBGRhdGESFAoFY291bnQYAyABKANSBWNvdW50EhIKBGxhc3QYBCABKAlSBGxhc3QSKAoQdG90YWxfc2l6ZV9ieXRlcxgFIAEoBFIOdG90YWxTaXplQnl0ZXM=');
+@$core.Deprecated('Use tabularDataDescriptor instead')
+const TabularData$json = const {
+ '1': 'TabularData',
+ '2': const [
+ const {'1': 'data', '3': 1, '4': 1, '5': 11, '6': '.google.protobuf.Struct', '10': 'data'},
+ const {'1': 'metadata_index', '3': 2, '4': 1, '5': 5, '10': 'metadataIndex'},
+ const {'1': 'time_requested', '3': 3, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '10': 'timeRequested'},
+ const {'1': 'time_received', '3': 4, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '10': 'timeReceived'},
+ ],
+};
+
+/// Descriptor for `TabularData`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List tabularDataDescriptor = $convert.base64Decode('CgtUYWJ1bGFyRGF0YRIrCgRkYXRhGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdFIEZGF0YRIlCg5tZXRhZGF0YV9pbmRleBgCIAEoBVINbWV0YWRhdGFJbmRleBJBCg50aW1lX3JlcXVlc3RlZBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBSDXRpbWVSZXF1ZXN0ZWQSPwoNdGltZV9yZWNlaXZlZBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBSDHRpbWVSZWNlaXZlZA==');
+@$core.Deprecated('Use binaryDataDescriptor instead')
+const BinaryData$json = const {
+ '1': 'BinaryData',
+ '2': const [
+ const {'1': 'binary', '3': 1, '4': 1, '5': 12, '10': 'binary'},
+ const {'1': 'metadata', '3': 2, '4': 1, '5': 11, '6': '.viam.app.data.v1.BinaryMetadata', '10': 'metadata'},
+ ],
+};
+
+/// Descriptor for `BinaryData`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List binaryDataDescriptor = $convert.base64Decode('CgpCaW5hcnlEYXRhEhYKBmJpbmFyeRgBIAEoDFIGYmluYXJ5EjwKCG1ldGFkYXRhGAIgASgLMiAudmlhbS5hcHAuZGF0YS52MS5CaW5hcnlNZXRhZGF0YVIIbWV0YWRhdGE=');
+@$core.Deprecated('Use binaryDataByFilterRequestDescriptor instead')
+const BinaryDataByFilterRequest$json = const {
+ '1': 'BinaryDataByFilterRequest',
+ '2': const [
+ const {'1': 'data_request', '3': 1, '4': 1, '5': 11, '6': '.viam.app.data.v1.DataRequest', '10': 'dataRequest'},
+ const {'1': 'include_binary', '3': 2, '4': 1, '5': 8, '10': 'includeBinary'},
+ const {'1': 'count_only', '3': 3, '4': 1, '5': 8, '10': 'countOnly'},
+ ],
+};
+
+/// Descriptor for `BinaryDataByFilterRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List binaryDataByFilterRequestDescriptor = $convert.base64Decode('ChlCaW5hcnlEYXRhQnlGaWx0ZXJSZXF1ZXN0EkAKDGRhdGFfcmVxdWVzdBgBIAEoCzIdLnZpYW0uYXBwLmRhdGEudjEuRGF0YVJlcXVlc3RSC2RhdGFSZXF1ZXN0EiUKDmluY2x1ZGVfYmluYXJ5GAIgASgIUg1pbmNsdWRlQmluYXJ5Eh0KCmNvdW50X29ubHkYAyABKAhSCWNvdW50T25seQ==');
+@$core.Deprecated('Use binaryDataByFilterResponseDescriptor instead')
+const BinaryDataByFilterResponse$json = const {
+ '1': 'BinaryDataByFilterResponse',
+ '2': const [
+ const {'1': 'data', '3': 1, '4': 3, '5': 11, '6': '.viam.app.data.v1.BinaryData', '10': 'data'},
+ const {'1': 'count', '3': 2, '4': 1, '5': 4, '10': 'count'},
+ const {'1': 'last', '3': 3, '4': 1, '5': 9, '10': 'last'},
+ ],
+};
+
+/// Descriptor for `BinaryDataByFilterResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List binaryDataByFilterResponseDescriptor = $convert.base64Decode('ChpCaW5hcnlEYXRhQnlGaWx0ZXJSZXNwb25zZRIwCgRkYXRhGAEgAygLMhwudmlhbS5hcHAuZGF0YS52MS5CaW5hcnlEYXRhUgRkYXRhEhQKBWNvdW50GAIgASgEUgVjb3VudBISCgRsYXN0GAMgASgJUgRsYXN0');
+@$core.Deprecated('Use binaryDataByIDsRequestDescriptor instead')
+const BinaryDataByIDsRequest$json = const {
+ '1': 'BinaryDataByIDsRequest',
+ '2': const [
+ const {'1': 'file_ids', '3': 1, '4': 3, '5': 9, '10': 'fileIds'},
+ const {'1': 'include_binary', '3': 2, '4': 1, '5': 8, '10': 'includeBinary'},
+ ],
+};
+
+/// Descriptor for `BinaryDataByIDsRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List binaryDataByIDsRequestDescriptor = $convert.base64Decode('ChZCaW5hcnlEYXRhQnlJRHNSZXF1ZXN0EhkKCGZpbGVfaWRzGAEgAygJUgdmaWxlSWRzEiUKDmluY2x1ZGVfYmluYXJ5GAIgASgIUg1pbmNsdWRlQmluYXJ5');
+@$core.Deprecated('Use binaryDataByIDsResponseDescriptor instead')
+const BinaryDataByIDsResponse$json = const {
+ '1': 'BinaryDataByIDsResponse',
+ '2': const [
+ const {'1': 'data', '3': 1, '4': 3, '5': 11, '6': '.viam.app.data.v1.BinaryData', '10': 'data'},
+ const {'1': 'count', '3': 2, '4': 1, '5': 4, '10': 'count'},
+ ],
+};
+
+/// Descriptor for `BinaryDataByIDsResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List binaryDataByIDsResponseDescriptor = $convert.base64Decode('ChdCaW5hcnlEYXRhQnlJRHNSZXNwb25zZRIwCgRkYXRhGAEgAygLMhwudmlhbS5hcHAuZGF0YS52MS5CaW5hcnlEYXRhUgRkYXRhEhQKBWNvdW50GAIgASgEUgVjb3VudA==');
+@$core.Deprecated('Use binaryMetadataDescriptor instead')
+const BinaryMetadata$json = const {
+ '1': 'BinaryMetadata',
+ '2': const [
+ const {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'},
+ const {'1': 'capture_metadata', '3': 2, '4': 1, '5': 11, '6': '.viam.app.data.v1.CaptureMetadata', '10': 'captureMetadata'},
+ const {'1': 'time_requested', '3': 3, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '10': 'timeRequested'},
+ const {'1': 'time_received', '3': 4, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '10': 'timeReceived'},
+ const {'1': 'file_name', '3': 5, '4': 1, '5': 9, '10': 'fileName'},
+ const {'1': 'file_ext', '3': 6, '4': 1, '5': 9, '10': 'fileExt'},
+ const {'1': 'uri', '3': 7, '4': 1, '5': 9, '10': 'uri'},
+ ],
+};
+
+/// Descriptor for `BinaryMetadata`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List binaryMetadataDescriptor = $convert.base64Decode('Cg5CaW5hcnlNZXRhZGF0YRIOCgJpZBgBIAEoCVICaWQSTAoQY2FwdHVyZV9tZXRhZGF0YRgCIAEoCzIhLnZpYW0uYXBwLmRhdGEudjEuQ2FwdHVyZU1ldGFkYXRhUg9jYXB0dXJlTWV0YWRhdGESQQoOdGltZV9yZXF1ZXN0ZWQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wUg10aW1lUmVxdWVzdGVkEj8KDXRpbWVfcmVjZWl2ZWQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wUgx0aW1lUmVjZWl2ZWQSGwoJZmlsZV9uYW1lGAUgASgJUghmaWxlTmFtZRIZCghmaWxlX2V4dBgGIAEoCVIHZmlsZUV4dBIQCgN1cmkYByABKAlSA3VyaQ==');
+@$core.Deprecated('Use deleteTabularDataByFilterRequestDescriptor instead')
+const DeleteTabularDataByFilterRequest$json = const {
+ '1': 'DeleteTabularDataByFilterRequest',
+ '2': const [
+ const {'1': 'filter', '3': 1, '4': 1, '5': 11, '6': '.viam.app.data.v1.Filter', '10': 'filter'},
+ ],
+};
+
+/// Descriptor for `DeleteTabularDataByFilterRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List deleteTabularDataByFilterRequestDescriptor = $convert.base64Decode('CiBEZWxldGVUYWJ1bGFyRGF0YUJ5RmlsdGVyUmVxdWVzdBIwCgZmaWx0ZXIYASABKAsyGC52aWFtLmFwcC5kYXRhLnYxLkZpbHRlclIGZmlsdGVy');
+@$core.Deprecated('Use deleteTabularDataByFilterResponseDescriptor instead')
+const DeleteTabularDataByFilterResponse$json = const {
+ '1': 'DeleteTabularDataByFilterResponse',
+ '2': const [
+ const {'1': 'deleted_count', '3': 1, '4': 1, '5': 4, '10': 'deletedCount'},
+ const {'1': 'result', '3': 2, '4': 1, '5': 11, '6': '.viam.app.data.v1.Result', '10': 'result'},
+ ],
+};
+
+/// Descriptor for `DeleteTabularDataByFilterResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List deleteTabularDataByFilterResponseDescriptor = $convert.base64Decode('CiFEZWxldGVUYWJ1bGFyRGF0YUJ5RmlsdGVyUmVzcG9uc2USIwoNZGVsZXRlZF9jb3VudBgBIAEoBFIMZGVsZXRlZENvdW50EjAKBnJlc3VsdBgCIAEoCzIYLnZpYW0uYXBwLmRhdGEudjEuUmVzdWx0UgZyZXN1bHQ=');
+@$core.Deprecated('Use deleteBinaryDataByFilterRequestDescriptor instead')
+const DeleteBinaryDataByFilterRequest$json = const {
+ '1': 'DeleteBinaryDataByFilterRequest',
+ '2': const [
+ const {'1': 'filter', '3': 1, '4': 1, '5': 11, '6': '.viam.app.data.v1.Filter', '10': 'filter'},
+ ],
+};
+
+/// Descriptor for `DeleteBinaryDataByFilterRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List deleteBinaryDataByFilterRequestDescriptor = $convert.base64Decode('Ch9EZWxldGVCaW5hcnlEYXRhQnlGaWx0ZXJSZXF1ZXN0EjAKBmZpbHRlchgBIAEoCzIYLnZpYW0uYXBwLmRhdGEudjEuRmlsdGVyUgZmaWx0ZXI=');
+@$core.Deprecated('Use deleteBinaryDataByFilterResponseDescriptor instead')
+const DeleteBinaryDataByFilterResponse$json = const {
+ '1': 'DeleteBinaryDataByFilterResponse',
+ '2': const [
+ const {'1': 'deleted_count', '3': 1, '4': 1, '5': 4, '10': 'deletedCount'},
+ const {'1': 'result', '3': 2, '4': 1, '5': 11, '6': '.viam.app.data.v1.Result', '10': 'result'},
+ ],
+};
+
+/// Descriptor for `DeleteBinaryDataByFilterResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List deleteBinaryDataByFilterResponseDescriptor = $convert.base64Decode('CiBEZWxldGVCaW5hcnlEYXRhQnlGaWx0ZXJSZXNwb25zZRIjCg1kZWxldGVkX2NvdW50GAEgASgEUgxkZWxldGVkQ291bnQSMAoGcmVzdWx0GAIgASgLMhgudmlhbS5hcHAuZGF0YS52MS5SZXN1bHRSBnJlc3VsdA==');
+@$core.Deprecated('Use deleteBinaryDataByIDsRequestDescriptor instead')
+const DeleteBinaryDataByIDsRequest$json = const {
+ '1': 'DeleteBinaryDataByIDsRequest',
+ '2': const [
+ const {'1': 'file_ids', '3': 1, '4': 3, '5': 9, '10': 'fileIds'},
+ ],
+};
+
+/// Descriptor for `DeleteBinaryDataByIDsRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List deleteBinaryDataByIDsRequestDescriptor = $convert.base64Decode('ChxEZWxldGVCaW5hcnlEYXRhQnlJRHNSZXF1ZXN0EhkKCGZpbGVfaWRzGAEgAygJUgdmaWxlSWRz');
+@$core.Deprecated('Use deleteBinaryDataByIDsResponseDescriptor instead')
+const DeleteBinaryDataByIDsResponse$json = const {
+ '1': 'DeleteBinaryDataByIDsResponse',
+ '2': const [
+ const {'1': 'deleted_count', '3': 1, '4': 1, '5': 4, '10': 'deletedCount'},
+ const {'1': 'result', '3': 2, '4': 1, '5': 11, '6': '.viam.app.data.v1.Result', '10': 'result'},
+ ],
+};
+
+/// Descriptor for `DeleteBinaryDataByIDsResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List deleteBinaryDataByIDsResponseDescriptor = $convert.base64Decode('Ch1EZWxldGVCaW5hcnlEYXRhQnlJRHNSZXNwb25zZRIjCg1kZWxldGVkX2NvdW50GAEgASgEUgxkZWxldGVkQ291bnQSMAoGcmVzdWx0GAIgASgLMhgudmlhbS5hcHAuZGF0YS52MS5SZXN1bHRSBnJlc3VsdA==');
+@$core.Deprecated('Use addTagsToBinaryDataByFileIDsRequestDescriptor instead')
+const AddTagsToBinaryDataByFileIDsRequest$json = const {
+ '1': 'AddTagsToBinaryDataByFileIDsRequest',
+ '2': const [
+ const {'1': 'file_ids', '3': 1, '4': 3, '5': 9, '10': 'fileIds'},
+ const {'1': 'tags', '3': 2, '4': 3, '5': 9, '10': 'tags'},
+ ],
+};
+
+/// Descriptor for `AddTagsToBinaryDataByFileIDsRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List addTagsToBinaryDataByFileIDsRequestDescriptor = $convert.base64Decode('CiNBZGRUYWdzVG9CaW5hcnlEYXRhQnlGaWxlSURzUmVxdWVzdBIZCghmaWxlX2lkcxgBIAMoCVIHZmlsZUlkcxISCgR0YWdzGAIgAygJUgR0YWdz');
+@$core.Deprecated('Use addTagsToBinaryDataByFileIDsResponseDescriptor instead')
+const AddTagsToBinaryDataByFileIDsResponse$json = const {
+ '1': 'AddTagsToBinaryDataByFileIDsResponse',
+};
+
+/// Descriptor for `AddTagsToBinaryDataByFileIDsResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List addTagsToBinaryDataByFileIDsResponseDescriptor = $convert.base64Decode('CiRBZGRUYWdzVG9CaW5hcnlEYXRhQnlGaWxlSURzUmVzcG9uc2U=');
+@$core.Deprecated('Use addTagsToBinaryDataByFilterRequestDescriptor instead')
+const AddTagsToBinaryDataByFilterRequest$json = const {
+ '1': 'AddTagsToBinaryDataByFilterRequest',
+ '2': const [
+ const {'1': 'filter', '3': 1, '4': 1, '5': 11, '6': '.viam.app.data.v1.Filter', '10': 'filter'},
+ const {'1': 'tags', '3': 2, '4': 3, '5': 9, '10': 'tags'},
+ ],
+};
+
+/// Descriptor for `AddTagsToBinaryDataByFilterRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List addTagsToBinaryDataByFilterRequestDescriptor = $convert.base64Decode('CiJBZGRUYWdzVG9CaW5hcnlEYXRhQnlGaWx0ZXJSZXF1ZXN0EjAKBmZpbHRlchgBIAEoCzIYLnZpYW0uYXBwLmRhdGEudjEuRmlsdGVyUgZmaWx0ZXISEgoEdGFncxgCIAMoCVIEdGFncw==');
+@$core.Deprecated('Use addTagsToBinaryDataByFilterResponseDescriptor instead')
+const AddTagsToBinaryDataByFilterResponse$json = const {
+ '1': 'AddTagsToBinaryDataByFilterResponse',
+};
+
+/// Descriptor for `AddTagsToBinaryDataByFilterResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List addTagsToBinaryDataByFilterResponseDescriptor = $convert.base64Decode('CiNBZGRUYWdzVG9CaW5hcnlEYXRhQnlGaWx0ZXJSZXNwb25zZQ==');
+@$core.Deprecated('Use removeTagsFromBinaryDataByFileIDsRequestDescriptor instead')
+const RemoveTagsFromBinaryDataByFileIDsRequest$json = const {
+ '1': 'RemoveTagsFromBinaryDataByFileIDsRequest',
+ '2': const [
+ const {'1': 'file_ids', '3': 1, '4': 3, '5': 9, '10': 'fileIds'},
+ const {'1': 'tags', '3': 2, '4': 3, '5': 9, '10': 'tags'},
+ ],
+};
+
+/// Descriptor for `RemoveTagsFromBinaryDataByFileIDsRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List removeTagsFromBinaryDataByFileIDsRequestDescriptor = $convert.base64Decode('CihSZW1vdmVUYWdzRnJvbUJpbmFyeURhdGFCeUZpbGVJRHNSZXF1ZXN0EhkKCGZpbGVfaWRzGAEgAygJUgdmaWxlSWRzEhIKBHRhZ3MYAiADKAlSBHRhZ3M=');
+@$core.Deprecated('Use removeTagsFromBinaryDataByFileIDsResponseDescriptor instead')
+const RemoveTagsFromBinaryDataByFileIDsResponse$json = const {
+ '1': 'RemoveTagsFromBinaryDataByFileIDsResponse',
+ '2': const [
+ const {'1': 'deleted_count', '3': 1, '4': 1, '5': 4, '10': 'deletedCount'},
+ ],
+};
+
+/// Descriptor for `RemoveTagsFromBinaryDataByFileIDsResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List removeTagsFromBinaryDataByFileIDsResponseDescriptor = $convert.base64Decode('CilSZW1vdmVUYWdzRnJvbUJpbmFyeURhdGFCeUZpbGVJRHNSZXNwb25zZRIjCg1kZWxldGVkX2NvdW50GAEgASgEUgxkZWxldGVkQ291bnQ=');
+@$core.Deprecated('Use removeTagsFromBinaryDataByFilterRequestDescriptor instead')
+const RemoveTagsFromBinaryDataByFilterRequest$json = const {
+ '1': 'RemoveTagsFromBinaryDataByFilterRequest',
+ '2': const [
+ const {'1': 'filter', '3': 1, '4': 1, '5': 11, '6': '.viam.app.data.v1.Filter', '10': 'filter'},
+ const {'1': 'tags', '3': 2, '4': 3, '5': 9, '10': 'tags'},
+ ],
+};
+
+/// Descriptor for `RemoveTagsFromBinaryDataByFilterRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List removeTagsFromBinaryDataByFilterRequestDescriptor = $convert.base64Decode('CidSZW1vdmVUYWdzRnJvbUJpbmFyeURhdGFCeUZpbHRlclJlcXVlc3QSMAoGZmlsdGVyGAEgASgLMhgudmlhbS5hcHAuZGF0YS52MS5GaWx0ZXJSBmZpbHRlchISCgR0YWdzGAIgAygJUgR0YWdz');
+@$core.Deprecated('Use removeTagsFromBinaryDataByFilterResponseDescriptor instead')
+const RemoveTagsFromBinaryDataByFilterResponse$json = const {
+ '1': 'RemoveTagsFromBinaryDataByFilterResponse',
+ '2': const [
+ const {'1': 'deleted_count', '3': 1, '4': 1, '5': 4, '10': 'deletedCount'},
+ ],
+};
+
+/// Descriptor for `RemoveTagsFromBinaryDataByFilterResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List removeTagsFromBinaryDataByFilterResponseDescriptor = $convert.base64Decode('CihSZW1vdmVUYWdzRnJvbUJpbmFyeURhdGFCeUZpbHRlclJlc3BvbnNlEiMKDWRlbGV0ZWRfY291bnQYASABKARSDGRlbGV0ZWRDb3VudA==');
+@$core.Deprecated('Use tagsByFilterRequestDescriptor instead')
+const TagsByFilterRequest$json = const {
+ '1': 'TagsByFilterRequest',
+ '2': const [
+ const {'1': 'filter', '3': 1, '4': 1, '5': 11, '6': '.viam.app.data.v1.Filter', '10': 'filter'},
+ ],
+};
+
+/// Descriptor for `TagsByFilterRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List tagsByFilterRequestDescriptor = $convert.base64Decode('ChNUYWdzQnlGaWx0ZXJSZXF1ZXN0EjAKBmZpbHRlchgBIAEoCzIYLnZpYW0uYXBwLmRhdGEudjEuRmlsdGVyUgZmaWx0ZXI=');
+@$core.Deprecated('Use tagsByFilterResponseDescriptor instead')
+const TagsByFilterResponse$json = const {
+ '1': 'TagsByFilterResponse',
+ '2': const [
+ const {'1': 'tags', '3': 1, '4': 3, '5': 9, '10': 'tags'},
+ ],
+};
+
+/// Descriptor for `TagsByFilterResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List tagsByFilterResponseDescriptor = $convert.base64Decode('ChRUYWdzQnlGaWx0ZXJSZXNwb25zZRISCgR0YWdzGAEgAygJUgR0YWdz');
diff --git a/lib/src/gen/app/datasync/v1/data_sync.pb.dart b/lib/src/gen/app/datasync/v1/data_sync.pb.dart
new file mode 100644
index 00000000000..f6dbc05d2a2
--- /dev/null
+++ b/lib/src/gen/app/datasync/v1/data_sync.pb.dart
@@ -0,0 +1,1380 @@
+///
+// Generated code. Do not modify.
+// source: app/datasync/v1/data_sync.proto
+//
+// @dart = 2.12
+// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
+
+import 'dart:core' as $core;
+
+import 'package:fixnum/fixnum.dart' as $fixnum;
+import 'package:protobuf/protobuf.dart' as $pb;
+
+import '../../../google/protobuf/timestamp.pb.dart' as $1;
+import '../../../google/protobuf/struct.pb.dart' as $2;
+import '../../../google/protobuf/any.pb.dart' as $3;
+
+import 'data_sync.pbenum.dart';
+
+export 'data_sync.pbenum.dart';
+
+class DataCaptureUploadRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DataCaptureUploadRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.datasync.v1'), createEmptyInstance: create)
+ ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'metadata', subBuilder: UploadMetadata.create)
+ ..pc(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'sensorContents', $pb.PbFieldType.PM, subBuilder: SensorData.create)
+ ..hasRequiredFields = false
+ ;
+
+ DataCaptureUploadRequest._() : super();
+ factory DataCaptureUploadRequest({
+ UploadMetadata? metadata,
+ $core.Iterable? sensorContents,
+ }) {
+ final _result = create();
+ if (metadata != null) {
+ _result.metadata = metadata;
+ }
+ if (sensorContents != null) {
+ _result.sensorContents.addAll(sensorContents);
+ }
+ return _result;
+ }
+ factory DataCaptureUploadRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory DataCaptureUploadRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ DataCaptureUploadRequest clone() => DataCaptureUploadRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ DataCaptureUploadRequest copyWith(void Function(DataCaptureUploadRequest) updates) => super.copyWith((message) => updates(message as DataCaptureUploadRequest)) as DataCaptureUploadRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static DataCaptureUploadRequest create() => DataCaptureUploadRequest._();
+ DataCaptureUploadRequest createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static DataCaptureUploadRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static DataCaptureUploadRequest? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ UploadMetadata get metadata => $_getN(0);
+ @$pb.TagNumber(1)
+ set metadata(UploadMetadata v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasMetadata() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearMetadata() => clearField(1);
+ @$pb.TagNumber(1)
+ UploadMetadata ensureMetadata() => $_ensure(0);
+
+ @$pb.TagNumber(2)
+ $core.List get sensorContents => $_getList(1);
+}
+
+class DataCaptureUploadResponse extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DataCaptureUploadResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.datasync.v1'), createEmptyInstance: create)
+ ..hasRequiredFields = false
+ ;
+
+ DataCaptureUploadResponse._() : super();
+ factory DataCaptureUploadResponse() => create();
+ factory DataCaptureUploadResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory DataCaptureUploadResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ DataCaptureUploadResponse clone() => DataCaptureUploadResponse()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ DataCaptureUploadResponse copyWith(void Function(DataCaptureUploadResponse) updates) => super.copyWith((message) => updates(message as DataCaptureUploadResponse)) as DataCaptureUploadResponse; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static DataCaptureUploadResponse create() => DataCaptureUploadResponse._();
+ DataCaptureUploadResponse createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static DataCaptureUploadResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static DataCaptureUploadResponse? _defaultInstance;
+}
+
+enum FileUploadRequest_UploadPacket {
+ metadata,
+ fileContents,
+ notSet
+}
+
+class FileUploadRequest extends $pb.GeneratedMessage {
+ static const $core.Map<$core.int, FileUploadRequest_UploadPacket> _FileUploadRequest_UploadPacketByTag = {
+ 1 : FileUploadRequest_UploadPacket.metadata,
+ 2 : FileUploadRequest_UploadPacket.fileContents,
+ 0 : FileUploadRequest_UploadPacket.notSet
+ };
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'FileUploadRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.datasync.v1'), createEmptyInstance: create)
+ ..oo(0, [1, 2])
+ ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'metadata', subBuilder: UploadMetadata.create)
+ ..aOM(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'fileContents', subBuilder: FileData.create)
+ ..hasRequiredFields = false
+ ;
+
+ FileUploadRequest._() : super();
+ factory FileUploadRequest({
+ UploadMetadata? metadata,
+ FileData? fileContents,
+ }) {
+ final _result = create();
+ if (metadata != null) {
+ _result.metadata = metadata;
+ }
+ if (fileContents != null) {
+ _result.fileContents = fileContents;
+ }
+ return _result;
+ }
+ factory FileUploadRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory FileUploadRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ FileUploadRequest clone() => FileUploadRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ FileUploadRequest copyWith(void Function(FileUploadRequest) updates) => super.copyWith((message) => updates(message as FileUploadRequest)) as FileUploadRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static FileUploadRequest create() => FileUploadRequest._();
+ FileUploadRequest createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static FileUploadRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static FileUploadRequest? _defaultInstance;
+
+ FileUploadRequest_UploadPacket whichUploadPacket() => _FileUploadRequest_UploadPacketByTag[$_whichOneof(0)]!;
+ void clearUploadPacket() => clearField($_whichOneof(0));
+
+ @$pb.TagNumber(1)
+ UploadMetadata get metadata => $_getN(0);
+ @$pb.TagNumber(1)
+ set metadata(UploadMetadata v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasMetadata() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearMetadata() => clearField(1);
+ @$pb.TagNumber(1)
+ UploadMetadata ensureMetadata() => $_ensure(0);
+
+ @$pb.TagNumber(2)
+ FileData get fileContents => $_getN(1);
+ @$pb.TagNumber(2)
+ set fileContents(FileData v) { setField(2, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasFileContents() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearFileContents() => clearField(2);
+ @$pb.TagNumber(2)
+ FileData ensureFileContents() => $_ensure(1);
+}
+
+class FileUploadResponse extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'FileUploadResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.datasync.v1'), createEmptyInstance: create)
+ ..hasRequiredFields = false
+ ;
+
+ FileUploadResponse._() : super();
+ factory FileUploadResponse() => create();
+ factory FileUploadResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory FileUploadResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ FileUploadResponse clone() => FileUploadResponse()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ FileUploadResponse copyWith(void Function(FileUploadResponse) updates) => super.copyWith((message) => updates(message as FileUploadResponse)) as FileUploadResponse; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static FileUploadResponse create() => FileUploadResponse._();
+ FileUploadResponse createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static FileUploadResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static FileUploadResponse? _defaultInstance;
+}
+
+class SensorMetadata extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'SensorMetadata', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.datasync.v1'), createEmptyInstance: create)
+ ..aOM<$1.Timestamp>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'timeRequested', subBuilder: $1.Timestamp.create)
+ ..aOM<$1.Timestamp>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'timeReceived', subBuilder: $1.Timestamp.create)
+ ..hasRequiredFields = false
+ ;
+
+ SensorMetadata._() : super();
+ factory SensorMetadata({
+ $1.Timestamp? timeRequested,
+ $1.Timestamp? timeReceived,
+ }) {
+ final _result = create();
+ if (timeRequested != null) {
+ _result.timeRequested = timeRequested;
+ }
+ if (timeReceived != null) {
+ _result.timeReceived = timeReceived;
+ }
+ return _result;
+ }
+ factory SensorMetadata.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory SensorMetadata.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ SensorMetadata clone() => SensorMetadata()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ SensorMetadata copyWith(void Function(SensorMetadata) updates) => super.copyWith((message) => updates(message as SensorMetadata)) as SensorMetadata; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static SensorMetadata create() => SensorMetadata._();
+ SensorMetadata createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static SensorMetadata getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static SensorMetadata? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $1.Timestamp get timeRequested => $_getN(0);
+ @$pb.TagNumber(1)
+ set timeRequested($1.Timestamp v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasTimeRequested() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearTimeRequested() => clearField(1);
+ @$pb.TagNumber(1)
+ $1.Timestamp ensureTimeRequested() => $_ensure(0);
+
+ @$pb.TagNumber(2)
+ $1.Timestamp get timeReceived => $_getN(1);
+ @$pb.TagNumber(2)
+ set timeReceived($1.Timestamp v) { setField(2, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasTimeReceived() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearTimeReceived() => clearField(2);
+ @$pb.TagNumber(2)
+ $1.Timestamp ensureTimeReceived() => $_ensure(1);
+}
+
+enum SensorData_Data {
+ struct,
+ binary,
+ notSet
+}
+
+class SensorData extends $pb.GeneratedMessage {
+ static const $core.Map<$core.int, SensorData_Data> _SensorData_DataByTag = {
+ 2 : SensorData_Data.struct,
+ 3 : SensorData_Data.binary,
+ 0 : SensorData_Data.notSet
+ };
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'SensorData', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.datasync.v1'), createEmptyInstance: create)
+ ..oo(0, [2, 3])
+ ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'metadata', subBuilder: SensorMetadata.create)
+ ..aOM<$2.Struct>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'struct', subBuilder: $2.Struct.create)
+ ..a<$core.List<$core.int>>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'binary', $pb.PbFieldType.OY)
+ ..hasRequiredFields = false
+ ;
+
+ SensorData._() : super();
+ factory SensorData({
+ SensorMetadata? metadata,
+ $2.Struct? struct,
+ $core.List<$core.int>? binary,
+ }) {
+ final _result = create();
+ if (metadata != null) {
+ _result.metadata = metadata;
+ }
+ if (struct != null) {
+ _result.struct = struct;
+ }
+ if (binary != null) {
+ _result.binary = binary;
+ }
+ return _result;
+ }
+ factory SensorData.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory SensorData.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ SensorData clone() => SensorData()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ SensorData copyWith(void Function(SensorData) updates) => super.copyWith((message) => updates(message as SensorData)) as SensorData; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static SensorData create() => SensorData._();
+ SensorData createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static SensorData getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static SensorData? _defaultInstance;
+
+ SensorData_Data whichData() => _SensorData_DataByTag[$_whichOneof(0)]!;
+ void clearData() => clearField($_whichOneof(0));
+
+ @$pb.TagNumber(1)
+ SensorMetadata get metadata => $_getN(0);
+ @$pb.TagNumber(1)
+ set metadata(SensorMetadata v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasMetadata() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearMetadata() => clearField(1);
+ @$pb.TagNumber(1)
+ SensorMetadata ensureMetadata() => $_ensure(0);
+
+ @$pb.TagNumber(2)
+ $2.Struct get struct => $_getN(1);
+ @$pb.TagNumber(2)
+ set struct($2.Struct v) { setField(2, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasStruct() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearStruct() => clearField(2);
+ @$pb.TagNumber(2)
+ $2.Struct ensureStruct() => $_ensure(1);
+
+ @$pb.TagNumber(3)
+ $core.List<$core.int> get binary => $_getN(2);
+ @$pb.TagNumber(3)
+ set binary($core.List<$core.int> v) { $_setBytes(2, v); }
+ @$pb.TagNumber(3)
+ $core.bool hasBinary() => $_has(2);
+ @$pb.TagNumber(3)
+ void clearBinary() => clearField(3);
+}
+
+class FileData extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'FileData', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.datasync.v1'), createEmptyInstance: create)
+ ..a<$core.List<$core.int>>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'data', $pb.PbFieldType.OY)
+ ..hasRequiredFields = false
+ ;
+
+ FileData._() : super();
+ factory FileData({
+ $core.List<$core.int>? data,
+ }) {
+ final _result = create();
+ if (data != null) {
+ _result.data = data;
+ }
+ return _result;
+ }
+ factory FileData.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory FileData.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ FileData clone() => FileData()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ FileData copyWith(void Function(FileData) updates) => super.copyWith((message) => updates(message as FileData)) as FileData; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static FileData create() => FileData._();
+ FileData createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList();
+ @$core.pragma('dart2js:noInline')
+ static FileData getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static FileData? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<$core.int> get data => $_getN(0);
+ @$pb.TagNumber(1)
+ set data($core.List<$core.int> v) { $_setBytes(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasData() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearData() => clearField(1);
+}
+
+class UploadMetadata extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'UploadMetadata', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'viam.app.datasync.v1'), createEmptyInstance: create)
+ ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'partId')
+ ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'componentType')
+ ..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'componentName')
+ ..aOS(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'componentModel')
+ ..aOS(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'methodName')
+ ..e(6, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'type', $pb.PbFieldType.OE, defaultOrMaker: DataType.DATA_TYPE_UNSPECIFIED, valueOf: DataType.valueOf, enumValues: DataType.values)
+ ..aOS(7, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'fileName')
+ ..m<$core.String, $3.Any>(8, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'methodParameters', entryClassName: 'UploadMetadata.MethodParametersEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OM, valueCreator: $3.Any.create, packageName: const $pb.PackageName('viam.app.datasync.v1'))
+ ..aOS(9, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'fileExtension')
+ ..pPS(10, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'tags')
+ ..aOS(11, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'sessionId')
+ ..hasRequiredFields = false
+ ;
+
+ UploadMetadata._() : super();
+ factory UploadMetadata({
+ $core.String? partId,
+ $core.String? componentType,
+ $core.String? componentName,
+ $core.String? componentModel,
+ $core.String? methodName,
+ DataType? type,
+ $core.String? fileName,
+ $core.Map<$core.String, $3.Any>? methodParameters,
+ $core.String? fileExtension,
+ $core.Iterable<$core.String>? tags,
+ $core.String? sessionId,
+ }) {
+ final _result = create();
+ if (partId != null) {
+ _result.partId = partId;
+ }
+ if (componentType != null) {
+ _result.componentType = componentType;
+ }
+ if (componentName != null) {
+ _result.componentName = componentName;
+ }
+ if (componentModel != null) {
+ _result.componentModel = componentModel;
+ }
+ if (methodName != null) {
+ _result.methodName = methodName;
+ }
+ if (type != null) {
+ _result.type = type;
+ }
+ if (fileName != null) {
+ _result.fileName = fileName;
+ }
+ if (methodParameters != null) {
+ _result.methodParameters.addAll(methodParameters);
+ }
+ if (fileExtension != null) {
+ _result.fileExtension = fileExtension;
+ }
+ if (tags != null) {
+ _result.tags.addAll(tags);
+ }
+ if (sessionId != null) {
+ _result.sessionId = sessionId;
+ }
+ return _result;
+ }
+ factory UploadMetadata.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory UploadMetadata.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ UploadMetadata clone() => UploadMetadata()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ UploadMetadata copyWith(void Function(UploadMetadata) updates) => super.copyWith((message) => updates(message as UploadMetadata)) as UploadMetadata; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static UploadMetadata create() => UploadMetadata._();
+ UploadMetadata createEmptyInstance() => create();
+ static $pb.PbList createRepeated() => $pb.PbList