@dcl/protocol 1.0.0-3160772301.commit-334e7a1 → 1.0.0-3199325469.commit-c9bc23f

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 (83) hide show
  1. package/README.md +19 -0
  2. package/bff/authentication-service.proto +3 -0
  3. package/bff/comms-director-service.proto +33 -0
  4. package/bff/comms-service.proto +2 -26
  5. package/bff/http-endpoints.proto +9 -10
  6. package/bff/topics-service.proto +35 -0
  7. package/bff-services.proto +16 -0
  8. package/{kernel/apis/common → common}/ContentMapping.proto +1 -0
  9. package/common/Entity.proto +13 -0
  10. package/common/Vectors.proto +19 -0
  11. package/ecs/components/Animator.proto +1 -1
  12. package/ecs/components/AudioSource.proto +1 -1
  13. package/ecs/components/AudioStream.proto +1 -1
  14. package/ecs/components/AvatarAttach.proto +1 -1
  15. package/ecs/components/AvatarModifierArea.proto +2 -2
  16. package/ecs/components/AvatarShape.proto +2 -2
  17. package/ecs/components/Billboard.proto +1 -1
  18. package/ecs/components/BoxShape.proto +1 -1
  19. package/ecs/components/CameraMode.proto +2 -2
  20. package/ecs/components/CameraModeArea.proto +3 -3
  21. package/ecs/components/CylinderShape.proto +1 -1
  22. package/ecs/components/GltfContainer.proto +1 -1
  23. package/ecs/components/Material.proto +2 -2
  24. package/ecs/components/MeshCollider.proto +1 -1
  25. package/ecs/components/MeshRenderer.proto +1 -1
  26. package/ecs/components/NFTShape.proto +2 -2
  27. package/ecs/components/OnPointerDown.proto +2 -2
  28. package/ecs/components/OnPointerDownResult.proto +3 -3
  29. package/ecs/components/OnPointerUp.proto +2 -2
  30. package/ecs/components/OnPointerUpResult.proto +3 -3
  31. package/ecs/components/PlaneShape.proto +1 -1
  32. package/ecs/components/PointerEvents.proto +2 -2
  33. package/ecs/components/PointerEventsResult.proto +4 -4
  34. package/ecs/components/PointerLock.proto +1 -1
  35. package/ecs/components/README.md +1 -1
  36. package/ecs/components/Raycast.proto +2 -2
  37. package/ecs/components/RaycastResult.proto +2 -2
  38. package/ecs/components/SphereShape.proto +1 -1
  39. package/ecs/components/TextShape.proto +2 -2
  40. package/ecs/components/UiStyles.proto +2 -2
  41. package/ecs/components/UiText.proto +2 -2
  42. package/ecs/components/UiTransform.proto +1 -1
  43. package/ecs/components/VisibilityComponent.proto +1 -1
  44. package/ecs/components/common/ActionButton.proto +1 -1
  45. package/kernel/apis/EnvironmentAPI.proto +1 -1
  46. package/kernel/apis/ParcelIdentity.proto +1 -1
  47. package/kernel/apis/Players.proto +1 -1
  48. package/kernel/apis/UserIdentity.proto +1 -1
  49. package/kernel/apis/{common → common-sdk}/UserData.proto +0 -0
  50. package/kernel/comms/comms-rfc-4.proto +2 -0
  51. package/kernel/comms/v3/archipelago.proto +0 -4
  52. package/out-ts/bff/authentication-service.gen.ts +278 -0
  53. package/out-ts/bff/comms-director-service.gen.ts +225 -0
  54. package/out-ts/bff/comms-service.gen.ts +193 -0
  55. package/out-ts/bff/http-endpoints.gen.ts +662 -0
  56. package/out-ts/bff/topics-service.gen.ts +404 -0
  57. package/out-ts/bff-services.gen.ts +3 -0
  58. package/out-ts/common/ContentMapping.gen.ts +79 -0
  59. package/out-ts/common/Vectors.gen.ts +225 -0
  60. package/out-ts/google/api/annotations.gen.ts +3 -0
  61. package/out-ts/google/api/http.gen.ts +286 -0
  62. package/out-ts/google/protobuf/descriptor.gen.ts +2860 -0
  63. package/out-ts/google/protobuf/empty.gen.ts +66 -0
  64. package/out-ts/kernel/apis/CommunicationsController.gen.ts +128 -0
  65. package/out-ts/kernel/apis/DevTools.gen.ts +140 -0
  66. package/out-ts/kernel/apis/EngineAPI.gen.ts +2128 -0
  67. package/out-ts/kernel/apis/EnvironmentAPI.gen.ts +1050 -0
  68. package/out-ts/kernel/apis/EthereumController.gen.ts +806 -0
  69. package/out-ts/kernel/apis/ExperimentalAPI.gen.ts +278 -0
  70. package/out-ts/kernel/apis/ParcelIdentity.gen.ts +516 -0
  71. package/out-ts/kernel/apis/Permissions.gen.ts +332 -0
  72. package/out-ts/kernel/apis/Players.gen.ts +344 -0
  73. package/out-ts/kernel/apis/PortableExperiences.gen.ts +520 -0
  74. package/out-ts/kernel/apis/RestrictedActions.gen.ts +320 -0
  75. package/out-ts/kernel/apis/SceneStateStorageController.gen.ts +1331 -0
  76. package/out-ts/kernel/apis/SignedFetch.gen.ts +428 -0
  77. package/out-ts/kernel/apis/SocialController.gen.ts +195 -0
  78. package/out-ts/kernel/apis/UserActionModule.gen.ts +128 -0
  79. package/out-ts/kernel/apis/UserIdentity.gen.ts +230 -0
  80. package/out-ts/kernel/apis/common-sdk/UserData.gen.ts +298 -0
  81. package/out-ts/sdk-apis.gen.ts +3 -0
  82. package/package.json +16 -5
  83. package/sdk-apis.proto +22 -0
@@ -1,6 +1,6 @@
1
1
  syntax = "proto3";
2
2
 
3
- import "common/UserData.proto";
3
+ import "kernel/apis/common-sdk/UserData.proto";
4
4
 
5
5
  message Player {
6
6
  string user_id = 1;
@@ -1,6 +1,6 @@
1
1
  syntax = "proto3";
2
2
 
3
- import "common/UserData.proto";
3
+ import "kernel/apis/common-sdk/UserData.proto";
4
4
 
5
5
  message GetUserDataRequest {}
6
6
 
@@ -45,6 +45,7 @@ message ProfileRequest {
45
45
 
46
46
  message ProfileResponse {
47
47
  string serialized_profile = 1;
48
+ string base_url = 2;
48
49
 
49
50
  // Extension: when Lambdas serializes profiles for the RPC, we could extend
50
51
  // this format to prevent transmitting the serialized JSON and leverage protobuf
@@ -54,6 +55,7 @@ message ProfileResponse {
54
55
 
55
56
  message Chat {
56
57
  string message = 1;
58
+ double timestamp = 2;
57
59
  }
58
60
 
59
61
  message Scene {
@@ -13,10 +13,6 @@ message Position3DMessage {
13
13
  double z = 3;
14
14
  }
15
15
 
16
- message HeartbeatMessage {
17
- Position3DMessage position = 1;
18
- }
19
-
20
16
  message IslandChangedMessage {
21
17
  string island_id = 1;
22
18
  string conn_str = 2;
@@ -0,0 +1,278 @@
1
+ /* eslint-disable */
2
+ import _m0 from "protobufjs/minimal";
3
+
4
+ export const protobufPackage = "decentraland.bff";
5
+
6
+ export interface GetChallengeRequest {
7
+ address: string;
8
+ }
9
+
10
+ export interface GetChallengeResponse {
11
+ challengeToSign: string;
12
+ alreadyConnected: boolean;
13
+ }
14
+
15
+ export interface SignedChallenge {
16
+ authChainJson: string;
17
+ }
18
+
19
+ export interface WelcomePeerInformation {
20
+ peerId: string;
21
+ /** list of available modules in this BFF */
22
+ availableModules: string[];
23
+ }
24
+
25
+ function createBaseGetChallengeRequest(): GetChallengeRequest {
26
+ return { address: "" };
27
+ }
28
+
29
+ export const GetChallengeRequest = {
30
+ encode(message: GetChallengeRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
31
+ if (message.address !== "") {
32
+ writer.uint32(10).string(message.address);
33
+ }
34
+ return writer;
35
+ },
36
+
37
+ decode(input: _m0.Reader | Uint8Array, length?: number): GetChallengeRequest {
38
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
39
+ let end = length === undefined ? reader.len : reader.pos + length;
40
+ const message = createBaseGetChallengeRequest();
41
+ while (reader.pos < end) {
42
+ const tag = reader.uint32();
43
+ switch (tag >>> 3) {
44
+ case 1:
45
+ message.address = reader.string();
46
+ break;
47
+ default:
48
+ reader.skipType(tag & 7);
49
+ break;
50
+ }
51
+ }
52
+ return message;
53
+ },
54
+
55
+ fromJSON(object: any): GetChallengeRequest {
56
+ return { address: isSet(object.address) ? String(object.address) : "" };
57
+ },
58
+
59
+ toJSON(message: GetChallengeRequest): unknown {
60
+ const obj: any = {};
61
+ message.address !== undefined && (obj.address = message.address);
62
+ return obj;
63
+ },
64
+
65
+ fromPartial<I extends Exact<DeepPartial<GetChallengeRequest>, I>>(object: I): GetChallengeRequest {
66
+ const message = createBaseGetChallengeRequest();
67
+ message.address = object.address ?? "";
68
+ return message;
69
+ },
70
+ };
71
+
72
+ function createBaseGetChallengeResponse(): GetChallengeResponse {
73
+ return { challengeToSign: "", alreadyConnected: false };
74
+ }
75
+
76
+ export const GetChallengeResponse = {
77
+ encode(message: GetChallengeResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
78
+ if (message.challengeToSign !== "") {
79
+ writer.uint32(10).string(message.challengeToSign);
80
+ }
81
+ if (message.alreadyConnected === true) {
82
+ writer.uint32(16).bool(message.alreadyConnected);
83
+ }
84
+ return writer;
85
+ },
86
+
87
+ decode(input: _m0.Reader | Uint8Array, length?: number): GetChallengeResponse {
88
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
89
+ let end = length === undefined ? reader.len : reader.pos + length;
90
+ const message = createBaseGetChallengeResponse();
91
+ while (reader.pos < end) {
92
+ const tag = reader.uint32();
93
+ switch (tag >>> 3) {
94
+ case 1:
95
+ message.challengeToSign = reader.string();
96
+ break;
97
+ case 2:
98
+ message.alreadyConnected = reader.bool();
99
+ break;
100
+ default:
101
+ reader.skipType(tag & 7);
102
+ break;
103
+ }
104
+ }
105
+ return message;
106
+ },
107
+
108
+ fromJSON(object: any): GetChallengeResponse {
109
+ return {
110
+ challengeToSign: isSet(object.challengeToSign) ? String(object.challengeToSign) : "",
111
+ alreadyConnected: isSet(object.alreadyConnected) ? Boolean(object.alreadyConnected) : false,
112
+ };
113
+ },
114
+
115
+ toJSON(message: GetChallengeResponse): unknown {
116
+ const obj: any = {};
117
+ message.challengeToSign !== undefined && (obj.challengeToSign = message.challengeToSign);
118
+ message.alreadyConnected !== undefined && (obj.alreadyConnected = message.alreadyConnected);
119
+ return obj;
120
+ },
121
+
122
+ fromPartial<I extends Exact<DeepPartial<GetChallengeResponse>, I>>(object: I): GetChallengeResponse {
123
+ const message = createBaseGetChallengeResponse();
124
+ message.challengeToSign = object.challengeToSign ?? "";
125
+ message.alreadyConnected = object.alreadyConnected ?? false;
126
+ return message;
127
+ },
128
+ };
129
+
130
+ function createBaseSignedChallenge(): SignedChallenge {
131
+ return { authChainJson: "" };
132
+ }
133
+
134
+ export const SignedChallenge = {
135
+ encode(message: SignedChallenge, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
136
+ if (message.authChainJson !== "") {
137
+ writer.uint32(10).string(message.authChainJson);
138
+ }
139
+ return writer;
140
+ },
141
+
142
+ decode(input: _m0.Reader | Uint8Array, length?: number): SignedChallenge {
143
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
144
+ let end = length === undefined ? reader.len : reader.pos + length;
145
+ const message = createBaseSignedChallenge();
146
+ while (reader.pos < end) {
147
+ const tag = reader.uint32();
148
+ switch (tag >>> 3) {
149
+ case 1:
150
+ message.authChainJson = reader.string();
151
+ break;
152
+ default:
153
+ reader.skipType(tag & 7);
154
+ break;
155
+ }
156
+ }
157
+ return message;
158
+ },
159
+
160
+ fromJSON(object: any): SignedChallenge {
161
+ return { authChainJson: isSet(object.authChainJson) ? String(object.authChainJson) : "" };
162
+ },
163
+
164
+ toJSON(message: SignedChallenge): unknown {
165
+ const obj: any = {};
166
+ message.authChainJson !== undefined && (obj.authChainJson = message.authChainJson);
167
+ return obj;
168
+ },
169
+
170
+ fromPartial<I extends Exact<DeepPartial<SignedChallenge>, I>>(object: I): SignedChallenge {
171
+ const message = createBaseSignedChallenge();
172
+ message.authChainJson = object.authChainJson ?? "";
173
+ return message;
174
+ },
175
+ };
176
+
177
+ function createBaseWelcomePeerInformation(): WelcomePeerInformation {
178
+ return { peerId: "", availableModules: [] };
179
+ }
180
+
181
+ export const WelcomePeerInformation = {
182
+ encode(message: WelcomePeerInformation, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
183
+ if (message.peerId !== "") {
184
+ writer.uint32(10).string(message.peerId);
185
+ }
186
+ for (const v of message.availableModules) {
187
+ writer.uint32(18).string(v!);
188
+ }
189
+ return writer;
190
+ },
191
+
192
+ decode(input: _m0.Reader | Uint8Array, length?: number): WelcomePeerInformation {
193
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
194
+ let end = length === undefined ? reader.len : reader.pos + length;
195
+ const message = createBaseWelcomePeerInformation();
196
+ while (reader.pos < end) {
197
+ const tag = reader.uint32();
198
+ switch (tag >>> 3) {
199
+ case 1:
200
+ message.peerId = reader.string();
201
+ break;
202
+ case 2:
203
+ message.availableModules.push(reader.string());
204
+ break;
205
+ default:
206
+ reader.skipType(tag & 7);
207
+ break;
208
+ }
209
+ }
210
+ return message;
211
+ },
212
+
213
+ fromJSON(object: any): WelcomePeerInformation {
214
+ return {
215
+ peerId: isSet(object.peerId) ? String(object.peerId) : "",
216
+ availableModules: Array.isArray(object?.availableModules)
217
+ ? object.availableModules.map((e: any) => String(e))
218
+ : [],
219
+ };
220
+ },
221
+
222
+ toJSON(message: WelcomePeerInformation): unknown {
223
+ const obj: any = {};
224
+ message.peerId !== undefined && (obj.peerId = message.peerId);
225
+ if (message.availableModules) {
226
+ obj.availableModules = message.availableModules.map((e) => e);
227
+ } else {
228
+ obj.availableModules = [];
229
+ }
230
+ return obj;
231
+ },
232
+
233
+ fromPartial<I extends Exact<DeepPartial<WelcomePeerInformation>, I>>(object: I): WelcomePeerInformation {
234
+ const message = createBaseWelcomePeerInformation();
235
+ message.peerId = object.peerId ?? "";
236
+ message.availableModules = object.availableModules?.map((e) => e) || [];
237
+ return message;
238
+ },
239
+ };
240
+
241
+ export type BffAuthenticationServiceDefinition = typeof BffAuthenticationServiceDefinition;
242
+ export const BffAuthenticationServiceDefinition = {
243
+ name: "BffAuthenticationService",
244
+ fullName: "decentraland.bff.BffAuthenticationService",
245
+ methods: {
246
+ getChallenge: {
247
+ name: "GetChallenge",
248
+ requestType: GetChallengeRequest,
249
+ requestStream: false,
250
+ responseType: GetChallengeResponse,
251
+ responseStream: false,
252
+ options: {},
253
+ },
254
+ authenticate: {
255
+ name: "Authenticate",
256
+ requestType: SignedChallenge,
257
+ requestStream: false,
258
+ responseType: WelcomePeerInformation,
259
+ responseStream: false,
260
+ options: {},
261
+ },
262
+ },
263
+ } as const;
264
+
265
+ type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
266
+
267
+ export type DeepPartial<T> = T extends Builtin ? T
268
+ : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
269
+ : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
270
+ : Partial<T>;
271
+
272
+ type KeysOfUnion<T> = T extends T ? keyof T : never;
273
+ export type Exact<P, I extends P> = P extends Builtin ? P
274
+ : P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
275
+
276
+ function isSet(value: any): boolean {
277
+ return value !== null && value !== undefined;
278
+ }
@@ -0,0 +1,225 @@
1
+ /* eslint-disable */
2
+ import _m0 from "protobufjs/minimal";
3
+ import { Position } from "../common/Vectors.gen";
4
+ import { Empty } from "../google/protobuf/empty.gen";
5
+
6
+ export const protobufPackage = "decentraland.bff";
7
+
8
+ export interface WorldCommand {
9
+ setCommsAdapter: SetCommsAdapter | undefined;
10
+ }
11
+
12
+ export interface SetCommsAdapter {
13
+ connectionString: string;
14
+ }
15
+
16
+ export interface Heartbeat {
17
+ position: Position | undefined;
18
+ desiredRoom?: string | undefined;
19
+ }
20
+
21
+ function createBaseWorldCommand(): WorldCommand {
22
+ return { setCommsAdapter: undefined };
23
+ }
24
+
25
+ export const WorldCommand = {
26
+ encode(message: WorldCommand, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
27
+ if (message.setCommsAdapter !== undefined) {
28
+ SetCommsAdapter.encode(message.setCommsAdapter, writer.uint32(10).fork()).ldelim();
29
+ }
30
+ return writer;
31
+ },
32
+
33
+ decode(input: _m0.Reader | Uint8Array, length?: number): WorldCommand {
34
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
35
+ let end = length === undefined ? reader.len : reader.pos + length;
36
+ const message = createBaseWorldCommand();
37
+ while (reader.pos < end) {
38
+ const tag = reader.uint32();
39
+ switch (tag >>> 3) {
40
+ case 1:
41
+ message.setCommsAdapter = SetCommsAdapter.decode(reader, reader.uint32());
42
+ break;
43
+ default:
44
+ reader.skipType(tag & 7);
45
+ break;
46
+ }
47
+ }
48
+ return message;
49
+ },
50
+
51
+ fromJSON(object: any): WorldCommand {
52
+ return {
53
+ setCommsAdapter: isSet(object.setCommsAdapter) ? SetCommsAdapter.fromJSON(object.setCommsAdapter) : undefined,
54
+ };
55
+ },
56
+
57
+ toJSON(message: WorldCommand): unknown {
58
+ const obj: any = {};
59
+ message.setCommsAdapter !== undefined &&
60
+ (obj.setCommsAdapter = message.setCommsAdapter ? SetCommsAdapter.toJSON(message.setCommsAdapter) : undefined);
61
+ return obj;
62
+ },
63
+
64
+ fromPartial<I extends Exact<DeepPartial<WorldCommand>, I>>(object: I): WorldCommand {
65
+ const message = createBaseWorldCommand();
66
+ message.setCommsAdapter = (object.setCommsAdapter !== undefined && object.setCommsAdapter !== null)
67
+ ? SetCommsAdapter.fromPartial(object.setCommsAdapter)
68
+ : undefined;
69
+ return message;
70
+ },
71
+ };
72
+
73
+ function createBaseSetCommsAdapter(): SetCommsAdapter {
74
+ return { connectionString: "" };
75
+ }
76
+
77
+ export const SetCommsAdapter = {
78
+ encode(message: SetCommsAdapter, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
79
+ if (message.connectionString !== "") {
80
+ writer.uint32(10).string(message.connectionString);
81
+ }
82
+ return writer;
83
+ },
84
+
85
+ decode(input: _m0.Reader | Uint8Array, length?: number): SetCommsAdapter {
86
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
87
+ let end = length === undefined ? reader.len : reader.pos + length;
88
+ const message = createBaseSetCommsAdapter();
89
+ while (reader.pos < end) {
90
+ const tag = reader.uint32();
91
+ switch (tag >>> 3) {
92
+ case 1:
93
+ message.connectionString = reader.string();
94
+ break;
95
+ default:
96
+ reader.skipType(tag & 7);
97
+ break;
98
+ }
99
+ }
100
+ return message;
101
+ },
102
+
103
+ fromJSON(object: any): SetCommsAdapter {
104
+ return { connectionString: isSet(object.connectionString) ? String(object.connectionString) : "" };
105
+ },
106
+
107
+ toJSON(message: SetCommsAdapter): unknown {
108
+ const obj: any = {};
109
+ message.connectionString !== undefined && (obj.connectionString = message.connectionString);
110
+ return obj;
111
+ },
112
+
113
+ fromPartial<I extends Exact<DeepPartial<SetCommsAdapter>, I>>(object: I): SetCommsAdapter {
114
+ const message = createBaseSetCommsAdapter();
115
+ message.connectionString = object.connectionString ?? "";
116
+ return message;
117
+ },
118
+ };
119
+
120
+ function createBaseHeartbeat(): Heartbeat {
121
+ return { position: undefined, desiredRoom: undefined };
122
+ }
123
+
124
+ export const Heartbeat = {
125
+ encode(message: Heartbeat, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
126
+ if (message.position !== undefined) {
127
+ Position.encode(message.position, writer.uint32(10).fork()).ldelim();
128
+ }
129
+ if (message.desiredRoom !== undefined) {
130
+ writer.uint32(18).string(message.desiredRoom);
131
+ }
132
+ return writer;
133
+ },
134
+
135
+ decode(input: _m0.Reader | Uint8Array, length?: number): Heartbeat {
136
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
137
+ let end = length === undefined ? reader.len : reader.pos + length;
138
+ const message = createBaseHeartbeat();
139
+ while (reader.pos < end) {
140
+ const tag = reader.uint32();
141
+ switch (tag >>> 3) {
142
+ case 1:
143
+ message.position = Position.decode(reader, reader.uint32());
144
+ break;
145
+ case 2:
146
+ message.desiredRoom = reader.string();
147
+ break;
148
+ default:
149
+ reader.skipType(tag & 7);
150
+ break;
151
+ }
152
+ }
153
+ return message;
154
+ },
155
+
156
+ fromJSON(object: any): Heartbeat {
157
+ return {
158
+ position: isSet(object.position) ? Position.fromJSON(object.position) : undefined,
159
+ desiredRoom: isSet(object.desiredRoom) ? String(object.desiredRoom) : undefined,
160
+ };
161
+ },
162
+
163
+ toJSON(message: Heartbeat): unknown {
164
+ const obj: any = {};
165
+ message.position !== undefined && (obj.position = message.position ? Position.toJSON(message.position) : undefined);
166
+ message.desiredRoom !== undefined && (obj.desiredRoom = message.desiredRoom);
167
+ return obj;
168
+ },
169
+
170
+ fromPartial<I extends Exact<DeepPartial<Heartbeat>, I>>(object: I): Heartbeat {
171
+ const message = createBaseHeartbeat();
172
+ message.position = (object.position !== undefined && object.position !== null)
173
+ ? Position.fromPartial(object.position)
174
+ : undefined;
175
+ message.desiredRoom = object.desiredRoom ?? undefined;
176
+ return message;
177
+ },
178
+ };
179
+
180
+ export type CommsDirectorServiceDefinition = typeof CommsDirectorServiceDefinition;
181
+ export const CommsDirectorServiceDefinition = {
182
+ name: "CommsDirectorService",
183
+ fullName: "decentraland.bff.CommsDirectorService",
184
+ methods: {
185
+ /**
186
+ * every couple seconds AND at the beginning, the explorers must send a heartbeat
187
+ * to make the comms director aware of their location
188
+ */
189
+ sendHeartbeat: {
190
+ name: "SendHeartbeat",
191
+ requestType: Heartbeat,
192
+ requestStream: false,
193
+ responseType: Empty,
194
+ responseStream: false,
195
+ options: {},
196
+ },
197
+ /**
198
+ * before sending the first heartbeat, it is required that the explorers subscribe
199
+ * to a list of comms commands
200
+ */
201
+ getCommsCommands: {
202
+ name: "GetCommsCommands",
203
+ requestType: Empty,
204
+ requestStream: false,
205
+ responseType: WorldCommand,
206
+ responseStream: true,
207
+ options: {},
208
+ },
209
+ },
210
+ } as const;
211
+
212
+ type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
213
+
214
+ export type DeepPartial<T> = T extends Builtin ? T
215
+ : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
216
+ : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
217
+ : Partial<T>;
218
+
219
+ type KeysOfUnion<T> = T extends T ? keyof T : never;
220
+ export type Exact<P, I extends P> = P extends Builtin ? P
221
+ : P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
222
+
223
+ function isSet(value: any): boolean {
224
+ return value !== null && value !== undefined;
225
+ }