googlevideo 1.0.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 (73) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +66 -0
  3. package/bundle/index.cjs +7134 -0
  4. package/bundle/index.cjs.map +7 -0
  5. package/dist/protos/generated/misc/common.d.ts +47 -0
  6. package/dist/protos/generated/misc/common.js +365 -0
  7. package/dist/protos/generated/video_streaming/buffered_range.d.ts +50 -0
  8. package/dist/protos/generated/video_streaming/buffered_range.js +403 -0
  9. package/dist/protos/generated/video_streaming/client_abr_state.d.ts +69 -0
  10. package/dist/protos/generated/video_streaming/client_abr_state.js +647 -0
  11. package/dist/protos/generated/video_streaming/crypto_params.d.ts +35 -0
  12. package/dist/protos/generated/video_streaming/crypto_params.js +143 -0
  13. package/dist/protos/generated/video_streaming/encrypted_player_request.d.ts +35 -0
  14. package/dist/protos/generated/video_streaming/encrypted_player_request.js +219 -0
  15. package/dist/protos/generated/video_streaming/format_initialization_metadata.d.ts +35 -0
  16. package/dist/protos/generated/video_streaming/format_initialization_metadata.js +207 -0
  17. package/dist/protos/generated/video_streaming/media_capabilities.d.ts +43 -0
  18. package/dist/protos/generated/video_streaming/media_capabilities.js +315 -0
  19. package/dist/protos/generated/video_streaming/media_header.d.ts +49 -0
  20. package/dist/protos/generated/video_streaming/media_header.js +328 -0
  21. package/dist/protos/generated/video_streaming/next_request_policy.d.ts +30 -0
  22. package/dist/protos/generated/video_streaming/next_request_policy.js +132 -0
  23. package/dist/protos/generated/video_streaming/onesie_header.d.ts +45 -0
  24. package/dist/protos/generated/video_streaming/onesie_header.js +339 -0
  25. package/dist/protos/generated/video_streaming/onesie_header_type.d.ts +32 -0
  26. package/dist/protos/generated/video_streaming/onesie_header_type.js +182 -0
  27. package/dist/protos/generated/video_streaming/onesie_player_request.d.ts +31 -0
  28. package/dist/protos/generated/video_streaming/onesie_player_request.js +122 -0
  29. package/dist/protos/generated/video_streaming/onesie_player_response.d.ts +29 -0
  30. package/dist/protos/generated/video_streaming/onesie_player_response.js +121 -0
  31. package/dist/protos/generated/video_streaming/onesie_request.d.ts +36 -0
  32. package/dist/protos/generated/video_streaming/onesie_request.js +199 -0
  33. package/dist/protos/generated/video_streaming/playback_cookie.d.ts +30 -0
  34. package/dist/protos/generated/video_streaming/playback_cookie.js +110 -0
  35. package/dist/protos/generated/video_streaming/playback_start_policy.d.ts +31 -0
  36. package/dist/protos/generated/video_streaming/playback_start_policy.js +155 -0
  37. package/dist/protos/generated/video_streaming/proxy_status.d.ts +16 -0
  38. package/dist/protos/generated/video_streaming/proxy_status.js +86 -0
  39. package/dist/protos/generated/video_streaming/request_cancellation_policy.d.ts +33 -0
  40. package/dist/protos/generated/video_streaming/request_cancellation_policy.js +173 -0
  41. package/dist/protos/generated/video_streaming/sabr_error.d.ts +26 -0
  42. package/dist/protos/generated/video_streaming/sabr_error.js +77 -0
  43. package/dist/protos/generated/video_streaming/sabr_redirect.d.ts +25 -0
  44. package/dist/protos/generated/video_streaming/sabr_redirect.js +61 -0
  45. package/dist/protos/generated/video_streaming/stream_protection_status.d.ts +26 -0
  46. package/dist/protos/generated/video_streaming/stream_protection_status.js +77 -0
  47. package/dist/protos/generated/video_streaming/streamer_context.d.ts +89 -0
  48. package/dist/protos/generated/video_streaming/streamer_context.js +915 -0
  49. package/dist/protos/generated/video_streaming/time_range.d.ts +27 -0
  50. package/dist/protos/generated/video_streaming/time_range.js +101 -0
  51. package/dist/protos/generated/video_streaming/video_playback_abr_request.d.ts +69 -0
  52. package/dist/protos/generated/video_streaming/video_playback_abr_request.js +659 -0
  53. package/dist/src/core/ChunkedDataBuffer.d.ts +20 -0
  54. package/dist/src/core/ChunkedDataBuffer.js +82 -0
  55. package/dist/src/core/ServerAbrStream.d.ts +38 -0
  56. package/dist/src/core/ServerAbrStream.js +272 -0
  57. package/dist/src/core/UMP.d.ts +10 -0
  58. package/dist/src/core/UMP.js +110 -0
  59. package/dist/src/core/index.d.ts +3 -0
  60. package/dist/src/core/index.js +3 -0
  61. package/dist/src/index.d.ts +4 -0
  62. package/dist/src/index.js +4 -0
  63. package/dist/src/utils/EventEmitterLike.d.ts +8 -0
  64. package/dist/src/utils/EventEmitterLike.js +50 -0
  65. package/dist/src/utils/Protos.d.ts +23 -0
  66. package/dist/src/utils/Protos.js +23 -0
  67. package/dist/src/utils/helpers.d.ts +63 -0
  68. package/dist/src/utils/helpers.js +101 -0
  69. package/dist/src/utils/index.d.ts +4 -0
  70. package/dist/src/utils/index.js +3 -0
  71. package/dist/src/utils/types.d.ts +65 -0
  72. package/dist/src/utils/types.js +1 -0
  73. package/package.json +61 -0
@@ -0,0 +1,403 @@
1
+ // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
+ // versions:
3
+ // protoc-gen-ts_proto v2.2.0
4
+ // protoc v5.28.0
5
+ // source: video_streaming/buffered_range.proto
6
+ /* eslint-disable */
7
+ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
8
+ import { FormatId } from "../misc/common.js";
9
+ import { TimeRange } from "./time_range.js";
10
+ export const protobufPackage = "video_streaming";
11
+ function createBaseBufferedRange() {
12
+ return {
13
+ formatId: undefined,
14
+ startTimeMs: 0,
15
+ durationMs: 0,
16
+ startSegmentIndex: 0,
17
+ endSegmentIndex: 0,
18
+ timeRange: undefined,
19
+ field9: undefined,
20
+ field11: undefined,
21
+ field12: undefined,
22
+ };
23
+ }
24
+ export const BufferedRange = {
25
+ encode(message, writer = new BinaryWriter()) {
26
+ if (message.formatId !== undefined) {
27
+ FormatId.encode(message.formatId, writer.uint32(10).fork()).join();
28
+ }
29
+ if (message.startTimeMs !== 0) {
30
+ writer.uint32(16).int64(message.startTimeMs);
31
+ }
32
+ if (message.durationMs !== 0) {
33
+ writer.uint32(24).int64(message.durationMs);
34
+ }
35
+ if (message.startSegmentIndex !== 0) {
36
+ writer.uint32(32).int32(message.startSegmentIndex);
37
+ }
38
+ if (message.endSegmentIndex !== 0) {
39
+ writer.uint32(40).int32(message.endSegmentIndex);
40
+ }
41
+ if (message.timeRange !== undefined) {
42
+ TimeRange.encode(message.timeRange, writer.uint32(50).fork()).join();
43
+ }
44
+ if (message.field9 !== undefined) {
45
+ Kob.encode(message.field9, writer.uint32(74).fork()).join();
46
+ }
47
+ if (message.field11 !== undefined) {
48
+ YPa.encode(message.field11, writer.uint32(90).fork()).join();
49
+ }
50
+ if (message.field12 !== undefined) {
51
+ YPa.encode(message.field12, writer.uint32(98).fork()).join();
52
+ }
53
+ return writer;
54
+ },
55
+ decode(input, length) {
56
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
57
+ let end = length === undefined ? reader.len : reader.pos + length;
58
+ const message = createBaseBufferedRange();
59
+ while (reader.pos < end) {
60
+ const tag = reader.uint32();
61
+ switch (tag >>> 3) {
62
+ case 1:
63
+ if (tag !== 10) {
64
+ break;
65
+ }
66
+ message.formatId = FormatId.decode(reader, reader.uint32());
67
+ continue;
68
+ case 2:
69
+ if (tag !== 16) {
70
+ break;
71
+ }
72
+ message.startTimeMs = longToNumber(reader.int64());
73
+ continue;
74
+ case 3:
75
+ if (tag !== 24) {
76
+ break;
77
+ }
78
+ message.durationMs = longToNumber(reader.int64());
79
+ continue;
80
+ case 4:
81
+ if (tag !== 32) {
82
+ break;
83
+ }
84
+ message.startSegmentIndex = reader.int32();
85
+ continue;
86
+ case 5:
87
+ if (tag !== 40) {
88
+ break;
89
+ }
90
+ message.endSegmentIndex = reader.int32();
91
+ continue;
92
+ case 6:
93
+ if (tag !== 50) {
94
+ break;
95
+ }
96
+ message.timeRange = TimeRange.decode(reader, reader.uint32());
97
+ continue;
98
+ case 9:
99
+ if (tag !== 74) {
100
+ break;
101
+ }
102
+ message.field9 = Kob.decode(reader, reader.uint32());
103
+ continue;
104
+ case 11:
105
+ if (tag !== 90) {
106
+ break;
107
+ }
108
+ message.field11 = YPa.decode(reader, reader.uint32());
109
+ continue;
110
+ case 12:
111
+ if (tag !== 98) {
112
+ break;
113
+ }
114
+ message.field12 = YPa.decode(reader, reader.uint32());
115
+ continue;
116
+ }
117
+ if ((tag & 7) === 4 || tag === 0) {
118
+ break;
119
+ }
120
+ reader.skip(tag & 7);
121
+ }
122
+ return message;
123
+ },
124
+ fromJSON(object) {
125
+ return {
126
+ formatId: isSet(object.formatId) ? FormatId.fromJSON(object.formatId) : undefined,
127
+ startTimeMs: isSet(object.startTimeMs) ? globalThis.Number(object.startTimeMs) : 0,
128
+ durationMs: isSet(object.durationMs) ? globalThis.Number(object.durationMs) : 0,
129
+ startSegmentIndex: isSet(object.startSegmentIndex) ? globalThis.Number(object.startSegmentIndex) : 0,
130
+ endSegmentIndex: isSet(object.endSegmentIndex) ? globalThis.Number(object.endSegmentIndex) : 0,
131
+ timeRange: isSet(object.timeRange) ? TimeRange.fromJSON(object.timeRange) : undefined,
132
+ field9: isSet(object.field9) ? Kob.fromJSON(object.field9) : undefined,
133
+ field11: isSet(object.field11) ? YPa.fromJSON(object.field11) : undefined,
134
+ field12: isSet(object.field12) ? YPa.fromJSON(object.field12) : undefined,
135
+ };
136
+ },
137
+ toJSON(message) {
138
+ const obj = {};
139
+ if (message.formatId !== undefined) {
140
+ obj.formatId = FormatId.toJSON(message.formatId);
141
+ }
142
+ if (message.startTimeMs !== 0) {
143
+ obj.startTimeMs = Math.round(message.startTimeMs);
144
+ }
145
+ if (message.durationMs !== 0) {
146
+ obj.durationMs = Math.round(message.durationMs);
147
+ }
148
+ if (message.startSegmentIndex !== 0) {
149
+ obj.startSegmentIndex = Math.round(message.startSegmentIndex);
150
+ }
151
+ if (message.endSegmentIndex !== 0) {
152
+ obj.endSegmentIndex = Math.round(message.endSegmentIndex);
153
+ }
154
+ if (message.timeRange !== undefined) {
155
+ obj.timeRange = TimeRange.toJSON(message.timeRange);
156
+ }
157
+ if (message.field9 !== undefined) {
158
+ obj.field9 = Kob.toJSON(message.field9);
159
+ }
160
+ if (message.field11 !== undefined) {
161
+ obj.field11 = YPa.toJSON(message.field11);
162
+ }
163
+ if (message.field12 !== undefined) {
164
+ obj.field12 = YPa.toJSON(message.field12);
165
+ }
166
+ return obj;
167
+ },
168
+ create(base) {
169
+ return BufferedRange.fromPartial(base ?? {});
170
+ },
171
+ fromPartial(object) {
172
+ const message = createBaseBufferedRange();
173
+ message.formatId = (object.formatId !== undefined && object.formatId !== null)
174
+ ? FormatId.fromPartial(object.formatId)
175
+ : undefined;
176
+ message.startTimeMs = object.startTimeMs ?? 0;
177
+ message.durationMs = object.durationMs ?? 0;
178
+ message.startSegmentIndex = object.startSegmentIndex ?? 0;
179
+ message.endSegmentIndex = object.endSegmentIndex ?? 0;
180
+ message.timeRange = (object.timeRange !== undefined && object.timeRange !== null)
181
+ ? TimeRange.fromPartial(object.timeRange)
182
+ : undefined;
183
+ message.field9 = (object.field9 !== undefined && object.field9 !== null)
184
+ ? Kob.fromPartial(object.field9)
185
+ : undefined;
186
+ message.field11 = (object.field11 !== undefined && object.field11 !== null)
187
+ ? YPa.fromPartial(object.field11)
188
+ : undefined;
189
+ message.field12 = (object.field12 !== undefined && object.field12 !== null)
190
+ ? YPa.fromPartial(object.field12)
191
+ : undefined;
192
+ return message;
193
+ },
194
+ };
195
+ function createBaseKob() {
196
+ return { EW: [] };
197
+ }
198
+ export const Kob = {
199
+ encode(message, writer = new BinaryWriter()) {
200
+ for (const v of message.EW) {
201
+ Kob_Pa.encode(v, writer.uint32(10).fork()).join();
202
+ }
203
+ return writer;
204
+ },
205
+ decode(input, length) {
206
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
207
+ let end = length === undefined ? reader.len : reader.pos + length;
208
+ const message = createBaseKob();
209
+ while (reader.pos < end) {
210
+ const tag = reader.uint32();
211
+ switch (tag >>> 3) {
212
+ case 1:
213
+ if (tag !== 10) {
214
+ break;
215
+ }
216
+ message.EW.push(Kob_Pa.decode(reader, reader.uint32()));
217
+ continue;
218
+ }
219
+ if ((tag & 7) === 4 || tag === 0) {
220
+ break;
221
+ }
222
+ reader.skip(tag & 7);
223
+ }
224
+ return message;
225
+ },
226
+ fromJSON(object) {
227
+ return { EW: globalThis.Array.isArray(object?.EW) ? object.EW.map((e) => Kob_Pa.fromJSON(e)) : [] };
228
+ },
229
+ toJSON(message) {
230
+ const obj = {};
231
+ if (message.EW?.length) {
232
+ obj.EW = message.EW.map((e) => Kob_Pa.toJSON(e));
233
+ }
234
+ return obj;
235
+ },
236
+ create(base) {
237
+ return Kob.fromPartial(base ?? {});
238
+ },
239
+ fromPartial(object) {
240
+ const message = createBaseKob();
241
+ message.EW = object.EW?.map((e) => Kob_Pa.fromPartial(e)) || [];
242
+ return message;
243
+ },
244
+ };
245
+ function createBaseKob_Pa() {
246
+ return { videoId: "", lmt: 0 };
247
+ }
248
+ export const Kob_Pa = {
249
+ encode(message, writer = new BinaryWriter()) {
250
+ if (message.videoId !== undefined && message.videoId !== "") {
251
+ writer.uint32(10).string(message.videoId);
252
+ }
253
+ if (message.lmt !== undefined && message.lmt !== 0) {
254
+ writer.uint32(16).uint64(message.lmt);
255
+ }
256
+ return writer;
257
+ },
258
+ decode(input, length) {
259
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
260
+ let end = length === undefined ? reader.len : reader.pos + length;
261
+ const message = createBaseKob_Pa();
262
+ while (reader.pos < end) {
263
+ const tag = reader.uint32();
264
+ switch (tag >>> 3) {
265
+ case 1:
266
+ if (tag !== 10) {
267
+ break;
268
+ }
269
+ message.videoId = reader.string();
270
+ continue;
271
+ case 2:
272
+ if (tag !== 16) {
273
+ break;
274
+ }
275
+ message.lmt = longToNumber(reader.uint64());
276
+ continue;
277
+ }
278
+ if ((tag & 7) === 4 || tag === 0) {
279
+ break;
280
+ }
281
+ reader.skip(tag & 7);
282
+ }
283
+ return message;
284
+ },
285
+ fromJSON(object) {
286
+ return {
287
+ videoId: isSet(object.videoId) ? globalThis.String(object.videoId) : "",
288
+ lmt: isSet(object.lmt) ? globalThis.Number(object.lmt) : 0,
289
+ };
290
+ },
291
+ toJSON(message) {
292
+ const obj = {};
293
+ if (message.videoId !== undefined && message.videoId !== "") {
294
+ obj.videoId = message.videoId;
295
+ }
296
+ if (message.lmt !== undefined && message.lmt !== 0) {
297
+ obj.lmt = Math.round(message.lmt);
298
+ }
299
+ return obj;
300
+ },
301
+ create(base) {
302
+ return Kob_Pa.fromPartial(base ?? {});
303
+ },
304
+ fromPartial(object) {
305
+ const message = createBaseKob_Pa();
306
+ message.videoId = object.videoId ?? "";
307
+ message.lmt = object.lmt ?? 0;
308
+ return message;
309
+ },
310
+ };
311
+ function createBaseYPa() {
312
+ return { field1: 0, field2: 0, field3: 0 };
313
+ }
314
+ export const YPa = {
315
+ encode(message, writer = new BinaryWriter()) {
316
+ if (message.field1 !== undefined && message.field1 !== 0) {
317
+ writer.uint32(8).int32(message.field1);
318
+ }
319
+ if (message.field2 !== undefined && message.field2 !== 0) {
320
+ writer.uint32(16).int32(message.field2);
321
+ }
322
+ if (message.field3 !== undefined && message.field3 !== 0) {
323
+ writer.uint32(24).int32(message.field3);
324
+ }
325
+ return writer;
326
+ },
327
+ decode(input, length) {
328
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
329
+ let end = length === undefined ? reader.len : reader.pos + length;
330
+ const message = createBaseYPa();
331
+ while (reader.pos < end) {
332
+ const tag = reader.uint32();
333
+ switch (tag >>> 3) {
334
+ case 1:
335
+ if (tag !== 8) {
336
+ break;
337
+ }
338
+ message.field1 = reader.int32();
339
+ continue;
340
+ case 2:
341
+ if (tag !== 16) {
342
+ break;
343
+ }
344
+ message.field2 = reader.int32();
345
+ continue;
346
+ case 3:
347
+ if (tag !== 24) {
348
+ break;
349
+ }
350
+ message.field3 = reader.int32();
351
+ continue;
352
+ }
353
+ if ((tag & 7) === 4 || tag === 0) {
354
+ break;
355
+ }
356
+ reader.skip(tag & 7);
357
+ }
358
+ return message;
359
+ },
360
+ fromJSON(object) {
361
+ return {
362
+ field1: isSet(object.field1) ? globalThis.Number(object.field1) : 0,
363
+ field2: isSet(object.field2) ? globalThis.Number(object.field2) : 0,
364
+ field3: isSet(object.field3) ? globalThis.Number(object.field3) : 0,
365
+ };
366
+ },
367
+ toJSON(message) {
368
+ const obj = {};
369
+ if (message.field1 !== undefined && message.field1 !== 0) {
370
+ obj.field1 = Math.round(message.field1);
371
+ }
372
+ if (message.field2 !== undefined && message.field2 !== 0) {
373
+ obj.field2 = Math.round(message.field2);
374
+ }
375
+ if (message.field3 !== undefined && message.field3 !== 0) {
376
+ obj.field3 = Math.round(message.field3);
377
+ }
378
+ return obj;
379
+ },
380
+ create(base) {
381
+ return YPa.fromPartial(base ?? {});
382
+ },
383
+ fromPartial(object) {
384
+ const message = createBaseYPa();
385
+ message.field1 = object.field1 ?? 0;
386
+ message.field2 = object.field2 ?? 0;
387
+ message.field3 = object.field3 ?? 0;
388
+ return message;
389
+ },
390
+ };
391
+ function longToNumber(int64) {
392
+ const num = globalThis.Number(int64.toString());
393
+ if (num > globalThis.Number.MAX_SAFE_INTEGER) {
394
+ throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER");
395
+ }
396
+ if (num < globalThis.Number.MIN_SAFE_INTEGER) {
397
+ throw new globalThis.Error("Value is smaller than Number.MIN_SAFE_INTEGER");
398
+ }
399
+ return num;
400
+ }
401
+ function isSet(value) {
402
+ return value !== null && value !== undefined;
403
+ }
@@ -0,0 +1,69 @@
1
+ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
2
+ import { MediaCapabilities } from "./media_capabilities.js";
3
+ export declare const protobufPackage = "video_streaming";
4
+ export interface ClientAbrState {
5
+ timeSinceLastManualFormatSelectionMs?: number | undefined;
6
+ lastManualDirection?: number | undefined;
7
+ quality?: number | undefined;
8
+ detailedNetworkType?: number | undefined;
9
+ maxWidth?: number | undefined;
10
+ maxHeight?: number | undefined;
11
+ selectedQualityHeight?: number | undefined;
12
+ r7?: number | undefined;
13
+ startTimeMs?: number | undefined;
14
+ timeSinceLastSeek?: number | undefined;
15
+ visibility?: number | undefined;
16
+ timeSinceLastReq?: number | undefined;
17
+ mediaCapabilities?: MediaCapabilities | undefined;
18
+ timeSinceLastAction?: number | undefined;
19
+ /** optional int32 Gw = 40; */
20
+ mediaType?: ClientAbrState_MediaType | undefined;
21
+ playerState?: number | undefined;
22
+ rangeCompression?: boolean | undefined;
23
+ Jda?: number | undefined;
24
+ qw?: number | undefined;
25
+ Ky?: number | undefined;
26
+ sabrReportRequestCancellationInfo?: number | undefined;
27
+ l?: boolean | undefined;
28
+ G7?: number | undefined;
29
+ preferVp9?: boolean | undefined;
30
+ qj?: number | undefined;
31
+ Hx?: number | undefined;
32
+ isPrefetch?: boolean | undefined;
33
+ sabrSupportQualityConstraints?: number | undefined;
34
+ sabrLicenseConstraint?: Uint8Array | undefined;
35
+ allowProximaLiveLatency?: number | undefined;
36
+ sabrForceProxima?: number | undefined;
37
+ Tqb?: number | undefined;
38
+ sabrForceMaxNetworkInterruptionDurationMs?: number | undefined;
39
+ playbackRate?: number | undefined;
40
+ }
41
+ export declare enum ClientAbrState_MediaType {
42
+ MEDIA_TYPE_DEFAULT = 0,
43
+ MEDIA_TYPE_AUDIO = 1,
44
+ MEDIA_TYPE_VIDEO = 2,
45
+ USE_SERVER_FORMAT_FILTER = 3,
46
+ UNRECOGNIZED = -1
47
+ }
48
+ export declare function clientAbrState_MediaTypeFromJSON(object: any): ClientAbrState_MediaType;
49
+ export declare function clientAbrState_MediaTypeToJSON(object: ClientAbrState_MediaType): string;
50
+ export declare const ClientAbrState: MessageFns<ClientAbrState>;
51
+ type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
52
+ export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
53
+ [K in keyof T]?: DeepPartial<T[K]>;
54
+ } : Partial<T>;
55
+ type KeysOfUnion<T> = T extends T ? keyof T : never;
56
+ export type Exact<P, I extends P> = P extends Builtin ? P : P & {
57
+ [K in keyof P]: Exact<P[K], I[K]>;
58
+ } & {
59
+ [K in Exclude<keyof I, KeysOfUnion<P>>]: never;
60
+ };
61
+ export interface MessageFns<T> {
62
+ encode(message: T, writer?: BinaryWriter): BinaryWriter;
63
+ decode(input: BinaryReader | Uint8Array, length?: number): T;
64
+ fromJSON(object: any): T;
65
+ toJSON(message: T): unknown;
66
+ create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
67
+ fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
68
+ }
69
+ export {};