@toshicloud/sdk 0.5.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +39 -455
  2. package/dist/client.d.ts +76 -6
  3. package/dist/client.js +20 -4
  4. package/dist/gen/toshi/permission_pb.d.ts +12 -0
  5. package/dist/gen/toshi/permission_pb.js +14 -2
  6. package/dist/gen/toshi/workspace/v1/connections_pb.d.ts +358 -29
  7. package/dist/gen/toshi/workspace/v1/connections_pb.js +112 -24
  8. package/dist/gen/toshi/workspace/v1/domains_pb.d.ts +26 -26
  9. package/dist/gen/toshi/workspace/v1/domains_pb.js +4 -4
  10. package/dist/gen/toshi/workspace/v1/{channels_pb.d.ts → endpoints_pb.d.ts} +945 -822
  11. package/dist/gen/toshi/workspace/v1/endpoints_pb.js +488 -0
  12. package/dist/gen/toshi/workspace/v1/grants_pb.d.ts +10 -10
  13. package/dist/gen/toshi/workspace/v1/grants_pb.js +3 -3
  14. package/dist/gen/toshi/workspace/v1/hostjobs_pb.d.ts +62 -24
  15. package/dist/gen/toshi/workspace/v1/hostjobs_pb.js +1 -1
  16. package/dist/gen/toshi/workspace/v1/hosts_pb.d.ts +110 -36
  17. package/dist/gen/toshi/workspace/v1/hosts_pb.js +1 -1
  18. package/dist/gen/toshi/workspace/v1/model_credentials_pb.d.ts +654 -0
  19. package/dist/gen/toshi/workspace/v1/model_credentials_pb.js +110 -0
  20. package/dist/gen/toshi/workspace/v1/recordings_pb.d.ts +21 -2
  21. package/dist/gen/toshi/workspace/v1/recordings_pb.js +1 -1
  22. package/dist/gen/toshi/workspace/v1/roles_pb.d.ts +1 -1
  23. package/dist/gen/toshi/workspace/v1/roles_pb.js +1 -1
  24. package/dist/gen/toshi/workspace/v1/secrets_pb.d.ts +19 -2
  25. package/dist/gen/toshi/workspace/v1/secrets_pb.js +1 -1
  26. package/dist/gen/toshi/workspace/v1/triggers_pb.d.ts +28 -28
  27. package/dist/gen/toshi/workspace/v1/triggers_pb.js +6 -6
  28. package/dist/gen/toshi/workspace/v1/webhook_pb.d.ts +202 -202
  29. package/dist/gen/toshi/workspace/v1/webhook_pb.js +46 -46
  30. package/dist/gen/toshi/workspace/v1/workloads_pb.d.ts +579 -30
  31. package/dist/gen/toshi/workspace/v1/workloads_pb.js +85 -55
  32. package/dist/gen/toshi/workspace/v1/workspace_pb.d.ts +991 -123
  33. package/dist/gen/toshi/workspace/v1/workspace_pb.js +294 -102
  34. package/dist/gen/toshi/workspace/v1/workspace_service_pb.d.ts +390 -8
  35. package/dist/gen/toshi/workspace/v1/workspace_service_pb.js +75 -50
  36. package/dist/index.d.ts +2 -1
  37. package/dist/index.js +2 -1
  38. package/dist/retry.js +38 -22
  39. package/dist/test/alarms.d.ts +29 -0
  40. package/dist/test/alarms.js +144 -0
  41. package/dist/test/fake.js +31 -0
  42. package/dist/test/index.d.ts +12 -2
  43. package/dist/test/index.js +12 -2
  44. package/dist/test/procedures.js +40 -34
  45. package/dist/version.d.ts +1 -1
  46. package/dist/version.js +1 -1
  47. package/package.json +1 -1
  48. package/dist/gen/toshi/workspace/v1/channels_pb.js +0 -483
@@ -10,7 +10,7 @@ import { file_toshi_workspace_v1_roles } from "./roles_pb.js";
10
10
  /**
11
11
  * Describes the file toshi/workspace/v1/workspace_service.proto.
12
12
  */
13
- export const file_toshi_workspace_v1_workspace_service = /*@__PURE__*/ fileDesc("Cip0b3NoaS93b3Jrc3BhY2UvdjEvd29ya3NwYWNlX3NlcnZpY2UucHJvdG8SEnRvc2hpLndvcmtzcGFjZS52MSIVChNHZXRXb3Jrc3BhY2VSZXF1ZXN0IkgKFEdldFdvcmtzcGFjZVJlc3BvbnNlEjAKCXdvcmtzcGFjZRgBIAEoCzIdLnRvc2hpLndvcmtzcGFjZS52MS5Xb3Jrc3BhY2UiOQoWRGVsZXRlV29ya3NwYWNlUmVxdWVzdBIPCgdjb25maXJtGAEgASgJEg4KBnJlYXNvbhgCIAEoCSJLChdEZWxldGVXb3Jrc3BhY2VSZXNwb25zZRIwCgl3b3Jrc3BhY2UYASABKAsyHS50b3NoaS53b3Jrc3BhY2UudjEuV29ya3NwYWNlIiAKHkNhbmNlbFdvcmtzcGFjZURlbGV0aW9uUmVxdWVzdCJTCh9DYW5jZWxXb3Jrc3BhY2VEZWxldGlvblJlc3BvbnNlEjAKCXdvcmtzcGFjZRgBIAEoCzIdLnRvc2hpLndvcmtzcGFjZS52MS5Xb3Jrc3BhY2UiewoWVXBkYXRlV29ya3NwYWNlUmVxdWVzdBIwCgl3b3Jrc3BhY2UYASABKAsyHS50b3NoaS53b3Jrc3BhY2UudjEuV29ya3NwYWNlEi8KC3VwZGF0ZV9tYXNrGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFzayJLChdVcGRhdGVXb3Jrc3BhY2VSZXNwb25zZRIwCgl3b3Jrc3BhY2UYASABKAsyHS50b3NoaS53b3Jrc3BhY2UudjEuV29ya3NwYWNlIj4KFUxpc3RXb3Jrc3BhY2VzUmVxdWVzdBIRCglwYWdlX3NpemUYASABKAUSEgoKcGFnZV90b2tlbhgCIAEoCSJkChZMaXN0V29ya3NwYWNlc1Jlc3BvbnNlEjEKCndvcmtzcGFjZXMYASADKAsyHS50b3NoaS53b3Jrc3BhY2UudjEuV29ya3NwYWNlEhcKD25leHRfcGFnZV90b2tlbhgCIAEoCSIsChpHZXRXb3Jrc3BhY2VCaWxsaW5nUmVxdWVzdBIOCgZtb250aHMYASABKAUiVAobR2V0V29ya3NwYWNlQmlsbGluZ1Jlc3BvbnNlEjUKB2JpbGxpbmcYASABKAsyJC50b3NoaS53b3Jrc3BhY2UudjEuV29ya3NwYWNlQmlsbGluZyI6ChxHZXRXb3Jrc3BhY2VTdGF0ZW1lbnRSZXF1ZXN0Eg0KBW1vbnRoGAEgASgJEgsKA2NzdhgCIAEoCCJnCh1HZXRXb3Jrc3BhY2VTdGF0ZW1lbnRSZXNwb25zZRI5CglzdGF0ZW1lbnQYASABKAsyJi50b3NoaS53b3Jrc3BhY2UudjEuV29ya3NwYWNlU3RhdGVtZW50EgsKA2NzdhgCIAEoCSKRAgoEU2VhdBIKCgJpZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEi8KC2Fzc2lnbmVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgthc3NpZ25lZF9ieRgEIAEoCzIbLnRvc2hpLndvcmtzcGFjZS52MS5TdWJqZWN0Ei4KCnJlbW92ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KCnJlbW92ZWRfYnkYBiABKAsyGy50b3NoaS53b3Jrc3BhY2UudjEuU3ViamVjdBIQCghyZXBsYWNlcxgHIAEoCRIWCg5yZXBsYWNlX3JlYXNvbhgIIAEoCSIhChBMaXN0U2VhdHNSZXF1ZXN0Eg0KBW1vbnRoGAEgASgJIjwKEUxpc3RTZWF0c1Jlc3BvbnNlEicKBXNlYXRzGAEgAygLMhgudG9zaGkud29ya3NwYWNlLnYxLlNlYXQiJAoRQXNzaWduU2VhdFJlcXVlc3QSDwoHdXNlcl9pZBgBIAEoCSI8ChJBc3NpZ25TZWF0UmVzcG9uc2USJgoEc2VhdBgBIAEoCzIYLnRvc2hpLndvcmtzcGFjZS52MS5TZWF0IiQKEVJlbW92ZVNlYXRSZXF1ZXN0Eg8KB3NlYXRfaWQYASABKAkiPAoSUmVtb3ZlU2VhdFJlc3BvbnNlEiYKBHNlYXQYASABKAsyGC50b3NoaS53b3Jrc3BhY2UudjEuU2VhdCI9ChRMaXN0RWdyZXNzSVBzUmVxdWVzdBIRCglwYWdlX3NpemUYASABKAUSEgoKcGFnZV90b2tlbhgCIAEoCSJ+ChVMaXN0RWdyZXNzSVBzUmVzcG9uc2USCwoDaXBzGAEgAygJEi0KBWhvc3RzGAIgAygLMh4udG9zaGkud29ya3NwYWNlLnYxLkVncmVzc0hvc3QSEAoIY29tcGxldGUYAyABKAgSFwoPbmV4dF9wYWdlX3Rva2VuGAQgASgJImMKD0dldFVzYWdlUmVxdWVzdBIoCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBImCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAi9wEKEEdldFVzYWdlUmVzcG9uc2USKgoEcm93cxgBIAMoCzIcLnRvc2hpLndvcmtzcGFjZS52MS5Vc2FnZVJvdxIoCgRmcm9tGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBImCgJ0bxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoGZmlsbGVyGAQgASgLMh8udG9zaGkud29ya3NwYWNlLnYxLkZpbGxlclVzYWdlEjQKB3N0b3JhZ2UYBSADKAsyIy50b3NoaS53b3Jrc3BhY2UudjEuU3RvcmFnZVVzYWdlUm93ImgKFEdldFF1ZXVlVGltZXNSZXF1ZXN0EigKBGZyb20YASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLoAQoVR2V0UXVldWVUaW1lc1Jlc3BvbnNlEgwKBGpvYnMYASABKAMSDgoGcDUwX21zGAIgASgDEg4KBnA5MF9tcxgDIAEoAxIOCgZtYXhfbXMYBCABKAMSEgoKd2FybV9zaGFyZRgFIAEoARIoCgRmcm9tGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBImCgJ0bxgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoEaGVsZBgIIAMoCzIdLnRvc2hpLndvcmtzcGFjZS52MS5Ib2xkVGltZXMiawoXR2V0V29ya2Zsb3dVc2FnZVJlcXVlc3QSKAoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJgoCdG8YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIqABChhHZXRXb3JrZmxvd1VzYWdlUmVzcG9uc2USMgoEcm93cxgBIAMoCzIkLnRvc2hpLndvcmtzcGFjZS52MS5Xb3JrZmxvd1VzYWdlUm93EigKBGZyb20YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKAnRvGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCI5ChBMaXN0UGxhbnNSZXF1ZXN0EhEKCXBhZ2Vfc2l6ZRgBIAEoBRISCgpwYWdlX3Rva2VuGAIgASgJIlUKEUxpc3RQbGFuc1Jlc3BvbnNlEicKBXBsYW5zGAEgAygLMhgudG9zaGkud29ya3NwYWNlLnYxLlBsYW4SFwoPbmV4dF9wYWdlX3Rva2VuGAIgASgJIkAKHENyZWF0ZUNoZWNrb3V0U2Vzc2lvblJlcXVlc3QSDAoEcGxhbhgBIAEoCRISCgpyZXR1cm5fdXJsGAIgASgJIiwKHUNyZWF0ZUNoZWNrb3V0U2Vzc2lvblJlc3BvbnNlEgsKA3VybBgBIAEoCSI3CiFDcmVhdGVCaWxsaW5nUG9ydGFsU2Vzc2lvblJlcXVlc3QSEgoKcmV0dXJuX3VybBgBIAEoCSIxCiJDcmVhdGVCaWxsaW5nUG9ydGFsU2Vzc2lvblJlc3BvbnNlEgsKA3VybBgBIAEoCSITChFHZXRWZXJzaW9uUmVxdWVzdCJiChJHZXRWZXJzaW9uUmVzcG9uc2USDwoHdmVyc2lvbhgBIAEoCRIOCgZjb21taXQYAiABKAkSDAoEZGF0ZRgDIAEoCRIdChVtaW5pbXVtX2FnZW50X3ZlcnNpb24YBCABKAkiiAwKCVdvcmtzcGFjZRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhwKD2NvbmN1cnJlbmN5X2NhcBgDIAEoBUgAiAEBEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgwKBHBsYW4YBSABKAkSHQoVZWZmZWN0aXZlX2NvbmN1cnJlbmN5GAYgASgFEg4KBnN0YXR1cxgHIAEoCRIjChtlZmZlY3RpdmVfbWF4X2pvYnNfcGVyX2hvdXIYCyABKAUSHAoUc3RhcnRlcl9jcmVkaXRfY2VudHMYDCABKAMSPQoZc3RhcnRlcl9jcmVkaXRfZ3JhbnRlZF9hdBgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMcmVzZXJ2YXRpb25zGBAgAygLMh8udG9zaGkud29ya3NwYWNlLnYxLlJlc2VydmF0aW9uEg0KBXN0YXRlGBEgASgJEhQKDHN0YXRlX3JlYXNvbhgSIAEoCRIvCgtzdGF0ZV9zaW5jZRgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLcHVyZ2VfYWZ0ZXIYFCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2RlbGV0aW9uX2J5GCcgASgJEh4KFmhpc3RvcnlfZGF5c19lZmZlY3RpdmUYFiABKAUSHAoPc2VjcmV0X21heF9zZXRzGBggASgFSAGIAQESHAoPc2VjcmV0X21heF9rZXlzGBkgASgFSAKIAQESGwoOc2VjcmV0X21heF9raWIYGiABKANIA4gBARIeChFwcmV2aWV3X21heF9wb3J0cxgbIAEoBUgEiAEBEiEKGXNlY3JldF9tYXhfc2V0c19lZmZlY3RpdmUYHCABKAUSIQoZc2VjcmV0X21heF9rZXlzX2VmZmVjdGl2ZRgdIAEoBRIgChhzZWNyZXRfbWF4X2tpYl9lZmZlY3RpdmUYHiABKAMSIwobcHJldmlld19tYXhfcG9ydHNfZWZmZWN0aXZlGB8gASgFEjcKCHNldHRpbmdzGCEgASgLMiUudG9zaGkud29ya3NwYWNlLnYxLldvcmtzcGFjZVNldHRpbmdzEgwKBGV0YWcYIiABKAkSQwoTaG9zdGluZ19jZXJ0aWZpY2F0ZRgjIAEoCzImLnRvc2hpLndvcmtzcGFjZS52MS5Ib3N0aW5nQ2VydGlmaWNhdGUSHQoVa2VlcF92bV9tYXhfZWZmZWN0aXZlGCQgASgFEj0KEmtlZXBfdm1fbWF4X3NvdXJjZRgpIAEoDjIhLnRvc2hpLndvcmtzcGFjZS52MS5GZWF0dXJlU291cmNlEhUKDWtlZXBfdm1fY291bnQYJSABKAUSIgoaa2VlcF92bV9zdG9wcGVkX2xvbmdfY291bnQYJiABKAUSRQoRcmVjb3JkaW5nX2NoYW5nZWQYKCABKAsyKi50b3NoaS53b3Jrc3BhY2UudjEuV29ya3NwYWNlU2V0dGluZ0NoYW5nZRJRCh1yZWNvcmRpbmdfaHVtYW5fc3BhbnNfY2hhbmdlZBgqIAEoCzIqLnRvc2hpLndvcmtzcGFjZS52MS5Xb3Jrc3BhY2VTZXR0aW5nQ2hhbmdlQhIKEF9jb25jdXJyZW5jeV9jYXBCEgoQX3NlY3JldF9tYXhfc2V0c0ISChBfc2VjcmV0X21heF9rZXlzQhEKD19zZWNyZXRfbWF4X2tpYkIUChJfcHJldmlld19tYXhfcG9ydHNKBAgIEAlKBAgJEApKBAgKEAtKBAgOEA9KBAgPEBBKBAgVEBZKBAgXEBhKBAggECFSDm93bl9ob3N0c19vbmx5Ug9zcGVuZF9jYXBfY2VudHNSEW1heF9qb2JzX3Blcl9ob3VyUg5hbGxvd19vdmVyZmxvd1IQYWxsb3dfY2FjaGVfd2FybVIMaGlzdG9yeV9kYXlzUhZjYW5jZWxfcnVuX29uX3ZtX2RlYXRoUgttZW1iZXJfam9pbiL4AQoSSG9zdGluZ0NlcnRpZmljYXRlEgwKBG5hbWUYASABKAkSOgoFc3RhdGUYAiABKA4yKy50b3NoaS53b3Jrc3BhY2UudjEuSG9zdGluZ0NlcnRpZmljYXRlU3RhdGUSLQoJbm90X2FmdGVyGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghyZW5ld19hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoIcmV0cnlfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBWVycm9yGAYgASgJItkDChFXb3Jrc3BhY2VTZXR0aW5ncxITCgttZW1iZXJfam9pbhgBIAEoCRJKCgdzaWduX2luGAIgASgLMiMudG9zaGkud29ya3NwYWNlLnYxLldvcmtzcGFjZVNpZ25JbkIU2vMYEHdvcmtzcGFjZS5zaWduaW4SGQoMaGlzdG9yeV9kYXlzGAMgASgFSACIAQESFgoOb3duX2hvc3RzX29ubHkYBCABKAgSFgoOYWxsb3dfb3ZlcmZsb3cYBSABKAgSGAoQYWxsb3dfY2FjaGVfd2FybRgGIAEoCBIeChZjYW5jZWxfcnVuX29uX3ZtX2RlYXRoGAcgASgIEioKD3NwZW5kX2NhcF9jZW50cxgIIAEoA0IR2vMYDWJpbGxpbmcud3JpdGUSLAoRbWF4X2pvYnNfcGVyX2hvdXIYCSABKAVCEdrzGA1iaWxsaW5nLndyaXRlEg8KB2tlZXBfdm0YCiABKAgSFgoJcmVjb3JkaW5nGAsgASgISAGIAQESIgoVcmVjb3JkaW5nX2h1bWFuX3NwYW5zGAwgASgISAKIAQFCDwoNX2hpc3RvcnlfZGF5c0IMCgpfcmVjb3JkaW5nQhgKFl9yZWNvcmRpbmdfaHVtYW5fc3BhbnMieQoWV29ya3NwYWNlU2V0dGluZ0NoYW5nZRIvCgpjaGFuZ2VkX2J5GAEgASgLMhsudG9zaGkud29ya3NwYWNlLnYxLlN1YmplY3QSLgoKY2hhbmdlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAibwoPV29ya3NwYWNlU2lnbkluEhAKCHByb3ZpZGVyGAEgASgJEg4KBmlzc3VlchgCIAEoCRIOCgZzZXRfYnkYAyABKAkSKgoGc2V0X2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJICgtSZXNlcnZhdGlvbhIMCgRzaXplGAEgASgJEg0KBXNsb3RzGAIgASgFEgwKBHdhcm0YAyABKAUSDgoGc291cmNlGAQgASgJIscHChBXb3Jrc3BhY2VCaWxsaW5nEhMKC2N1c3RvbWVyX2lkGAEgASgJEhcKD3N1YnNjcmlwdGlvbl9pZBgCIAEoCRI2ChJiaWxsaW5nX3N0YXJ0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhsKE3N1YnNjcmlwdGlvbl9zdGF0dXMYBCABKAkSPQoZc3Vic2NyaXB0aW9uX3N0YXR1c19zaW5jZRgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMQoGdG90YWxzGAYgAygLMiEudG9zaGkud29ya3NwYWNlLnYxLkJpbGxpbmdUb3RhbHMSPgoNZmFpbGVkX2V2ZW50cxgHIAMoCzInLnRvc2hpLndvcmtzcGFjZS52MS5CaWxsaW5nRXZlbnRGYWlsdXJlEhoKEm1pbnV0ZXNfdGhpc19tb250aBgIIAEoAxIeChZmcmVlX21pbnV0ZXNfcGVyX21vbnRoGAkgASgDEhUKDWNhcmRfdmVyaWZpZWQYCiABKAgSNAoQY2FyZF92ZXJpZmllZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoPc3BlbmRfY2FwX2NlbnRzGAwgASgDEhMKC3NwZW5kX2NlbnRzGA0gASgDEhMKC3NwZW5kX2xldmVsGA4gASgFEhAKCGN1cnJlbmN5GA8gASgJEhMKC3NwZW5kX2tub3duGBAgASgIEhwKFHN0YXJ0ZXJfY3JlZGl0X2NlbnRzGBEgASgDEiEKGXN0YXJ0ZXJfY3JlZGl0X2xlZnRfY2VudHMYEiABKAMSPQoZc3RhcnRlcl9jcmVkaXRfYXBwbGllZF9hdBgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoPYmlsbGluZ19lbmFibGVkGBQgASgIEj8KCGhlbGRfbm93GBUgAygLMi0udG9zaGkud29ya3NwYWNlLnYxLldvcmtzcGFjZUJpbGxpbmcuSGVsZEpvYnMSGAoQY29uY3VycmVuY3lfdXNlZBgWIAEoAxIlChhkZXNrdG9wX3NlYXRfcHJpY2VfY2VudHMYGiABKANIAIgBARpTCghIZWxkSm9icxIOCgZyZWFzb24YFyABKAkSDAoEam9icxgYIAEoAxIpCgVzaW5jZRgZIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCGwoZX2Rlc2t0b3Bfc2VhdF9wcmljZV9jZW50cyK3AQoNQmlsbGluZ1RvdGFscxINCgVtb250aBgBIAEoCRIMCgRzaXplGAIgASgJEhMKC3NlbnRfZXZlbnRzGAMgASgDEhQKDHNlbnRfbWludXRlcxgEIAEoAxIWCg5wZW5kaW5nX2V2ZW50cxgFIAEoAxIXCg9wZW5kaW5nX21pbnV0ZXMYBiABKAMSFQoNZmFpbGVkX2V2ZW50cxgHIAEoAxIWCg5mYWlsZWRfbWludXRlcxgIIAEoAyLeAQoTQmlsbGluZ0V2ZW50RmFpbHVyZRIOCgZqb2JfaWQYASABKAkSDAoEc2l6ZRgCIAEoCRISCgpldmVudF9uYW1lGAMgASgJEg8KB21pbnV0ZXMYBCABKAMSLwoLb2NjdXJyZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi0KCWZhaWxlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEAoIYXR0ZW1wdHMYByABKAUSEgoKbGFzdF9lcnJvchgIIAEoCSKYBwoSV29ya3NwYWNlU3RhdGVtZW50Eg0KBW1vbnRoGAEgASgJEigKBGZyb20YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKAnRvGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIMCgRwbGFuGAQgASgJEjEKBXVzYWdlGAUgAygLMiIudG9zaGkud29ya3NwYWNlLnYxLlN0YXRlbWVudFVzYWdlEjEKBXRvdGFsGAYgASgLMiIudG9zaGkud29ya3NwYWNlLnYxLlN0YXRlbWVudFVzYWdlEjQKB2NoYXJnZXMYByADKAsyIy50b3NoaS53b3Jrc3BhY2UudjEuU3RhdGVtZW50Q2hhcmdlEhcKD2VzdGltYXRlZF9jZW50cxgIIAEoAxIQCghjdXJyZW5jeRgJIAEoCRIWCg5lc3RpbWF0ZV9rbm93bhgKIAEoCBIkChxzdGFydGVyX2NyZWRpdF9hcHBsaWVkX2NlbnRzGAsgASgDEj0KGXN0YXJ0ZXJfY3JlZGl0X2FwcGxpZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKBGhlbGQYDSADKAsyHS50b3NoaS53b3Jrc3BhY2UudjEuSG9sZFRpbWVzEh0KFWN1cnJlbnRfcHJpY2VfbWludXRlcxgOIAEoAxIvCgZmaWxsZXIYDyABKAsyHy50b3NoaS53b3Jrc3BhY2UudjEuRmlsbGVyVXNhZ2USFwoPYmlsbGluZ19lbmFibGVkGBAgASgIEjgKFHNwZW5kX2NhcF9yZWFjaGVkX2F0GBEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIfChdzcGVuZF9jYXBfcmVhY2hlZF9jZW50cxgSIAEoAxIXCg9zcGVuZF9jYXBfY2VudHMYEyABKAMSNAoMb3duX2hvc3RfZmVlGBQgASgLMh4udG9zaGkud29ya3NwYWNlLnYxLk93bkhvc3RGZWUSKAoFYXdha2UYFSADKAsyGS50b3NoaS53b3Jrc3BhY2UudjEuQXdha2USLAoHc3RvcmFnZRgWIAEoCzIbLnRvc2hpLndvcmtzcGFjZS52MS5TdG9yYWdlEjcKDWRlc2t0b3Bfc2VhdHMYFyABKAsyIC50b3NoaS53b3Jrc3BhY2UudjEuRGVza3RvcFNlYXRzIpsBCgxEZXNrdG9wU2VhdHMSFAoMYmlsbGVkX3NlYXRzGAEgASgDEhgKEHNlYXRfcHJpY2VfY2VudHMYAiABKAMSEAoIdW5wcmljZWQYAyABKAgSFwoPZXN0aW1hdGVkX2NlbnRzGAQgASgDEjAKBXNlYXRzGAUgAygLMiEudG9zaGkud29ya3NwYWNlLnYxLlN0YXRlbWVudFNlYXQiwgEKDVN0YXRlbWVudFNlYXQSDwoHc2VhdF9pZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEgwKBG5hbWUYAyABKAkSLwoLYXNzaWduZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnJlbW92ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhAKCHJlcGxhY2VzGAYgASgJEg4KBmJpbGxlZBgHIAEoCCJkCgpPd25Ib3N0RmVlEg8KB3NlY29uZHMYASABKAESFAoMZnJlZV9zZWNvbmRzGAIgASgDEhYKDmJpbGxlZF9zZWNvbmRzGAMgASgDEhcKD2VzdGltYXRlZF9jZW50cxgEIAEoAyJ7CgVBd2FrZRIMCgRzaXplGAEgASgJEgwKBHJ1bnMYAiABKAMSDwoHc2Vjb25kcxgDIAEoARIUCgxpZGxlX3NlY29uZHMYBCABKAESFgoOYmlsbGVkX3NlY29uZHMYBSABKAMSFwoPZXN0aW1hdGVkX2NlbnRzGAYgASgDIqsBCgdTdG9yYWdlEi0KBWtpbmRzGAEgAygLMh4udG9zaGkud29ya3NwYWNlLnYxLlN0b3JlZEtpbmQSEwoLaW5jbHVkZWRfZ2IYAiABKAMSEAoIZ2JfaG91cnMYAyABKAESFwoPZXhjZXNzX2diX2hvdXJzGAQgASgBEhgKEGJpbGxlZF9nYl9tb250aHMYBSABKAESFwoPZXN0aW1hdGVkX2NlbnRzGAYgASgDIjsKClN0b3JlZEtpbmQSDAoEa2luZBgBIAEoCRINCgVieXRlcxgCIAEoAxIQCghnYl9ob3VycxgDIAEoASJNCg9TdG9yYWdlVXNhZ2VSb3cSCwoDZGF5GAEgASgJEgwKBGtpbmQYAiABKAkSEAoIZ2JfaG91cnMYAyABKAESDQoFYnl0ZXMYBCABKAMi7QEKDlN0YXRlbWVudFVzYWdlEgwKBHNpemUYASABKAkSCgoCb3MYAiABKAkSDAoEam9icxgDIAEoAxIPCgdtaW51dGVzGAQgASgDEhgKEG93bl9ob3N0X21pbnV0ZXMYBSABKAMSFQoNZGVidWdfbWludXRlcxgGIAEoAxIYChBvdmVyZmxvd19taW51dGVzGAcgASgDEhsKE3Jlc2VydmVkX3Nsb3RfaG91cnMYCCABKAMSDwoHb3V0Y29tZRgJIAEoCRIPCgdzZWNvbmRzGAogASgBEhgKEG93bl9ob3N0X3NlY29uZHMYCyABKAEiSQoPU3RhdGVtZW50Q2hhcmdlEgwKBHNpemUYASABKAkSDwoHbWludXRlcxgCIAEoAxIXCg9lc3RpbWF0ZWRfY2VudHMYAyABKAMinAEKCUhvbGRUaW1lcxIOCgZyZWFzb24YASABKAkSDAoEam9icxgCIAEoAxIOCgZwNTBfbXMYAyABKAMSDgoGcDkwX21zGAQgASgDEg4KBm1heF9tcxgFIAEoAxIRCglvcGVuX2pvYnMYBiABKAMSLgoKb3Blbl9zaW5jZRgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiLAoLRmlsbGVyVXNhZ2USDAoEam9icxgBIAEoAxIPCgdtaW51dGVzGAIgASgDIqkCCghVc2FnZVJvdxILCgNkYXkYASABKAkSEgoKY29uY2x1c2lvbhgCIAEoCRIMCgRqb2JzGAMgASgDEg8KB21pbnV0ZXMYBCABKAMSGAoQb3duX2hvc3RfbWludXRlcxgFIAEoAxIVCg1kZWJ1Z19taW51dGVzGAYgASgDEhgKEG92ZXJmbG93X21pbnV0ZXMYByABKAMSGwoTcmVzZXJ2ZWRfc2xvdF9ob3VycxgIIAEoAxIPCgdvdXRjb21lGAkgASgJEgwKBGtpbmQYCiABKAkSDwoHc2Vjb25kcxgLIAEoARIYChBvd25faG9zdF9zZWNvbmRzGAwgASgBEhUKDWF3YWtlX3NlY29uZHMYDSABKAESFAoMaWRsZV9zZWNvbmRzGA4gASgBIsQBChBXb3JrZmxvd1VzYWdlUm93EhIKCnJlcG9zaXRvcnkYASABKAkSEAoId29ya2Zsb3cYAiABKAkSDAoEam9icxgDIAEoAxIPCgdtaW51dGVzGAQgASgDEhgKEG93bl9ob3N0X21pbnV0ZXMYBSABKAMSEwoLZmFpbGVkX2pvYnMYBiABKAMSEgoKdGltZWRfam9icxgHIAEoAxITCgtwNTBfc2Vjb25kcxgIIAEoAxITCgtwOTVfc2Vjb25kcxgJIAEoAyKYAwoEUGxhbhIMCgRuYW1lGAEgASgJEhMKC2NvbmN1cnJlbmN5GAIgASgFEhcKD21heF9qb2JfbWludXRlcxgDIAEoBRISCgppc19kZWZhdWx0GAQgASgIEhIKCnNlbGZfc2VydmUYBSABKAgSEgoKYWxsb3dlZF9vcxgGIAMoCRIQCghtYXhfc2l6ZRgHIAEoCRIQCghtYXhfdmNwdRgIIAEoBRIeChZmcmVlX21pbnV0ZXNfcGVyX21vbnRoGAkgASgFEg0KBXNpemVzGAogAygJEhkKEWNhcmRfcmVxdWlyZWRfZm9yGAsgAygJEhkKEW1heF9qb2JzX3Blcl9ob3VyGAwgASgFEhgKEGJ1cnN0X2d1YXJkX2pvYnMYDSABKAUSHAoUc3RhcnRlcl9jcmVkaXRfY2VudHMYDiABKAMSFAoMaGlzdG9yeV9kYXlzGA8gASgFEhUKDWRlYnVnX21pbnV0ZXMYECABKAUSFQoNbWF4X293bl9ob3N0cxgRIAEoBRITCgtvcGVuX3NvdXJjZRgSIAEoCCK3AQoKRWdyZXNzSG9zdBIPCgdob3N0X2lkGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGc2hhcmVkGAMgASgIEi4KBmVncmVzcxgEIAEoCzIeLnRvc2hpLndvcmtzcGFjZS52MS5Ib3N0RWdyZXNzEhIKCnJlY2VudF9pcHMYBSADKAkSDQoFY2xvdWQYBiABKAkSFAoMY2xvdWRfZWdyZXNzGAcgASgJEhEKCWNvbmZpcm1lZBgIIAEoCCqWAgoXSG9zdGluZ0NlcnRpZmljYXRlU3RhdGUSKQolSE9TVElOR19DRVJUSUZJQ0FURV9TVEFURV9VTlNQRUNJRklFRBAAEiUKIUhPU1RJTkdfQ0VSVElGSUNBVEVfU1RBVEVfSVNTVUlORxABEioKJkhPU1RJTkdfQ0VSVElGSUNBVEVfU1RBVEVfUkFURV9MSU1JVEVEEAISIwofSE9TVElOR19DRVJUSUZJQ0FURV9TVEFURV9WQUxJRBADEi0KKUhPU1RJTkdfQ0VSVElGSUNBVEVfU1RBVEVfUkVORVdBTF9GQUlMSU5HEAQSKQolSE9TVElOR19DRVJUSUZJQ0FURV9TVEFURV9TRUxGX1NJR05FRBAFMtcTChBXb3Jrc3BhY2VTZXJ2aWNlEnUKDEdldFdvcmtzcGFjZRInLnRvc2hpLndvcmtzcGFjZS52MS5HZXRXb3Jrc3BhY2VSZXF1ZXN0GigudG9zaGkud29ya3NwYWNlLnYxLkdldFdvcmtzcGFjZVJlc3BvbnNlIhLC8xgOd29ya3NwYWNlLnJlYWQSgwEKD1VwZGF0ZVdvcmtzcGFjZRIqLnRvc2hpLndvcmtzcGFjZS52MS5VcGRhdGVXb3Jrc3BhY2VSZXF1ZXN0GisudG9zaGkud29ya3NwYWNlLnYxLlVwZGF0ZVdvcmtzcGFjZVJlc3BvbnNlIhfC8xgPd29ya3NwYWNlLndyaXRl4PMYARJ7Cg5MaXN0V29ya3NwYWNlcxIpLnRvc2hpLndvcmtzcGFjZS52MS5MaXN0V29ya3NwYWNlc1JlcXVlc3QaKi50b3NoaS53b3Jrc3BhY2UudjEuTGlzdFdvcmtzcGFjZXNSZXNwb25zZSISwvMYDndvcmtzcGFjZS5yZWFkEogBChNHZXRXb3Jrc3BhY2VCaWxsaW5nEi4udG9zaGkud29ya3NwYWNlLnYxLkdldFdvcmtzcGFjZUJpbGxpbmdSZXF1ZXN0Gi8udG9zaGkud29ya3NwYWNlLnYxLkdldFdvcmtzcGFjZUJpbGxpbmdSZXNwb25zZSIQwvMYDGJpbGxpbmcucmVhZBKOAQoVR2V0V29ya3NwYWNlU3RhdGVtZW50EjAudG9zaGkud29ya3NwYWNlLnYxLkdldFdvcmtzcGFjZVN0YXRlbWVudFJlcXVlc3QaMS50b3NoaS53b3Jrc3BhY2UudjEuR2V0V29ya3NwYWNlU3RhdGVtZW50UmVzcG9uc2UiEMLzGAxiaWxsaW5nLnJlYWQSaAoJTGlzdFNlYXRzEiQudG9zaGkud29ya3NwYWNlLnYxLkxpc3RTZWF0c1JlcXVlc3QaJS50b3NoaS53b3Jrc3BhY2UudjEuTGlzdFNlYXRzUmVzcG9uc2UiDsLzGApzZWF0cy5yZWFkEpYBCgpBc3NpZ25TZWF0EiUudG9zaGkud29ya3NwYWNlLnYxLkFzc2lnblNlYXRSZXF1ZXN0GiYudG9zaGkud29ya3NwYWNlLnYxLkFzc2lnblNlYXRSZXNwb25zZSI5wvMYC3NlYXRzLndyaXRl0vMYJgoNc2VhdC5hc3NpZ25lZBIVc2VhdDpyZXNwb25zZS5zZWF0LmlkEn4KClJlbW92ZVNlYXQSJS50b3NoaS53b3Jrc3BhY2UudjEuUmVtb3ZlU2VhdFJlcXVlc3QaJi50b3NoaS53b3Jrc3BhY2UudjEuUmVtb3ZlU2VhdFJlc3BvbnNlIiHC8xgLc2VhdHMud3JpdGXS8xgOCgxzZWF0LnJlbW92ZWQSeAoNTGlzdEVncmVzc0lQcxIoLnRvc2hpLndvcmtzcGFjZS52MS5MaXN0RWdyZXNzSVBzUmVxdWVzdBopLnRvc2hpLndvcmtzcGFjZS52MS5MaXN0RWdyZXNzSVBzUmVzcG9uc2UiEsLzGA53b3Jrc3BhY2UucmVhZBJpCghHZXRVc2FnZRIjLnRvc2hpLndvcmtzcGFjZS52MS5HZXRVc2FnZVJlcXVlc3QaJC50b3NoaS53b3Jrc3BhY2UudjEuR2V0VXNhZ2VSZXNwb25zZSISwvMYDndvcmtzcGFjZS5yZWFkEngKDUdldFF1ZXVlVGltZXMSKC50b3NoaS53b3Jrc3BhY2UudjEuR2V0UXVldWVUaW1lc1JlcXVlc3QaKS50b3NoaS53b3Jrc3BhY2UudjEuR2V0UXVldWVUaW1lc1Jlc3BvbnNlIhLC8xgOd29ya3NwYWNlLnJlYWQSgQEKEEdldFdvcmtmbG93VXNhZ2USKy50b3NoaS53b3Jrc3BhY2UudjEuR2V0V29ya2Zsb3dVc2FnZVJlcXVlc3QaLC50b3NoaS53b3Jrc3BhY2UudjEuR2V0V29ya2Zsb3dVc2FnZVJlc3BvbnNlIhLC8xgOd29ya3NwYWNlLnJlYWQSagoJTGlzdFBsYW5zEiQudG9zaGkud29ya3NwYWNlLnYxLkxpc3RQbGFuc1JlcXVlc3QaJS50b3NoaS53b3Jrc3BhY2UudjEuTGlzdFBsYW5zUmVzcG9uc2UiEMLzGAxiaWxsaW5nLnJlYWQSwQEKFUNyZWF0ZUNoZWNrb3V0U2Vzc2lvbhIwLnRvc2hpLndvcmtzcGFjZS52MS5DcmVhdGVDaGVja291dFNlc3Npb25SZXF1ZXN0GjEudG9zaGkud29ya3NwYWNlLnYxLkNyZWF0ZUNoZWNrb3V0U2Vzc2lvblJlc3BvbnNlIkPC8xgNYmlsbGluZy53cml0ZdLzGC4KF2JpbGxpbmcuY2hlY2tvdXRfb3BlbmVkEhN3b3Jrc3BhY2U6d29ya3NwYWNlEs4BChpDcmVhdGVCaWxsaW5nUG9ydGFsU2Vzc2lvbhI1LnRvc2hpLndvcmtzcGFjZS52MS5DcmVhdGVCaWxsaW5nUG9ydGFsU2Vzc2lvblJlcXVlc3QaNi50b3NoaS53b3Jrc3BhY2UudjEuQ3JlYXRlQmlsbGluZ1BvcnRhbFNlc3Npb25SZXNwb25zZSJBwvMYDWJpbGxpbmcud3JpdGXS8xgsChViaWxsaW5nLnBvcnRhbF9vcGVuZWQSE3dvcmtzcGFjZTp3b3Jrc3BhY2USbwoKR2V0VmVyc2lvbhIlLnRvc2hpLndvcmtzcGFjZS52MS5HZXRWZXJzaW9uUmVxdWVzdBomLnRvc2hpLndvcmtzcGFjZS52MS5HZXRWZXJzaW9uUmVzcG9uc2UiEsLzGA53b3Jrc3BhY2UucmVhZBKiAQoPRGVsZXRlV29ya3NwYWNlEioudG9zaGkud29ya3NwYWNlLnYxLkRlbGV0ZVdvcmtzcGFjZVJlcXVlc3QaKy50b3NoaS53b3Jrc3BhY2UudjEuRGVsZXRlV29ya3NwYWNlUmVzcG9uc2UiNsLzGBB3b3Jrc3BhY2UuZGVsZXRl0vMYHgocd29ya3NwYWNlLmRlbGV0aW9uX3NjaGVkdWxlZBKvAQoXQ2FuY2VsV29ya3NwYWNlRGVsZXRpb24SMi50b3NoaS53b3Jrc3BhY2UudjEuQ2FuY2VsV29ya3NwYWNlRGVsZXRpb25SZXF1ZXN0GjMudG9zaGkud29ya3NwYWNlLnYxLkNhbmNlbFdvcmtzcGFjZURlbGV0aW9uUmVzcG9uc2UiK8LzGBB3b3Jrc3BhY2UuZGVsZXRl0vMYEwoRd29ya3NwYWNlLnJlc3VtZWRCIlogZ28udG9zaGljbG91ZC5pby9hcGkvd29ya3NwYWNldjFiBnByb3RvMw", [file_google_protobuf_field_mask, file_google_protobuf_timestamp, file_toshi_permission, file_toshi_workspace_v1_discovery, file_toshi_workspace_v1_hosts, file_toshi_workspace_v1_roles]);
13
+ export const file_toshi_workspace_v1_workspace_service = /*@__PURE__*/ fileDesc("Cip0b3NoaS93b3Jrc3BhY2UvdjEvd29ya3NwYWNlX3NlcnZpY2UucHJvdG8SEnRvc2hpLndvcmtzcGFjZS52MSIVChNHZXRXb3Jrc3BhY2VSZXF1ZXN0IkgKFEdldFdvcmtzcGFjZVJlc3BvbnNlEjAKCXdvcmtzcGFjZRgBIAEoCzIdLnRvc2hpLndvcmtzcGFjZS52MS5Xb3Jrc3BhY2UiOQoWRGVsZXRlV29ya3NwYWNlUmVxdWVzdBIPCgdjb25maXJtGAEgASgJEg4KBnJlYXNvbhgCIAEoCSJLChdEZWxldGVXb3Jrc3BhY2VSZXNwb25zZRIwCgl3b3Jrc3BhY2UYASABKAsyHS50b3NoaS53b3Jrc3BhY2UudjEuV29ya3NwYWNlIiAKHkNhbmNlbFdvcmtzcGFjZURlbGV0aW9uUmVxdWVzdCJTCh9DYW5jZWxXb3Jrc3BhY2VEZWxldGlvblJlc3BvbnNlEjAKCXdvcmtzcGFjZRgBIAEoCzIdLnRvc2hpLndvcmtzcGFjZS52MS5Xb3Jrc3BhY2UiewoWVXBkYXRlV29ya3NwYWNlUmVxdWVzdBIwCgl3b3Jrc3BhY2UYASABKAsyHS50b3NoaS53b3Jrc3BhY2UudjEuV29ya3NwYWNlEi8KC3VwZGF0ZV9tYXNrGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFzayJLChdVcGRhdGVXb3Jrc3BhY2VSZXNwb25zZRIwCgl3b3Jrc3BhY2UYASABKAsyHS50b3NoaS53b3Jrc3BhY2UudjEuV29ya3NwYWNlIj4KFUxpc3RXb3Jrc3BhY2VzUmVxdWVzdBIRCglwYWdlX3NpemUYASABKAUSEgoKcGFnZV90b2tlbhgCIAEoCSJkChZMaXN0V29ya3NwYWNlc1Jlc3BvbnNlEjEKCndvcmtzcGFjZXMYASADKAsyHS50b3NoaS53b3Jrc3BhY2UudjEuV29ya3NwYWNlEhcKD25leHRfcGFnZV90b2tlbhgCIAEoCSIsChpHZXRXb3Jrc3BhY2VCaWxsaW5nUmVxdWVzdBIOCgZtb250aHMYASABKAUiVAobR2V0V29ya3NwYWNlQmlsbGluZ1Jlc3BvbnNlEjUKB2JpbGxpbmcYASABKAsyJC50b3NoaS53b3Jrc3BhY2UudjEuV29ya3NwYWNlQmlsbGluZyI6ChxHZXRXb3Jrc3BhY2VTdGF0ZW1lbnRSZXF1ZXN0Eg0KBW1vbnRoGAEgASgJEgsKA2NzdhgCIAEoCCJnCh1HZXRXb3Jrc3BhY2VTdGF0ZW1lbnRSZXNwb25zZRI5CglzdGF0ZW1lbnQYASABKAsyJi50b3NoaS53b3Jrc3BhY2UudjEuV29ya3NwYWNlU3RhdGVtZW50EgsKA2NzdhgCIAEoCSIkCiJHZXRXb3Jrc3BhY2VVcGNvbWluZ0ludm9pY2VSZXF1ZXN0ItsBCiNHZXRXb3Jrc3BhY2VVcGNvbWluZ0ludm9pY2VSZXNwb25zZRI0CgdpbnZvaWNlGAEgASgLMiMudG9zaGkud29ya3NwYWNlLnYxLlVwY29taW5nSW52b2ljZRIxCghwcm9qZWN0cxgCIAMoCzIfLnRvc2hpLndvcmtzcGFjZS52MS5Qcm9qZWN0Q29zdBIaChJtb250aF9zb19mYXJfY2VudHMYAyABKAMSHQoVZXN0aW1hdGVkX21vbnRoX2NlbnRzGAQgASgDEhAKCGN1cnJlbmN5GAUgASgJIuIBCg9VcGNvbWluZ0ludm9pY2USFAoMYW1vdW50X2NlbnRzGAEgASgDEhAKCGN1cnJlbmN5GAIgASgJEjAKDHBlcmlvZF9zdGFydBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKcGVyaW9kX2VuZBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMgoObWV0ZXJzX3JlYWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhEKCWF2YWlsYWJsZRgGIAEoCCJyCgtQcm9qZWN0Q29zdBISCgpwcm9qZWN0X2lkGAEgASgJEhQKDHByb2plY3RfbmFtZRgCIAEoCRIaChJtb250aF9zb19mYXJfY2VudHMYAyABKAMSHQoVZXN0aW1hdGVkX21vbnRoX2NlbnRzGAQgASgDIpECCgRTZWF0EgoKAmlkGAEgASgJEg8KB3VzZXJfaWQYAiABKAkSLwoLYXNzaWduZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKC2Fzc2lnbmVkX2J5GAQgASgLMhsudG9zaGkud29ya3NwYWNlLnYxLlN1YmplY3QSLgoKcmVtb3ZlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoKcmVtb3ZlZF9ieRgGIAEoCzIbLnRvc2hpLndvcmtzcGFjZS52MS5TdWJqZWN0EhAKCHJlcGxhY2VzGAcgASgJEhYKDnJlcGxhY2VfcmVhc29uGAggASgJIiEKEExpc3RTZWF0c1JlcXVlc3QSDQoFbW9udGgYASABKAkiPAoRTGlzdFNlYXRzUmVzcG9uc2USJwoFc2VhdHMYASADKAsyGC50b3NoaS53b3Jrc3BhY2UudjEuU2VhdCIkChFBc3NpZ25TZWF0UmVxdWVzdBIPCgd1c2VyX2lkGAEgASgJIjwKEkFzc2lnblNlYXRSZXNwb25zZRImCgRzZWF0GAEgASgLMhgudG9zaGkud29ya3NwYWNlLnYxLlNlYXQiJAoRUmVtb3ZlU2VhdFJlcXVlc3QSDwoHc2VhdF9pZBgBIAEoCSI8ChJSZW1vdmVTZWF0UmVzcG9uc2USJgoEc2VhdBgBIAEoCzIYLnRvc2hpLndvcmtzcGFjZS52MS5TZWF0Ij0KFExpc3RFZ3Jlc3NJUHNSZXF1ZXN0EhEKCXBhZ2Vfc2l6ZRgBIAEoBRISCgpwYWdlX3Rva2VuGAIgASgJIn4KFUxpc3RFZ3Jlc3NJUHNSZXNwb25zZRILCgNpcHMYASADKAkSLQoFaG9zdHMYAiADKAsyHi50b3NoaS53b3Jrc3BhY2UudjEuRWdyZXNzSG9zdBIQCghjb21wbGV0ZRgDIAEoCBIXCg9uZXh0X3BhZ2VfdG9rZW4YBCABKAkiYwoPR2V0VXNhZ2VSZXF1ZXN0EigKBGZyb20YASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCL3AQoQR2V0VXNhZ2VSZXNwb25zZRIqCgRyb3dzGAEgAygLMhwudG9zaGkud29ya3NwYWNlLnYxLlVzYWdlUm93EigKBGZyb20YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKAnRvGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgZmaWxsZXIYBCABKAsyHy50b3NoaS53b3Jrc3BhY2UudjEuRmlsbGVyVXNhZ2USNAoHc3RvcmFnZRgFIAMoCzIjLnRvc2hpLndvcmtzcGFjZS52MS5TdG9yYWdlVXNhZ2VSb3ciaAoUR2V0UXVldWVUaW1lc1JlcXVlc3QSKAoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJgoCdG8YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIugBChVHZXRRdWV1ZVRpbWVzUmVzcG9uc2USDAoEam9icxgBIAEoAxIOCgZwNTBfbXMYAiABKAMSDgoGcDkwX21zGAMgASgDEg4KBm1heF9tcxgEIAEoAxISCgp3YXJtX3NoYXJlGAUgASgBEigKBGZyb20YBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKAnRvGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgRoZWxkGAggAygLMh0udG9zaGkud29ya3NwYWNlLnYxLkhvbGRUaW1lcyJrChdHZXRXb3JrZmxvd1VzYWdlUmVxdWVzdBIoCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBImCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAioAEKGEdldFdvcmtmbG93VXNhZ2VSZXNwb25zZRIyCgRyb3dzGAEgAygLMiQudG9zaGkud29ya3NwYWNlLnYxLldvcmtmbG93VXNhZ2VSb3cSKAoEZnJvbRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJgoCdG8YAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjkKEExpc3RQbGFuc1JlcXVlc3QSEQoJcGFnZV9zaXplGAEgASgFEhIKCnBhZ2VfdG9rZW4YAiABKAkiVQoRTGlzdFBsYW5zUmVzcG9uc2USJwoFcGxhbnMYASADKAsyGC50b3NoaS53b3Jrc3BhY2UudjEuUGxhbhIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkiQAocQ3JlYXRlQ2hlY2tvdXRTZXNzaW9uUmVxdWVzdBIMCgRwbGFuGAEgASgJEhIKCnJldHVybl91cmwYAiABKAkiLAodQ3JlYXRlQ2hlY2tvdXRTZXNzaW9uUmVzcG9uc2USCwoDdXJsGAEgASgJIjcKIUNyZWF0ZUJpbGxpbmdQb3J0YWxTZXNzaW9uUmVxdWVzdBISCgpyZXR1cm5fdXJsGAEgASgJIjEKIkNyZWF0ZUJpbGxpbmdQb3J0YWxTZXNzaW9uUmVzcG9uc2USCwoDdXJsGAEgASgJIhMKEUdldFZlcnNpb25SZXF1ZXN0ImIKEkdldFZlcnNpb25SZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgJEg4KBmNvbW1pdBgCIAEoCRIMCgRkYXRlGAMgASgJEh0KFW1pbmltdW1fYWdlbnRfdmVyc2lvbhgEIAEoCSKIDAoJV29ya3NwYWNlEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSHAoPY29uY3VycmVuY3lfY2FwGAMgASgFSACIAQESLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDAoEcGxhbhgFIAEoCRIdChVlZmZlY3RpdmVfY29uY3VycmVuY3kYBiABKAUSDgoGc3RhdHVzGAcgASgJEiMKG2VmZmVjdGl2ZV9tYXhfam9ic19wZXJfaG91chgLIAEoBRIcChRzdGFydGVyX2NyZWRpdF9jZW50cxgMIAEoAxI9ChlzdGFydGVyX2NyZWRpdF9ncmFudGVkX2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1CgxyZXNlcnZhdGlvbnMYECADKAsyHy50b3NoaS53b3Jrc3BhY2UudjEuUmVzZXJ2YXRpb24SDQoFc3RhdGUYESABKAkSFAoMc3RhdGVfcmVhc29uGBIgASgJEi8KC3N0YXRlX3NpbmNlGBMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgtwdXJnZV9hZnRlchgUIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLZGVsZXRpb25fYnkYJyABKAkSHgoWaGlzdG9yeV9kYXlzX2VmZmVjdGl2ZRgWIAEoBRIcCg9zZWNyZXRfbWF4X3NldHMYGCABKAVIAYgBARIcCg9zZWNyZXRfbWF4X2tleXMYGSABKAVIAogBARIbCg5zZWNyZXRfbWF4X2tpYhgaIAEoA0gDiAEBEh4KEXByZXZpZXdfbWF4X3BvcnRzGBsgASgFSASIAQESIQoZc2VjcmV0X21heF9zZXRzX2VmZmVjdGl2ZRgcIAEoBRIhChlzZWNyZXRfbWF4X2tleXNfZWZmZWN0aXZlGB0gASgFEiAKGHNlY3JldF9tYXhfa2liX2VmZmVjdGl2ZRgeIAEoAxIjChtwcmV2aWV3X21heF9wb3J0c19lZmZlY3RpdmUYHyABKAUSNwoIc2V0dGluZ3MYISABKAsyJS50b3NoaS53b3Jrc3BhY2UudjEuV29ya3NwYWNlU2V0dGluZ3MSDAoEZXRhZxgiIAEoCRJDChNob3N0aW5nX2NlcnRpZmljYXRlGCMgASgLMiYudG9zaGkud29ya3NwYWNlLnYxLkhvc3RpbmdDZXJ0aWZpY2F0ZRIdChVrZWVwX3ZtX21heF9lZmZlY3RpdmUYJCABKAUSPQoSa2VlcF92bV9tYXhfc291cmNlGCkgASgOMiEudG9zaGkud29ya3NwYWNlLnYxLkZlYXR1cmVTb3VyY2USFQoNa2VlcF92bV9jb3VudBglIAEoBRIiChprZWVwX3ZtX3N0b3BwZWRfbG9uZ19jb3VudBgmIAEoBRJFChFyZWNvcmRpbmdfY2hhbmdlZBgoIAEoCzIqLnRvc2hpLndvcmtzcGFjZS52MS5Xb3Jrc3BhY2VTZXR0aW5nQ2hhbmdlElEKHXJlY29yZGluZ19odW1hbl9zcGFuc19jaGFuZ2VkGCogASgLMioudG9zaGkud29ya3NwYWNlLnYxLldvcmtzcGFjZVNldHRpbmdDaGFuZ2VCEgoQX2NvbmN1cnJlbmN5X2NhcEISChBfc2VjcmV0X21heF9zZXRzQhIKEF9zZWNyZXRfbWF4X2tleXNCEQoPX3NlY3JldF9tYXhfa2liQhQKEl9wcmV2aWV3X21heF9wb3J0c0oECAgQCUoECAkQCkoECAoQC0oECA4QD0oECA8QEEoECBUQFkoECBcQGEoECCAQIVIOb3duX2hvc3RzX29ubHlSD3NwZW5kX2NhcF9jZW50c1IRbWF4X2pvYnNfcGVyX2hvdXJSDmFsbG93X292ZXJmbG93UhBhbGxvd19jYWNoZV93YXJtUgxoaXN0b3J5X2RheXNSFmNhbmNlbF9ydW5fb25fdm1fZGVhdGhSC21lbWJlcl9qb2luIvgBChJIb3N0aW5nQ2VydGlmaWNhdGUSDAoEbmFtZRgBIAEoCRI6CgVzdGF0ZRgCIAEoDjIrLnRvc2hpLndvcmtzcGFjZS52MS5Ib3N0aW5nQ2VydGlmaWNhdGVTdGF0ZRItCglub3RfYWZ0ZXIYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiwKCHJlbmV3X2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghyZXRyeV9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDQoFZXJyb3IYBiABKAki2QMKEVdvcmtzcGFjZVNldHRpbmdzEhMKC21lbWJlcl9qb2luGAEgASgJEkoKB3NpZ25faW4YAiABKAsyIy50b3NoaS53b3Jrc3BhY2UudjEuV29ya3NwYWNlU2lnbkluQhTa8xgQd29ya3NwYWNlLnNpZ25pbhIZCgxoaXN0b3J5X2RheXMYAyABKAVIAIgBARIWCg5vd25faG9zdHNfb25seRgEIAEoCBIWCg5hbGxvd19vdmVyZmxvdxgFIAEoCBIYChBhbGxvd19jYWNoZV93YXJtGAYgASgIEh4KFmNhbmNlbF9ydW5fb25fdm1fZGVhdGgYByABKAgSKgoPc3BlbmRfY2FwX2NlbnRzGAggASgDQhHa8xgNYmlsbGluZy53cml0ZRIsChFtYXhfam9ic19wZXJfaG91chgJIAEoBUIR2vMYDWJpbGxpbmcud3JpdGUSDwoHa2VlcF92bRgKIAEoCBIWCglyZWNvcmRpbmcYCyABKAhIAYgBARIiChVyZWNvcmRpbmdfaHVtYW5fc3BhbnMYDCABKAhIAogBAUIPCg1faGlzdG9yeV9kYXlzQgwKCl9yZWNvcmRpbmdCGAoWX3JlY29yZGluZ19odW1hbl9zcGFucyJ5ChZXb3Jrc3BhY2VTZXR0aW5nQ2hhbmdlEi8KCmNoYW5nZWRfYnkYASABKAsyGy50b3NoaS53b3Jrc3BhY2UudjEuU3ViamVjdBIuCgpjaGFuZ2VkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJvCg9Xb3Jrc3BhY2VTaWduSW4SEAoIcHJvdmlkZXIYASABKAkSDgoGaXNzdWVyGAIgASgJEg4KBnNldF9ieRgDIAEoCRIqCgZzZXRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkgKC1Jlc2VydmF0aW9uEgwKBHNpemUYASABKAkSDQoFc2xvdHMYAiABKAUSDAoEd2FybRgDIAEoBRIOCgZzb3VyY2UYBCABKAki+wcKEFdvcmtzcGFjZUJpbGxpbmcSEwoLY3VzdG9tZXJfaWQYASABKAkSFwoPc3Vic2NyaXB0aW9uX2lkGAIgASgJEjYKEmJpbGxpbmdfc3RhcnRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoTc3Vic2NyaXB0aW9uX3N0YXR1cxgEIAEoCRI9ChlzdWJzY3JpcHRpb25fc3RhdHVzX3NpbmNlGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCgZ0b3RhbHMYBiADKAsyIS50b3NoaS53b3Jrc3BhY2UudjEuQmlsbGluZ1RvdGFscxI+Cg1mYWlsZWRfZXZlbnRzGAcgAygLMicudG9zaGkud29ya3NwYWNlLnYxLkJpbGxpbmdFdmVudEZhaWx1cmUSGgoSbWludXRlc190aGlzX21vbnRoGAggASgDEh4KFmZyZWVfbWludXRlc19wZXJfbW9udGgYCSABKAMSFQoNY2FyZF92ZXJpZmllZBgKIAEoCBI0ChBjYXJkX3ZlcmlmaWVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCg9zcGVuZF9jYXBfY2VudHMYDCABKAMSEwoLc3BlbmRfY2VudHMYDSABKAMSEwoLc3BlbmRfbGV2ZWwYDiABKAUSEAoIY3VycmVuY3kYDyABKAkSEwoLc3BlbmRfa25vd24YECABKAgSHAoUc3RhcnRlcl9jcmVkaXRfY2VudHMYESABKAMSIQoZc3RhcnRlcl9jcmVkaXRfbGVmdF9jZW50cxgSIAEoAxI9ChlzdGFydGVyX2NyZWRpdF9hcHBsaWVkX2F0GBMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCg9iaWxsaW5nX2VuYWJsZWQYFCABKAgSPwoIaGVsZF9ub3cYFSADKAsyLS50b3NoaS53b3Jrc3BhY2UudjEuV29ya3NwYWNlQmlsbGluZy5IZWxkSm9icxIYChBjb25jdXJyZW5jeV91c2VkGBYgASgDEiUKGGRlc2t0b3Bfc2VhdF9wcmljZV9jZW50cxgaIAEoA0gAiAEBGoYBCghIZWxkSm9icxIOCgZyZWFzb24YFyABKAkSDAoEam9icxgYIAEoAxIpCgVzaW5jZRgZIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMQoNbmV4dF9zdGFydF9hdBgaIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCGwoZX2Rlc2t0b3Bfc2VhdF9wcmljZV9jZW50cyK3AQoNQmlsbGluZ1RvdGFscxINCgVtb250aBgBIAEoCRIMCgRzaXplGAIgASgJEhMKC3NlbnRfZXZlbnRzGAMgASgDEhQKDHNlbnRfbWludXRlcxgEIAEoAxIWCg5wZW5kaW5nX2V2ZW50cxgFIAEoAxIXCg9wZW5kaW5nX21pbnV0ZXMYBiABKAMSFQoNZmFpbGVkX2V2ZW50cxgHIAEoAxIWCg5mYWlsZWRfbWludXRlcxgIIAEoAyLeAQoTQmlsbGluZ0V2ZW50RmFpbHVyZRIOCgZqb2JfaWQYASABKAkSDAoEc2l6ZRgCIAEoCRISCgpldmVudF9uYW1lGAMgASgJEg8KB21pbnV0ZXMYBCABKAMSLwoLb2NjdXJyZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi0KCWZhaWxlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEAoIYXR0ZW1wdHMYByABKAUSEgoKbGFzdF9lcnJvchgIIAEoCSLNBwoSV29ya3NwYWNlU3RhdGVtZW50Eg0KBW1vbnRoGAEgASgJEigKBGZyb20YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKAnRvGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIMCgRwbGFuGAQgASgJEjEKBXVzYWdlGAUgAygLMiIudG9zaGkud29ya3NwYWNlLnYxLlN0YXRlbWVudFVzYWdlEjEKBXRvdGFsGAYgASgLMiIudG9zaGkud29ya3NwYWNlLnYxLlN0YXRlbWVudFVzYWdlEjQKB2NoYXJnZXMYByADKAsyIy50b3NoaS53b3Jrc3BhY2UudjEuU3RhdGVtZW50Q2hhcmdlEhcKD2VzdGltYXRlZF9jZW50cxgIIAEoAxIQCghjdXJyZW5jeRgJIAEoCRIWCg5lc3RpbWF0ZV9rbm93bhgKIAEoCBIkChxzdGFydGVyX2NyZWRpdF9hcHBsaWVkX2NlbnRzGAsgASgDEj0KGXN0YXJ0ZXJfY3JlZGl0X2FwcGxpZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKBGhlbGQYDSADKAsyHS50b3NoaS53b3Jrc3BhY2UudjEuSG9sZFRpbWVzEh0KFWN1cnJlbnRfcHJpY2VfbWludXRlcxgOIAEoAxIvCgZmaWxsZXIYDyABKAsyHy50b3NoaS53b3Jrc3BhY2UudjEuRmlsbGVyVXNhZ2USFwoPYmlsbGluZ19lbmFibGVkGBAgASgIEjgKFHNwZW5kX2NhcF9yZWFjaGVkX2F0GBEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIfChdzcGVuZF9jYXBfcmVhY2hlZF9jZW50cxgSIAEoAxIXCg9zcGVuZF9jYXBfY2VudHMYEyABKAMSNAoMb3duX2hvc3RfZmVlGBQgASgLMh4udG9zaGkud29ya3NwYWNlLnYxLk93bkhvc3RGZWUSKAoFYXdha2UYFSADKAsyGS50b3NoaS53b3Jrc3BhY2UudjEuQXdha2USLAoHc3RvcmFnZRgWIAEoCzIbLnRvc2hpLndvcmtzcGFjZS52MS5TdG9yYWdlEjcKDWRlc2t0b3Bfc2VhdHMYFyABKAsyIC50b3NoaS53b3Jrc3BhY2UudjEuRGVza3RvcFNlYXRzEjMKC3BhaWRfc3RhcnRzGBggASgLMh4udG9zaGkud29ya3NwYWNlLnYxLlBhaWRTdGFydHMimwEKDERlc2t0b3BTZWF0cxIUCgxiaWxsZWRfc2VhdHMYASABKAMSGAoQc2VhdF9wcmljZV9jZW50cxgCIAEoAxIQCgh1bnByaWNlZBgDIAEoCBIXCg9lc3RpbWF0ZWRfY2VudHMYBCABKAMSMAoFc2VhdHMYBSADKAsyIS50b3NoaS53b3Jrc3BhY2UudjEuU3RhdGVtZW50U2VhdCI0CgpQYWlkU3RhcnRzEg0KBWNvdW50GAEgASgDEhcKD2VzdGltYXRlZF9jZW50cxgCIAEoAyLCAQoNU3RhdGVtZW50U2VhdBIPCgdzZWF0X2lkGAEgASgJEg8KB3VzZXJfaWQYAiABKAkSDAoEbmFtZRgDIAEoCRIvCgthc3NpZ25lZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKcmVtb3ZlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEAoIcmVwbGFjZXMYBiABKAkSDgoGYmlsbGVkGAcgASgIImQKCk93bkhvc3RGZWUSDwoHc2Vjb25kcxgBIAEoARIUCgxmcmVlX3NlY29uZHMYAiABKAMSFgoOYmlsbGVkX3NlY29uZHMYAyABKAMSFwoPZXN0aW1hdGVkX2NlbnRzGAQgASgDInsKBUF3YWtlEgwKBHNpemUYASABKAkSDAoEcnVucxgCIAEoAxIPCgdzZWNvbmRzGAMgASgBEhQKDGlkbGVfc2Vjb25kcxgEIAEoARIWCg5iaWxsZWRfc2Vjb25kcxgFIAEoAxIXCg9lc3RpbWF0ZWRfY2VudHMYBiABKAMiqwEKB1N0b3JhZ2USLQoFa2luZHMYASADKAsyHi50b3NoaS53b3Jrc3BhY2UudjEuU3RvcmVkS2luZBITCgtpbmNsdWRlZF9nYhgCIAEoAxIQCghnYl9ob3VycxgDIAEoARIXCg9leGNlc3NfZ2JfaG91cnMYBCABKAESGAoQYmlsbGVkX2diX21vbnRocxgFIAEoARIXCg9lc3RpbWF0ZWRfY2VudHMYBiABKAMiOwoKU3RvcmVkS2luZBIMCgRraW5kGAEgASgJEg0KBWJ5dGVzGAIgASgDEhAKCGdiX2hvdXJzGAMgASgBIk0KD1N0b3JhZ2VVc2FnZVJvdxILCgNkYXkYASABKAkSDAoEa2luZBgCIAEoCRIQCghnYl9ob3VycxgDIAEoARINCgVieXRlcxgEIAEoAyLtAQoOU3RhdGVtZW50VXNhZ2USDAoEc2l6ZRgBIAEoCRIKCgJvcxgCIAEoCRIMCgRqb2JzGAMgASgDEg8KB21pbnV0ZXMYBCABKAMSGAoQb3duX2hvc3RfbWludXRlcxgFIAEoAxIVCg1kZWJ1Z19taW51dGVzGAYgASgDEhgKEG92ZXJmbG93X21pbnV0ZXMYByABKAMSGwoTcmVzZXJ2ZWRfc2xvdF9ob3VycxgIIAEoAxIPCgdvdXRjb21lGAkgASgJEg8KB3NlY29uZHMYCiABKAESGAoQb3duX2hvc3Rfc2Vjb25kcxgLIAEoASJaCg9TdGF0ZW1lbnRDaGFyZ2USDAoEc2l6ZRgBIAEoCRIPCgdtaW51dGVzGAIgASgDEhcKD2VzdGltYXRlZF9jZW50cxgDIAEoAxIPCgdzZWNvbmRzGAQgASgDIpwBCglIb2xkVGltZXMSDgoGcmVhc29uGAEgASgJEgwKBGpvYnMYAiABKAMSDgoGcDUwX21zGAMgASgDEg4KBnA5MF9tcxgEIAEoAxIOCgZtYXhfbXMYBSABKAMSEQoJb3Blbl9qb2JzGAYgASgDEi4KCm9wZW5fc2luY2UYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIiwKC0ZpbGxlclVzYWdlEgwKBGpvYnMYASABKAMSDwoHbWludXRlcxgCIAEoAyKpAgoIVXNhZ2VSb3cSCwoDZGF5GAEgASgJEhIKCmNvbmNsdXNpb24YAiABKAkSDAoEam9icxgDIAEoAxIPCgdtaW51dGVzGAQgASgDEhgKEG93bl9ob3N0X21pbnV0ZXMYBSABKAMSFQoNZGVidWdfbWludXRlcxgGIAEoAxIYChBvdmVyZmxvd19taW51dGVzGAcgASgDEhsKE3Jlc2VydmVkX3Nsb3RfaG91cnMYCCABKAMSDwoHb3V0Y29tZRgJIAEoCRIMCgRraW5kGAogASgJEg8KB3NlY29uZHMYCyABKAESGAoQb3duX2hvc3Rfc2Vjb25kcxgMIAEoARIVCg1hd2FrZV9zZWNvbmRzGA0gASgBEhQKDGlkbGVfc2Vjb25kcxgOIAEoASLEAQoQV29ya2Zsb3dVc2FnZVJvdxISCgpyZXBvc2l0b3J5GAEgASgJEhAKCHdvcmtmbG93GAIgASgJEgwKBGpvYnMYAyABKAMSDwoHbWludXRlcxgEIAEoAxIYChBvd25faG9zdF9taW51dGVzGAUgASgDEhMKC2ZhaWxlZF9qb2JzGAYgASgDEhIKCnRpbWVkX2pvYnMYByABKAMSEwoLcDUwX3NlY29uZHMYCCABKAMSEwoLcDk1X3NlY29uZHMYCSABKAMimAMKBFBsYW4SDAoEbmFtZRgBIAEoCRITCgtjb25jdXJyZW5jeRgCIAEoBRIXCg9tYXhfam9iX21pbnV0ZXMYAyABKAUSEgoKaXNfZGVmYXVsdBgEIAEoCBISCgpzZWxmX3NlcnZlGAUgASgIEhIKCmFsbG93ZWRfb3MYBiADKAkSEAoIbWF4X3NpemUYByABKAkSEAoIbWF4X3ZjcHUYCCABKAUSHgoWZnJlZV9taW51dGVzX3Blcl9tb250aBgJIAEoBRINCgVzaXplcxgKIAMoCRIZChFjYXJkX3JlcXVpcmVkX2ZvchgLIAMoCRIZChFtYXhfam9ic19wZXJfaG91chgMIAEoBRIYChBidXJzdF9ndWFyZF9qb2JzGA0gASgFEhwKFHN0YXJ0ZXJfY3JlZGl0X2NlbnRzGA4gASgDEhQKDGhpc3RvcnlfZGF5cxgPIAEoBRIVCg1kZWJ1Z19taW51dGVzGBAgASgFEhUKDW1heF9vd25faG9zdHMYESABKAUSEwoLb3Blbl9zb3VyY2UYEiABKAgitwEKCkVncmVzc0hvc3QSDwoHaG9zdF9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEg4KBnNoYXJlZBgDIAEoCBIuCgZlZ3Jlc3MYBCABKAsyHi50b3NoaS53b3Jrc3BhY2UudjEuSG9zdEVncmVzcxISCgpyZWNlbnRfaXBzGAUgAygJEg0KBWNsb3VkGAYgASgJEhQKDGNsb3VkX2VncmVzcxgHIAEoCRIRCgljb25maXJtZWQYCCABKAgqlgIKF0hvc3RpbmdDZXJ0aWZpY2F0ZVN0YXRlEikKJUhPU1RJTkdfQ0VSVElGSUNBVEVfU1RBVEVfVU5TUEVDSUZJRUQQABIlCiFIT1NUSU5HX0NFUlRJRklDQVRFX1NUQVRFX0lTU1VJTkcQARIqCiZIT1NUSU5HX0NFUlRJRklDQVRFX1NUQVRFX1JBVEVfTElNSVRFRBACEiMKH0hPU1RJTkdfQ0VSVElGSUNBVEVfU1RBVEVfVkFMSUQQAxItCilIT1NUSU5HX0NFUlRJRklDQVRFX1NUQVRFX1JFTkVXQUxfRkFJTElORxAEEikKJUhPU1RJTkdfQ0VSVElGSUNBVEVfU1RBVEVfU0VMRl9TSUdORUQQBTL6FAoQV29ya3NwYWNlU2VydmljZRJ1CgxHZXRXb3Jrc3BhY2USJy50b3NoaS53b3Jrc3BhY2UudjEuR2V0V29ya3NwYWNlUmVxdWVzdBooLnRvc2hpLndvcmtzcGFjZS52MS5HZXRXb3Jrc3BhY2VSZXNwb25zZSISwvMYDndvcmtzcGFjZS5yZWFkEoMBCg9VcGRhdGVXb3Jrc3BhY2USKi50b3NoaS53b3Jrc3BhY2UudjEuVXBkYXRlV29ya3NwYWNlUmVxdWVzdBorLnRvc2hpLndvcmtzcGFjZS52MS5VcGRhdGVXb3Jrc3BhY2VSZXNwb25zZSIXwvMYD3dvcmtzcGFjZS53cml0ZeDzGAESewoOTGlzdFdvcmtzcGFjZXMSKS50b3NoaS53b3Jrc3BhY2UudjEuTGlzdFdvcmtzcGFjZXNSZXF1ZXN0GioudG9zaGkud29ya3NwYWNlLnYxLkxpc3RXb3Jrc3BhY2VzUmVzcG9uc2UiEsLzGA53b3Jrc3BhY2UucmVhZBKIAQoTR2V0V29ya3NwYWNlQmlsbGluZxIuLnRvc2hpLndvcmtzcGFjZS52MS5HZXRXb3Jrc3BhY2VCaWxsaW5nUmVxdWVzdBovLnRvc2hpLndvcmtzcGFjZS52MS5HZXRXb3Jrc3BhY2VCaWxsaW5nUmVzcG9uc2UiEMLzGAxiaWxsaW5nLnJlYWQSjgEKFUdldFdvcmtzcGFjZVN0YXRlbWVudBIwLnRvc2hpLndvcmtzcGFjZS52MS5HZXRXb3Jrc3BhY2VTdGF0ZW1lbnRSZXF1ZXN0GjEudG9zaGkud29ya3NwYWNlLnYxLkdldFdvcmtzcGFjZVN0YXRlbWVudFJlc3BvbnNlIhDC8xgMYmlsbGluZy5yZWFkEqABChtHZXRXb3Jrc3BhY2VVcGNvbWluZ0ludm9pY2USNi50b3NoaS53b3Jrc3BhY2UudjEuR2V0V29ya3NwYWNlVXBjb21pbmdJbnZvaWNlUmVxdWVzdBo3LnRvc2hpLndvcmtzcGFjZS52MS5HZXRXb3Jrc3BhY2VVcGNvbWluZ0ludm9pY2VSZXNwb25zZSIQwvMYDGJpbGxpbmcucmVhZBJoCglMaXN0U2VhdHMSJC50b3NoaS53b3Jrc3BhY2UudjEuTGlzdFNlYXRzUmVxdWVzdBolLnRvc2hpLndvcmtzcGFjZS52MS5MaXN0U2VhdHNSZXNwb25zZSIOwvMYCnNlYXRzLnJlYWQSlgEKCkFzc2lnblNlYXQSJS50b3NoaS53b3Jrc3BhY2UudjEuQXNzaWduU2VhdFJlcXVlc3QaJi50b3NoaS53b3Jrc3BhY2UudjEuQXNzaWduU2VhdFJlc3BvbnNlIjnC8xgLc2VhdHMud3JpdGXS8xgmCg1zZWF0LmFzc2lnbmVkEhVzZWF0OnJlc3BvbnNlLnNlYXQuaWQSfgoKUmVtb3ZlU2VhdBIlLnRvc2hpLndvcmtzcGFjZS52MS5SZW1vdmVTZWF0UmVxdWVzdBomLnRvc2hpLndvcmtzcGFjZS52MS5SZW1vdmVTZWF0UmVzcG9uc2UiIcLzGAtzZWF0cy53cml0ZdLzGA4KDHNlYXQucmVtb3ZlZBJ4Cg1MaXN0RWdyZXNzSVBzEigudG9zaGkud29ya3NwYWNlLnYxLkxpc3RFZ3Jlc3NJUHNSZXF1ZXN0GikudG9zaGkud29ya3NwYWNlLnYxLkxpc3RFZ3Jlc3NJUHNSZXNwb25zZSISwvMYDndvcmtzcGFjZS5yZWFkEmkKCEdldFVzYWdlEiMudG9zaGkud29ya3NwYWNlLnYxLkdldFVzYWdlUmVxdWVzdBokLnRvc2hpLndvcmtzcGFjZS52MS5HZXRVc2FnZVJlc3BvbnNlIhLC8xgOd29ya3NwYWNlLnJlYWQSeAoNR2V0UXVldWVUaW1lcxIoLnRvc2hpLndvcmtzcGFjZS52MS5HZXRRdWV1ZVRpbWVzUmVxdWVzdBopLnRvc2hpLndvcmtzcGFjZS52MS5HZXRRdWV1ZVRpbWVzUmVzcG9uc2UiEsLzGA53b3Jrc3BhY2UucmVhZBKBAQoQR2V0V29ya2Zsb3dVc2FnZRIrLnRvc2hpLndvcmtzcGFjZS52MS5HZXRXb3JrZmxvd1VzYWdlUmVxdWVzdBosLnRvc2hpLndvcmtzcGFjZS52MS5HZXRXb3JrZmxvd1VzYWdlUmVzcG9uc2UiEsLzGA53b3Jrc3BhY2UucmVhZBJqCglMaXN0UGxhbnMSJC50b3NoaS53b3Jrc3BhY2UudjEuTGlzdFBsYW5zUmVxdWVzdBolLnRvc2hpLndvcmtzcGFjZS52MS5MaXN0UGxhbnNSZXNwb25zZSIQwvMYDGJpbGxpbmcucmVhZBLBAQoVQ3JlYXRlQ2hlY2tvdXRTZXNzaW9uEjAudG9zaGkud29ya3NwYWNlLnYxLkNyZWF0ZUNoZWNrb3V0U2Vzc2lvblJlcXVlc3QaMS50b3NoaS53b3Jrc3BhY2UudjEuQ3JlYXRlQ2hlY2tvdXRTZXNzaW9uUmVzcG9uc2UiQ8LzGA1iaWxsaW5nLndyaXRl0vMYLgoXYmlsbGluZy5jaGVja291dF9vcGVuZWQSE3dvcmtzcGFjZTp3b3Jrc3BhY2USzgEKGkNyZWF0ZUJpbGxpbmdQb3J0YWxTZXNzaW9uEjUudG9zaGkud29ya3NwYWNlLnYxLkNyZWF0ZUJpbGxpbmdQb3J0YWxTZXNzaW9uUmVxdWVzdBo2LnRvc2hpLndvcmtzcGFjZS52MS5DcmVhdGVCaWxsaW5nUG9ydGFsU2Vzc2lvblJlc3BvbnNlIkHC8xgNYmlsbGluZy53cml0ZdLzGCwKFWJpbGxpbmcucG9ydGFsX29wZW5lZBITd29ya3NwYWNlOndvcmtzcGFjZRJvCgpHZXRWZXJzaW9uEiUudG9zaGkud29ya3NwYWNlLnYxLkdldFZlcnNpb25SZXF1ZXN0GiYudG9zaGkud29ya3NwYWNlLnYxLkdldFZlcnNpb25SZXNwb25zZSISwvMYDndvcmtzcGFjZS5yZWFkEqIBCg9EZWxldGVXb3Jrc3BhY2USKi50b3NoaS53b3Jrc3BhY2UudjEuRGVsZXRlV29ya3NwYWNlUmVxdWVzdBorLnRvc2hpLndvcmtzcGFjZS52MS5EZWxldGVXb3Jrc3BhY2VSZXNwb25zZSI2wvMYEHdvcmtzcGFjZS5kZWxldGXS8xgeChx3b3Jrc3BhY2UuZGVsZXRpb25fc2NoZWR1bGVkEq8BChdDYW5jZWxXb3Jrc3BhY2VEZWxldGlvbhIyLnRvc2hpLndvcmtzcGFjZS52MS5DYW5jZWxXb3Jrc3BhY2VEZWxldGlvblJlcXVlc3QaMy50b3NoaS53b3Jrc3BhY2UudjEuQ2FuY2VsV29ya3NwYWNlRGVsZXRpb25SZXNwb25zZSIrwvMYEHdvcmtzcGFjZS5kZWxldGXS8xgTChF3b3Jrc3BhY2UucmVzdW1lZEIiWiBnby50b3NoaWNsb3VkLmlvL2FwaS93b3Jrc3BhY2V2MWIGcHJvdG8z", [file_google_protobuf_field_mask, file_google_protobuf_timestamp, file_toshi_permission, file_toshi_workspace_v1_discovery, file_toshi_workspace_v1_hosts, file_toshi_workspace_v1_roles]);
14
14
  /**
15
15
  * Describes the message toshi.workspace.v1.GetWorkspaceRequest.
16
16
  * Use `create(GetWorkspaceRequestSchema)` to create a new message.
@@ -81,251 +81,276 @@ export const GetWorkspaceStatementRequestSchema = /*@__PURE__*/ messageDesc(file
81
81
  * Use `create(GetWorkspaceStatementResponseSchema)` to create a new message.
82
82
  */
83
83
  export const GetWorkspaceStatementResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 13);
84
+ /**
85
+ * Describes the message toshi.workspace.v1.GetWorkspaceUpcomingInvoiceRequest.
86
+ * Use `create(GetWorkspaceUpcomingInvoiceRequestSchema)` to create a new message.
87
+ */
88
+ export const GetWorkspaceUpcomingInvoiceRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 14);
89
+ /**
90
+ * Describes the message toshi.workspace.v1.GetWorkspaceUpcomingInvoiceResponse.
91
+ * Use `create(GetWorkspaceUpcomingInvoiceResponseSchema)` to create a new message.
92
+ */
93
+ export const GetWorkspaceUpcomingInvoiceResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 15);
94
+ /**
95
+ * Describes the message toshi.workspace.v1.UpcomingInvoice.
96
+ * Use `create(UpcomingInvoiceSchema)` to create a new message.
97
+ */
98
+ export const UpcomingInvoiceSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 16);
99
+ /**
100
+ * Describes the message toshi.workspace.v1.ProjectCost.
101
+ * Use `create(ProjectCostSchema)` to create a new message.
102
+ */
103
+ export const ProjectCostSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 17);
84
104
  /**
85
105
  * Describes the message toshi.workspace.v1.Seat.
86
106
  * Use `create(SeatSchema)` to create a new message.
87
107
  */
88
- export const SeatSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 14);
108
+ export const SeatSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 18);
89
109
  /**
90
110
  * Describes the message toshi.workspace.v1.ListSeatsRequest.
91
111
  * Use `create(ListSeatsRequestSchema)` to create a new message.
92
112
  */
93
- export const ListSeatsRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 15);
113
+ export const ListSeatsRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 19);
94
114
  /**
95
115
  * Describes the message toshi.workspace.v1.ListSeatsResponse.
96
116
  * Use `create(ListSeatsResponseSchema)` to create a new message.
97
117
  */
98
- export const ListSeatsResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 16);
118
+ export const ListSeatsResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 20);
99
119
  /**
100
120
  * Describes the message toshi.workspace.v1.AssignSeatRequest.
101
121
  * Use `create(AssignSeatRequestSchema)` to create a new message.
102
122
  */
103
- export const AssignSeatRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 17);
123
+ export const AssignSeatRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 21);
104
124
  /**
105
125
  * Describes the message toshi.workspace.v1.AssignSeatResponse.
106
126
  * Use `create(AssignSeatResponseSchema)` to create a new message.
107
127
  */
108
- export const AssignSeatResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 18);
128
+ export const AssignSeatResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 22);
109
129
  /**
110
130
  * Describes the message toshi.workspace.v1.RemoveSeatRequest.
111
131
  * Use `create(RemoveSeatRequestSchema)` to create a new message.
112
132
  */
113
- export const RemoveSeatRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 19);
133
+ export const RemoveSeatRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 23);
114
134
  /**
115
135
  * Describes the message toshi.workspace.v1.RemoveSeatResponse.
116
136
  * Use `create(RemoveSeatResponseSchema)` to create a new message.
117
137
  */
118
- export const RemoveSeatResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 20);
138
+ export const RemoveSeatResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 24);
119
139
  /**
120
140
  * Describes the message toshi.workspace.v1.ListEgressIPsRequest.
121
141
  * Use `create(ListEgressIPsRequestSchema)` to create a new message.
122
142
  */
123
- export const ListEgressIPsRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 21);
143
+ export const ListEgressIPsRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 25);
124
144
  /**
125
145
  * Describes the message toshi.workspace.v1.ListEgressIPsResponse.
126
146
  * Use `create(ListEgressIPsResponseSchema)` to create a new message.
127
147
  */
128
- export const ListEgressIPsResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 22);
148
+ export const ListEgressIPsResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 26);
129
149
  /**
130
150
  * Describes the message toshi.workspace.v1.GetUsageRequest.
131
151
  * Use `create(GetUsageRequestSchema)` to create a new message.
132
152
  */
133
- export const GetUsageRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 23);
153
+ export const GetUsageRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 27);
134
154
  /**
135
155
  * Describes the message toshi.workspace.v1.GetUsageResponse.
136
156
  * Use `create(GetUsageResponseSchema)` to create a new message.
137
157
  */
138
- export const GetUsageResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 24);
158
+ export const GetUsageResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 28);
139
159
  /**
140
160
  * Describes the message toshi.workspace.v1.GetQueueTimesRequest.
141
161
  * Use `create(GetQueueTimesRequestSchema)` to create a new message.
142
162
  */
143
- export const GetQueueTimesRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 25);
163
+ export const GetQueueTimesRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 29);
144
164
  /**
145
165
  * Describes the message toshi.workspace.v1.GetQueueTimesResponse.
146
166
  * Use `create(GetQueueTimesResponseSchema)` to create a new message.
147
167
  */
148
- export const GetQueueTimesResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 26);
168
+ export const GetQueueTimesResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 30);
149
169
  /**
150
170
  * Describes the message toshi.workspace.v1.GetWorkflowUsageRequest.
151
171
  * Use `create(GetWorkflowUsageRequestSchema)` to create a new message.
152
172
  */
153
- export const GetWorkflowUsageRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 27);
173
+ export const GetWorkflowUsageRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 31);
154
174
  /**
155
175
  * Describes the message toshi.workspace.v1.GetWorkflowUsageResponse.
156
176
  * Use `create(GetWorkflowUsageResponseSchema)` to create a new message.
157
177
  */
158
- export const GetWorkflowUsageResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 28);
178
+ export const GetWorkflowUsageResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 32);
159
179
  /**
160
180
  * Describes the message toshi.workspace.v1.ListPlansRequest.
161
181
  * Use `create(ListPlansRequestSchema)` to create a new message.
162
182
  */
163
- export const ListPlansRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 29);
183
+ export const ListPlansRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 33);
164
184
  /**
165
185
  * Describes the message toshi.workspace.v1.ListPlansResponse.
166
186
  * Use `create(ListPlansResponseSchema)` to create a new message.
167
187
  */
168
- export const ListPlansResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 30);
188
+ export const ListPlansResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 34);
169
189
  /**
170
190
  * Describes the message toshi.workspace.v1.CreateCheckoutSessionRequest.
171
191
  * Use `create(CreateCheckoutSessionRequestSchema)` to create a new message.
172
192
  */
173
- export const CreateCheckoutSessionRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 31);
193
+ export const CreateCheckoutSessionRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 35);
174
194
  /**
175
195
  * Describes the message toshi.workspace.v1.CreateCheckoutSessionResponse.
176
196
  * Use `create(CreateCheckoutSessionResponseSchema)` to create a new message.
177
197
  */
178
- export const CreateCheckoutSessionResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 32);
198
+ export const CreateCheckoutSessionResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 36);
179
199
  /**
180
200
  * Describes the message toshi.workspace.v1.CreateBillingPortalSessionRequest.
181
201
  * Use `create(CreateBillingPortalSessionRequestSchema)` to create a new message.
182
202
  */
183
- export const CreateBillingPortalSessionRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 33);
203
+ export const CreateBillingPortalSessionRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 37);
184
204
  /**
185
205
  * Describes the message toshi.workspace.v1.CreateBillingPortalSessionResponse.
186
206
  * Use `create(CreateBillingPortalSessionResponseSchema)` to create a new message.
187
207
  */
188
- export const CreateBillingPortalSessionResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 34);
208
+ export const CreateBillingPortalSessionResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 38);
189
209
  /**
190
210
  * Describes the message toshi.workspace.v1.GetVersionRequest.
191
211
  * Use `create(GetVersionRequestSchema)` to create a new message.
192
212
  */
193
- export const GetVersionRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 35);
213
+ export const GetVersionRequestSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 39);
194
214
  /**
195
215
  * Describes the message toshi.workspace.v1.GetVersionResponse.
196
216
  * Use `create(GetVersionResponseSchema)` to create a new message.
197
217
  */
198
- export const GetVersionResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 36);
218
+ export const GetVersionResponseSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 40);
199
219
  /**
200
220
  * Describes the message toshi.workspace.v1.Workspace.
201
221
  * Use `create(WorkspaceSchema)` to create a new message.
202
222
  */
203
- export const WorkspaceSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 37);
223
+ export const WorkspaceSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 41);
204
224
  /**
205
225
  * Describes the message toshi.workspace.v1.HostingCertificate.
206
226
  * Use `create(HostingCertificateSchema)` to create a new message.
207
227
  */
208
- export const HostingCertificateSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 38);
228
+ export const HostingCertificateSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 42);
209
229
  /**
210
230
  * Describes the message toshi.workspace.v1.WorkspaceSettings.
211
231
  * Use `create(WorkspaceSettingsSchema)` to create a new message.
212
232
  */
213
- export const WorkspaceSettingsSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 39);
233
+ export const WorkspaceSettingsSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 43);
214
234
  /**
215
235
  * Describes the message toshi.workspace.v1.WorkspaceSettingChange.
216
236
  * Use `create(WorkspaceSettingChangeSchema)` to create a new message.
217
237
  */
218
- export const WorkspaceSettingChangeSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 40);
238
+ export const WorkspaceSettingChangeSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 44);
219
239
  /**
220
240
  * Describes the message toshi.workspace.v1.WorkspaceSignIn.
221
241
  * Use `create(WorkspaceSignInSchema)` to create a new message.
222
242
  */
223
- export const WorkspaceSignInSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 41);
243
+ export const WorkspaceSignInSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 45);
224
244
  /**
225
245
  * Describes the message toshi.workspace.v1.Reservation.
226
246
  * Use `create(ReservationSchema)` to create a new message.
227
247
  */
228
- export const ReservationSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 42);
248
+ export const ReservationSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 46);
229
249
  /**
230
250
  * Describes the message toshi.workspace.v1.WorkspaceBilling.
231
251
  * Use `create(WorkspaceBillingSchema)` to create a new message.
232
252
  */
233
- export const WorkspaceBillingSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 43);
253
+ export const WorkspaceBillingSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 47);
234
254
  /**
235
255
  * Describes the message toshi.workspace.v1.WorkspaceBilling.HeldJobs.
236
256
  * Use `create(WorkspaceBilling_HeldJobsSchema)` to create a new message.
237
257
  */
238
- export const WorkspaceBilling_HeldJobsSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 43, 0);
258
+ export const WorkspaceBilling_HeldJobsSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 47, 0);
239
259
  /**
240
260
  * Describes the message toshi.workspace.v1.BillingTotals.
241
261
  * Use `create(BillingTotalsSchema)` to create a new message.
242
262
  */
243
- export const BillingTotalsSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 44);
263
+ export const BillingTotalsSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 48);
244
264
  /**
245
265
  * Describes the message toshi.workspace.v1.BillingEventFailure.
246
266
  * Use `create(BillingEventFailureSchema)` to create a new message.
247
267
  */
248
- export const BillingEventFailureSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 45);
268
+ export const BillingEventFailureSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 49);
249
269
  /**
250
270
  * Describes the message toshi.workspace.v1.WorkspaceStatement.
251
271
  * Use `create(WorkspaceStatementSchema)` to create a new message.
252
272
  */
253
- export const WorkspaceStatementSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 46);
273
+ export const WorkspaceStatementSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 50);
254
274
  /**
255
275
  * Describes the message toshi.workspace.v1.DesktopSeats.
256
276
  * Use `create(DesktopSeatsSchema)` to create a new message.
257
277
  */
258
- export const DesktopSeatsSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 47);
278
+ export const DesktopSeatsSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 51);
279
+ /**
280
+ * Describes the message toshi.workspace.v1.PaidStarts.
281
+ * Use `create(PaidStartsSchema)` to create a new message.
282
+ */
283
+ export const PaidStartsSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 52);
259
284
  /**
260
285
  * Describes the message toshi.workspace.v1.StatementSeat.
261
286
  * Use `create(StatementSeatSchema)` to create a new message.
262
287
  */
263
- export const StatementSeatSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 48);
288
+ export const StatementSeatSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 53);
264
289
  /**
265
290
  * Describes the message toshi.workspace.v1.OwnHostFee.
266
291
  * Use `create(OwnHostFeeSchema)` to create a new message.
267
292
  */
268
- export const OwnHostFeeSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 49);
293
+ export const OwnHostFeeSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 54);
269
294
  /**
270
295
  * Describes the message toshi.workspace.v1.Awake.
271
296
  * Use `create(AwakeSchema)` to create a new message.
272
297
  */
273
- export const AwakeSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 50);
298
+ export const AwakeSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 55);
274
299
  /**
275
300
  * Describes the message toshi.workspace.v1.Storage.
276
301
  * Use `create(StorageSchema)` to create a new message.
277
302
  */
278
- export const StorageSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 51);
303
+ export const StorageSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 56);
279
304
  /**
280
305
  * Describes the message toshi.workspace.v1.StoredKind.
281
306
  * Use `create(StoredKindSchema)` to create a new message.
282
307
  */
283
- export const StoredKindSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 52);
308
+ export const StoredKindSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 57);
284
309
  /**
285
310
  * Describes the message toshi.workspace.v1.StorageUsageRow.
286
311
  * Use `create(StorageUsageRowSchema)` to create a new message.
287
312
  */
288
- export const StorageUsageRowSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 53);
313
+ export const StorageUsageRowSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 58);
289
314
  /**
290
315
  * Describes the message toshi.workspace.v1.StatementUsage.
291
316
  * Use `create(StatementUsageSchema)` to create a new message.
292
317
  */
293
- export const StatementUsageSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 54);
318
+ export const StatementUsageSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 59);
294
319
  /**
295
320
  * Describes the message toshi.workspace.v1.StatementCharge.
296
321
  * Use `create(StatementChargeSchema)` to create a new message.
297
322
  */
298
- export const StatementChargeSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 55);
323
+ export const StatementChargeSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 60);
299
324
  /**
300
325
  * Describes the message toshi.workspace.v1.HoldTimes.
301
326
  * Use `create(HoldTimesSchema)` to create a new message.
302
327
  */
303
- export const HoldTimesSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 56);
328
+ export const HoldTimesSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 61);
304
329
  /**
305
330
  * Describes the message toshi.workspace.v1.FillerUsage.
306
331
  * Use `create(FillerUsageSchema)` to create a new message.
307
332
  */
308
- export const FillerUsageSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 57);
333
+ export const FillerUsageSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 62);
309
334
  /**
310
335
  * Describes the message toshi.workspace.v1.UsageRow.
311
336
  * Use `create(UsageRowSchema)` to create a new message.
312
337
  */
313
- export const UsageRowSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 58);
338
+ export const UsageRowSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 63);
314
339
  /**
315
340
  * Describes the message toshi.workspace.v1.WorkflowUsageRow.
316
341
  * Use `create(WorkflowUsageRowSchema)` to create a new message.
317
342
  */
318
- export const WorkflowUsageRowSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 59);
343
+ export const WorkflowUsageRowSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 64);
319
344
  /**
320
345
  * Describes the message toshi.workspace.v1.Plan.
321
346
  * Use `create(PlanSchema)` to create a new message.
322
347
  */
323
- export const PlanSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 60);
348
+ export const PlanSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 65);
324
349
  /**
325
350
  * Describes the message toshi.workspace.v1.EgressHost.
326
351
  * Use `create(EgressHostSchema)` to create a new message.
327
352
  */
328
- export const EgressHostSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 61);
353
+ export const EgressHostSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_workspace_service, 66);
329
354
  /**
330
355
  * @generated from enum toshi.workspace.v1.HostingCertificateState
331
356
  */
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@ export * from "./gen/toshi/workspace/v1/display_pb.js";
4
4
  export * from "./gen/toshi/workspace/v1/projects_pb.js";
5
5
  export * from "./gen/toshi/workspace/v1/secrets_pb.js";
6
6
  export * from "./gen/toshi/workspace/v1/webhook_pb.js";
7
- export * from "./gen/toshi/workspace/v1/channels_pb.js";
7
+ export * from "./gen/toshi/workspace/v1/endpoints_pb.js";
8
8
  export * from "./gen/toshi/workspace/v1/recordings_pb.js";
9
9
  export * from "./gen/toshi/workspace/v1/volumes_pb.js";
10
10
  export * from "./gen/toshi/workspace/v1/artifacts_pb.js";
@@ -23,6 +23,7 @@ export * from "./gen/toshi/workspace/v1/account_pb.js";
23
23
  export * from "./gen/toshi/workspace/v1/images_pb.js";
24
24
  export * from "./gen/toshi/workspace/v1/triggers_pb.js";
25
25
  export * from "./gen/toshi/workspace/v1/domains_pb.js";
26
+ export * from "./gen/toshi/workspace/v1/model_credentials_pb.js";
26
27
  export * from "./gen/toshi/workspace/v1/workspace_service_pb.js";
27
28
  export { createToshiClient } from "./client.js";
28
29
  export { paginate } from "./paginate.js";
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ export * from "./gen/toshi/workspace/v1/display_pb.js";
5
5
  export * from "./gen/toshi/workspace/v1/projects_pb.js";
6
6
  export * from "./gen/toshi/workspace/v1/secrets_pb.js";
7
7
  export * from "./gen/toshi/workspace/v1/webhook_pb.js";
8
- export * from "./gen/toshi/workspace/v1/channels_pb.js";
8
+ export * from "./gen/toshi/workspace/v1/endpoints_pb.js";
9
9
  export * from "./gen/toshi/workspace/v1/recordings_pb.js";
10
10
  export * from "./gen/toshi/workspace/v1/volumes_pb.js";
11
11
  export * from "./gen/toshi/workspace/v1/artifacts_pb.js";
@@ -24,6 +24,7 @@ export * from "./gen/toshi/workspace/v1/account_pb.js";
24
24
  export * from "./gen/toshi/workspace/v1/images_pb.js";
25
25
  export * from "./gen/toshi/workspace/v1/triggers_pb.js";
26
26
  export * from "./gen/toshi/workspace/v1/domains_pb.js";
27
+ export * from "./gen/toshi/workspace/v1/model_credentials_pb.js";
27
28
  export * from "./gen/toshi/workspace/v1/workspace_service_pb.js";
28
29
  export { createToshiClient } from "./client.js";
29
30
  export { paginate } from "./paginate.js";
package/dist/retry.js CHANGED
@@ -24,6 +24,8 @@ const procedureRetryClass = {
24
24
  "/toshi.workspace.v1.WorkloadService/CreateJob": "keyed",
25
25
  "/toshi.workspace.v1.WorkloadService/GetJob": "read",
26
26
  "/toshi.workspace.v1.WorkloadService/ListJobs": "read",
27
+ "/toshi.workspace.v1.WorkloadService/GetWorkloadUsage": "read",
28
+ "/toshi.workspace.v1.WorkloadService/ListWorkloadUsages": "read",
27
29
  "/toshi.workspace.v1.WorkloadService/UpdateJob": "keyed",
28
30
  "/toshi.workspace.v1.WorkloadService/DeleteJob": "keyed",
29
31
  "/toshi.workspace.v1.WorkloadService/CancelJob": "none",
@@ -67,6 +69,10 @@ const procedureRetryClass = {
67
69
  "/toshi.workspace.v1.WorkloadService/StopService": "keyed",
68
70
  "/toshi.workspace.v1.WorkloadService/SetServiceMode": "keyed",
69
71
  "/toshi.workspace.v1.WorkloadService/WakeService": "keyed",
72
+ // Operator-only, and neither takes a request key: a lost answer is reported
73
+ // rather than repeated.
74
+ "/toshi.workspace.v1.WorkloadService/HoldWorkload": "none",
75
+ "/toshi.workspace.v1.WorkloadService/ReleaseWorkload": "none",
70
76
  "/toshi.workspace.v1.WorkloadService/HoldService": "keyed",
71
77
  "/toshi.workspace.v1.WorkloadService/ReleaseService": "keyed",
72
78
  "/toshi.workspace.v1.WorkloadService/ListServiceRevisions": "read",
@@ -118,12 +124,12 @@ const procedureRetryClass = {
118
124
  "/toshi.workspace.v1.ProjectService/SetEnvironmentRetention": "none",
119
125
  "/toshi.workspace.v1.ProjectService/SetEnvironmentVolumes": "none",
120
126
  "/toshi.workspace.v1.ProjectService/UpdateEnvironment": "none",
121
- "/toshi.workspace.v1.WebhookService/CreateWebhookEndpoint": "keyed",
122
- "/toshi.workspace.v1.WebhookService/GetWebhookEndpoint": "read",
123
- "/toshi.workspace.v1.WebhookService/ListWebhookEndpoints": "read",
124
- "/toshi.workspace.v1.WebhookService/UpdateWebhookEndpoint": "keyed",
125
- "/toshi.workspace.v1.WebhookService/DeleteWebhookEndpoint": "keyed",
126
- "/toshi.workspace.v1.WebhookService/RotateWebhookEndpointSecret": "keyed",
127
+ "/toshi.workspace.v1.WebhookService/CreateWebhook": "keyed",
128
+ "/toshi.workspace.v1.WebhookService/GetWebhook": "read",
129
+ "/toshi.workspace.v1.WebhookService/ListWebhooks": "read",
130
+ "/toshi.workspace.v1.WebhookService/UpdateWebhook": "keyed",
131
+ "/toshi.workspace.v1.WebhookService/DeleteWebhook": "keyed",
132
+ "/toshi.workspace.v1.WebhookService/RotateWebhookSecret": "keyed",
127
133
  "/toshi.workspace.v1.WebhookService/ListWebhookDeliveries": "read",
128
134
  "/toshi.workspace.v1.WebhookService/ReplayWebhookEvents": "keyed",
129
135
  // A retry returns the session the first call opened, with replayed set and
@@ -137,22 +143,22 @@ const procedureRetryClass = {
137
143
  "/toshi.workspace.v1.DisplayService/SendDisplayPointer": "none",
138
144
  "/toshi.workspace.v1.DisplayService/SetDisplayClipboard": "none",
139
145
  "/toshi.workspace.v1.DisplayService/TakeDisplayScreenshot": "none",
140
- "/toshi.workspace.v1.ChannelService/CreateChannel": "keyed",
141
- "/toshi.workspace.v1.ChannelService/ListChannels": "read",
142
- "/toshi.workspace.v1.ChannelService/GetChannel": "read",
143
- "/toshi.workspace.v1.ChannelService/GetChannelPolicy": "read",
144
- "/toshi.workspace.v1.ChannelService/SetChannelPolicy": "none",
145
- "/toshi.workspace.v1.ChannelService/ListChannelRequests": "read",
146
- "/toshi.workspace.v1.ChannelService/GetChannelRequest": "read",
147
- "/toshi.workspace.v1.ChannelService/ExportChannelLog": "none",
148
- "/toshi.workspace.v1.ChannelService/CreateChannelConnectToken": "none",
149
- "/toshi.workspace.v1.ChannelService/RevokeChannelConnectToken": "none",
150
- "/toshi.workspace.v1.ChannelService/DeleteChannel": "none",
151
- "/toshi.workspace.v1.ChannelService/ListForwards": "read",
152
- "/toshi.workspace.v1.ChannelService/GetLink": "read",
153
- "/toshi.workspace.v1.ChannelService/ReplayChannelMessage": "none",
154
- "/toshi.workspace.v1.ChannelService/SendChannelMessage": "keyed",
155
- "/toshi.workspace.v1.ChannelService/TailChannelMessages": "none",
146
+ "/toshi.workspace.v1.EndpointService/CreateEndpoint": "keyed",
147
+ "/toshi.workspace.v1.EndpointService/ListEndpoints": "read",
148
+ "/toshi.workspace.v1.EndpointService/GetEndpoint": "read",
149
+ "/toshi.workspace.v1.EndpointService/GetEndpointPolicy": "read",
150
+ "/toshi.workspace.v1.EndpointService/SetEndpointPolicy": "none",
151
+ "/toshi.workspace.v1.EndpointService/ListEndpointRequests": "read",
152
+ "/toshi.workspace.v1.EndpointService/GetEndpointRequest": "read",
153
+ "/toshi.workspace.v1.EndpointService/ExportEndpointLog": "none",
154
+ "/toshi.workspace.v1.EndpointService/CreateEndpointConnectToken": "none",
155
+ "/toshi.workspace.v1.EndpointService/RevokeEndpointConnectToken": "none",
156
+ "/toshi.workspace.v1.EndpointService/DeleteEndpoint": "none",
157
+ "/toshi.workspace.v1.EndpointService/ListForwards": "read",
158
+ "/toshi.workspace.v1.EndpointService/GetTunnel": "read",
159
+ "/toshi.workspace.v1.EndpointService/ReplayEndpointMessage": "none",
160
+ "/toshi.workspace.v1.EndpointService/SendEndpointMessage": "keyed",
161
+ "/toshi.workspace.v1.EndpointService/TailEndpointMessages": "none",
156
162
  "/toshi.workspace.v1.RecordingService/ListRecordings": "read",
157
163
  "/toshi.workspace.v1.RecordingService/GetRecording": "read",
158
164
  "/toshi.workspace.v1.RecordingService/CreateRecordingShareLink": "none",
@@ -177,6 +183,7 @@ const procedureRetryClass = {
177
183
  "/toshi.workspace.v1.WorkspaceService/ListWorkspaces": "read",
178
184
  "/toshi.workspace.v1.WorkspaceService/GetWorkspaceBilling": "read",
179
185
  "/toshi.workspace.v1.WorkspaceService/GetWorkspaceStatement": "read",
186
+ "/toshi.workspace.v1.WorkspaceService/GetWorkspaceUpcomingInvoice": "read",
180
187
  "/toshi.workspace.v1.WorkspaceService/ListEgressIPs": "read",
181
188
  "/toshi.workspace.v1.WorkspaceService/GetUsage": "read",
182
189
  "/toshi.workspace.v1.WorkspaceService/GetQueueTimes": "read",
@@ -278,6 +285,15 @@ const procedureRetryClass = {
278
285
  "/toshi.workspace.v1.DomainService/VerifyDomain": "keyed",
279
286
  "/toshi.workspace.v1.DomainService/IssueDomain": "keyed",
280
287
  "/toshi.workspace.v1.DomainService/DeleteDomain": "none",
288
+ // CreateModelCredential takes no request_key, and a repeat answers
289
+ // ALREADY_EXISTS ("a key that already serves a credential fails with
290
+ // ALREADY_EXISTS, and so does a second credential of the same name and
291
+ // owner"), so a retry would report failure for a call that worked.
292
+ "/toshi.workspace.v1.ModelCredentialService/CreateModelCredential": "none",
293
+ "/toshi.workspace.v1.ModelCredentialService/GetModelCredential": "read",
294
+ "/toshi.workspace.v1.ModelCredentialService/ListModelCredentials": "read",
295
+ "/toshi.workspace.v1.ModelCredentialService/UpdateModelCredential": "none",
296
+ "/toshi.workspace.v1.ModelCredentialService/DeleteModelCredential": "none",
281
297
  };
282
298
  /** The retry class of a generated procedure path; an unknown path is "none". */
283
299
  export function retryClassFor(procedure) {
@@ -0,0 +1,29 @@
1
+ import type { DeleteServiceAlarmRequest, DeleteServiceAlarmResponse, GetServiceAlarmRequest, GetServiceAlarmResponse, ListServiceAlarmsRequest, ListServiceAlarmsResponse, PauseServiceAlarmRequest, PauseServiceAlarmResponse, ResumeServiceAlarmRequest, ResumeServiceAlarmResponse, RunServiceAlarmNowRequest, RunServiceAlarmNowResponse, SetServiceAlarmRequest, SetServiceAlarmResponse } from "../gen/toshi/workspace/v1/workloads_pb.js";
2
+ /**
3
+ * The alarms the fake keeps for any service ID: the fake holds no services. It
4
+ * has no clock, so an alarm publishes nothing on its own and a cron alarm has
5
+ * no next instant.
6
+ */
7
+ export declare class AlarmStore {
8
+ private readonly alarms;
9
+ private readonly runs;
10
+ /** Creates the alarm at generation 1, or replaces it at the next generation, resumed. */
11
+ set(request: SetServiceAlarmRequest): SetServiceAlarmResponse;
12
+ /** Returns the alarm and its most recent occurrences, newest first. */
13
+ get(request: GetServiceAlarmRequest): GetServiceAlarmResponse;
14
+ /** Returns every alarm of the service, by name. */
15
+ list(request: ListServiceAlarmsRequest): ListServiceAlarmsResponse;
16
+ /** Removes an alarm and its occurrences. */
17
+ delete(request: DeleteServiceAlarmRequest): DeleteServiceAlarmResponse;
18
+ /** Pauses an alarm; pausing a paused alarm changes nothing. */
19
+ pause(request: PauseServiceAlarmRequest): PauseServiceAlarmResponse;
20
+ /** Resumes an alarm; resuming a running alarm changes nothing. */
21
+ resume(request: ResumeServiceAlarmRequest): ResumeServiceAlarmResponse;
22
+ /**
23
+ * Records a manual occurrence at the alarm's generation. A request key the
24
+ * fake has already answered returns the same occurrence.
25
+ */
26
+ runNow(request: RunServiceAlarmNowRequest): RunServiceAlarmNowResponse;
27
+ /** Returns the alarm of a service with this name. */
28
+ private alarm;
29
+ }