@cored-im/openapi-sdk 0.28.102

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.
@@ -0,0 +1,507 @@
1
+ // Copyright (c) 2026 Cored Limited
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ // Self-contained protobuf encode/decode for transport.proto.
5
+ // Implements minimal protobuf wire format (varint + length-delimited) with zero dependencies.
6
+
7
+ // ---- Minimal Protobuf Writer ----
8
+
9
+ class ProtoWriter {
10
+ private buf: Uint8Array;
11
+ private pos = 0;
12
+ private forkStack: number[] = [];
13
+
14
+ constructor() {
15
+ this.buf = new Uint8Array(256);
16
+ }
17
+
18
+ private grow(need: number): void {
19
+ if (this.pos + need <= this.buf.length) return;
20
+ let newLen = this.buf.length * 2;
21
+ while (newLen < this.pos + need) newLen *= 2;
22
+ const next = new Uint8Array(newLen);
23
+ next.set(this.buf);
24
+ this.buf = next;
25
+ }
26
+
27
+ uint32(value: number): this {
28
+ this.grow(5);
29
+ value >>>= 0;
30
+ while (value > 127) {
31
+ this.buf[this.pos++] = (value & 0x7f) | 0x80;
32
+ value >>>= 7;
33
+ }
34
+ this.buf[this.pos++] = value;
35
+ return this;
36
+ }
37
+
38
+ uint64(value: number): this {
39
+ // Handle numbers up to 2^53 (safe integer range)
40
+ this.grow(10);
41
+ let lo = value >>> 0;
42
+ let hi = ((value - lo) / 0x100000000) >>> 0;
43
+ while (hi > 0) {
44
+ this.buf[this.pos++] = (lo & 0x7f) | 0x80;
45
+ lo = ((lo >>> 7) | (hi << 25)) >>> 0;
46
+ hi >>>= 7;
47
+ }
48
+ while (lo > 127) {
49
+ this.buf[this.pos++] = (lo & 0x7f) | 0x80;
50
+ lo >>>= 7;
51
+ }
52
+ this.buf[this.pos++] = lo;
53
+ return this;
54
+ }
55
+
56
+ int32(value: number): this {
57
+ if (value >= 0) return this.uint32(value);
58
+ // Negative int32 is encoded as 10-byte varint (sign-extended to 64 bits)
59
+ this.grow(10);
60
+ for (let i = 0; i < 9; i++) {
61
+ this.buf[this.pos++] = (value & 0x7f) | 0x80;
62
+ value >>= 7;
63
+ }
64
+ this.buf[this.pos++] = 1; // sign bit
65
+ return this;
66
+ }
67
+
68
+ bytes(value: Uint8Array): this {
69
+ this.uint32(value.length);
70
+ this.grow(value.length);
71
+ this.buf.set(value, this.pos);
72
+ this.pos += value.length;
73
+ return this;
74
+ }
75
+
76
+ string(value: string): this {
77
+ const encoded = textEncoder.encode(value);
78
+ return this.bytes(encoded);
79
+ }
80
+
81
+ /** Start a nested sub-message. Call ldelim() to close it. */
82
+ fork(): this {
83
+ this.forkStack.push(this.pos);
84
+ // Reserve space — we'll patch the length in ldelim()
85
+ this.grow(5);
86
+ this.pos += 5; // max varint32 length
87
+ return this;
88
+ }
89
+
90
+ /** Close a fork: writes the sub-message length prefix. */
91
+ ldelim(): this {
92
+ const startPos = this.forkStack.pop()!;
93
+ const contentStart = startPos + 5; // content was written after the 5-byte reservation
94
+ const contentLen = this.pos - contentStart;
95
+ // Encode the length as varint
96
+ const lenBytes: number[] = [];
97
+ let v = contentLen;
98
+ while (v > 127) {
99
+ lenBytes.push((v & 0x7f) | 0x80);
100
+ v >>>= 7;
101
+ }
102
+ lenBytes.push(v);
103
+ // Move content to sit right after the length varint
104
+ const newContentStart = startPos + lenBytes.length;
105
+ this.buf.copyWithin(newContentStart, contentStart, this.pos);
106
+ // Write length varint at startPos
107
+ for (let i = 0; i < lenBytes.length; i++) {
108
+ this.buf[startPos + i] = lenBytes[i];
109
+ }
110
+ this.pos = newContentStart + contentLen;
111
+ return this;
112
+ }
113
+
114
+ finish(): Uint8Array {
115
+ return this.buf.slice(0, this.pos);
116
+ }
117
+ }
118
+
119
+ // ---- Minimal Protobuf Reader ----
120
+
121
+ class ProtoReader {
122
+ private buf: Uint8Array;
123
+ pos: number;
124
+ len: number;
125
+
126
+ constructor(data: Uint8Array) {
127
+ this.buf = data;
128
+ this.pos = 0;
129
+ this.len = data.length;
130
+ }
131
+
132
+ uint32(): number {
133
+ let value = 0;
134
+ let shift = 0;
135
+ let b: number;
136
+ do {
137
+ b = this.buf[this.pos++];
138
+ value |= (b & 0x7f) << shift;
139
+ shift += 7;
140
+ } while (b & 0x80);
141
+ return value >>> 0;
142
+ }
143
+
144
+ uint64(): number {
145
+ // Read varint as a JS number (safe up to 2^53)
146
+ let lo = 0;
147
+ let hi = 0;
148
+ let shift = 0;
149
+ let b: number;
150
+ // Read low 28 bits
151
+ for (let i = 0; i < 4; i++) {
152
+ b = this.buf[this.pos++];
153
+ lo |= (b & 0x7f) << shift;
154
+ shift += 7;
155
+ if (!(b & 0x80)) return lo >>> 0;
156
+ }
157
+ // 5th byte spans lo/hi
158
+ b = this.buf[this.pos++];
159
+ lo |= (b & 0x7f) << 28;
160
+ hi = (b & 0x7f) >> 4;
161
+ if (!(b & 0x80)) return (hi * 0x100000000 + (lo >>> 0));
162
+ shift = 3;
163
+ // Read remaining high bits
164
+ do {
165
+ b = this.buf[this.pos++];
166
+ hi |= (b & 0x7f) << shift;
167
+ shift += 7;
168
+ } while (b & 0x80);
169
+ return (hi >>> 0) * 0x100000000 + (lo >>> 0);
170
+ }
171
+
172
+ int32(): number {
173
+ return this.uint32() | 0;
174
+ }
175
+
176
+ bytes(): Uint8Array {
177
+ const len = this.uint32();
178
+ const value = this.buf.slice(this.pos, this.pos + len);
179
+ this.pos += len;
180
+ return value;
181
+ }
182
+
183
+ string(): string {
184
+ const bytes = this.bytes();
185
+ return textDecoder.decode(bytes);
186
+ }
187
+
188
+ skipType(wireType: number): void {
189
+ switch (wireType) {
190
+ case 0: // varint
191
+ while (this.buf[this.pos++] & 0x80) { /* skip */ }
192
+ break;
193
+ case 1: // 64-bit
194
+ this.pos += 8;
195
+ break;
196
+ case 2: // length-delimited
197
+ this.pos += this.uint32();
198
+ break;
199
+ case 5: // 32-bit
200
+ this.pos += 4;
201
+ break;
202
+ default:
203
+ throw new Error(`unknown wire type: ${wireType}`);
204
+ }
205
+ }
206
+ }
207
+
208
+ const textEncoder = new TextEncoder();
209
+ const textDecoder = new TextDecoder();
210
+
211
+ // ---- SecureMessage ----
212
+
213
+ export interface SecureMessage {
214
+ version: string;
215
+ timestamp: number;
216
+ nonce: string;
217
+ encryptedKey: Uint8Array;
218
+ encryptedData: Uint8Array;
219
+ }
220
+
221
+ export function encodeSecureMessage(msg: SecureMessage): Uint8Array {
222
+ const w = new ProtoWriter();
223
+ if (msg.version) w.uint32(10).string(msg.version);
224
+ if (msg.timestamp) w.uint32(16).uint64(msg.timestamp);
225
+ if (msg.nonce) w.uint32(26).string(msg.nonce);
226
+ if (msg.encryptedKey?.length) w.uint32(34).bytes(msg.encryptedKey);
227
+ if (msg.encryptedData?.length) w.uint32(42).bytes(msg.encryptedData);
228
+ return w.finish();
229
+ }
230
+
231
+ export function decodeSecureMessage(data: Uint8Array): SecureMessage {
232
+ const r = new ProtoReader(data);
233
+ const msg: SecureMessage = { version: '', timestamp: 0, nonce: '', encryptedKey: new Uint8Array(0), encryptedData: new Uint8Array(0) };
234
+ while (r.pos < r.len) {
235
+ const tag = r.uint32();
236
+ switch (tag >>> 3) {
237
+ case 1: msg.version = r.string(); break;
238
+ case 2: msg.timestamp = r.uint64(); break;
239
+ case 3: msg.nonce = r.string(); break;
240
+ case 4: msg.encryptedKey = r.bytes(); break;
241
+ case 5: msg.encryptedData = r.bytes(); break;
242
+ default: r.skipType(tag & 7); break;
243
+ }
244
+ }
245
+ return msg;
246
+ }
247
+
248
+ // ---- HttpRequest ----
249
+
250
+ export interface HttpRequest {
251
+ method: string;
252
+ path: string;
253
+ headers: Record<string, string>;
254
+ body: Uint8Array;
255
+ reqId: string;
256
+ }
257
+
258
+ export function encodeHttpRequest(msg: HttpRequest): Uint8Array {
259
+ const w = new ProtoWriter();
260
+ if (msg.method) w.uint32(10).string(msg.method);
261
+ if (msg.path) w.uint32(18).string(msg.path);
262
+ if (msg.headers) {
263
+ for (const [k, v] of Object.entries(msg.headers)) {
264
+ w.uint32(26).fork().uint32(10).string(k).uint32(18).string(v).ldelim();
265
+ }
266
+ }
267
+ if (msg.body?.length) w.uint32(34).bytes(msg.body);
268
+ if (msg.reqId) w.uint32(42).string(msg.reqId);
269
+ return w.finish();
270
+ }
271
+
272
+ export function decodeHttpRequest(data: Uint8Array): HttpRequest {
273
+ const r = new ProtoReader(data);
274
+ const msg: HttpRequest = { method: '', path: '', headers: {}, body: new Uint8Array(0), reqId: '' };
275
+ while (r.pos < r.len) {
276
+ const tag = r.uint32();
277
+ switch (tag >>> 3) {
278
+ case 1: msg.method = r.string(); break;
279
+ case 2: msg.path = r.string(); break;
280
+ case 3: {
281
+ const entryEnd = r.uint32() + r.pos;
282
+ let key = '', value = '';
283
+ while (r.pos < entryEnd) {
284
+ const entryTag = r.uint32();
285
+ switch (entryTag >>> 3) {
286
+ case 1: key = r.string(); break;
287
+ case 2: value = r.string(); break;
288
+ default: r.skipType(entryTag & 7); break;
289
+ }
290
+ }
291
+ msg.headers[key] = value;
292
+ break;
293
+ }
294
+ case 4: msg.body = r.bytes(); break;
295
+ case 5: msg.reqId = r.string(); break;
296
+ default: r.skipType(tag & 7); break;
297
+ }
298
+ }
299
+ return msg;
300
+ }
301
+
302
+ // ---- HttpResponse ----
303
+
304
+ export interface HttpResponse {
305
+ statusCode: number;
306
+ statusText: string;
307
+ headers: Record<string, string>;
308
+ body: Uint8Array;
309
+ reqId: string;
310
+ }
311
+
312
+ export function decodeHttpResponse(data: Uint8Array): HttpResponse {
313
+ const r = new ProtoReader(data);
314
+ const msg: HttpResponse = { statusCode: 0, statusText: '', headers: {}, body: new Uint8Array(0), reqId: '' };
315
+ while (r.pos < r.len) {
316
+ const tag = r.uint32();
317
+ switch (tag >>> 3) {
318
+ case 1: msg.statusCode = r.int32(); break;
319
+ case 2: msg.statusText = r.string(); break;
320
+ case 3: {
321
+ const entryEnd = r.uint32() + r.pos;
322
+ let key = '', value = '';
323
+ while (r.pos < entryEnd) {
324
+ const entryTag = r.uint32();
325
+ switch (entryTag >>> 3) {
326
+ case 1: key = r.string(); break;
327
+ case 2: value = r.string(); break;
328
+ default: r.skipType(entryTag & 7); break;
329
+ }
330
+ }
331
+ msg.headers[key] = value;
332
+ break;
333
+ }
334
+ case 4: msg.body = r.bytes(); break;
335
+ case 5: msg.reqId = r.string(); break;
336
+ default: r.skipType(tag & 7); break;
337
+ }
338
+ }
339
+ return msg;
340
+ }
341
+
342
+ // ---- WebSocketMessage ----
343
+
344
+ export interface EventHeader {
345
+ eventId: string;
346
+ eventType: string;
347
+ eventCreatedAt: number;
348
+ }
349
+
350
+ export interface WsEvent {
351
+ eventHeader?: EventHeader;
352
+ eventBody: Uint8Array;
353
+ }
354
+
355
+ export interface WebSocketMessage {
356
+ ping?: { timestamp: number };
357
+ pong?: { timestamp: number };
358
+ initRequest?: { userAgent: string };
359
+ initResponse?: Record<string, never>;
360
+ event?: WsEvent;
361
+ eventAck?: { eventId: string };
362
+ httpRequest?: HttpRequest;
363
+ httpResponse?: HttpResponse;
364
+ }
365
+
366
+ export function encodeWebSocketMessage(msg: WebSocketMessage): Uint8Array {
367
+ const w = new ProtoWriter();
368
+ if (msg.ping) {
369
+ w.uint32(10).fork();
370
+ if (msg.ping.timestamp) w.uint32(8).uint64(msg.ping.timestamp);
371
+ w.ldelim();
372
+ }
373
+ if (msg.pong) {
374
+ w.uint32(18).fork();
375
+ if (msg.pong.timestamp) w.uint32(8).uint64(msg.pong.timestamp);
376
+ w.ldelim();
377
+ }
378
+ if (msg.initRequest) {
379
+ w.uint32(26).fork();
380
+ if (msg.initRequest.userAgent) w.uint32(10).string(msg.initRequest.userAgent);
381
+ w.ldelim();
382
+ }
383
+ if (msg.initResponse) {
384
+ w.uint32(34).fork().ldelim();
385
+ }
386
+ if (msg.event) {
387
+ w.uint32(42).fork();
388
+ if (msg.event.eventHeader) {
389
+ w.uint32(10).fork();
390
+ if (msg.event.eventHeader.eventId) w.uint32(10).string(msg.event.eventHeader.eventId);
391
+ if (msg.event.eventHeader.eventType) w.uint32(18).string(msg.event.eventHeader.eventType);
392
+ if (msg.event.eventHeader.eventCreatedAt) w.uint32(24).uint64(msg.event.eventHeader.eventCreatedAt);
393
+ w.ldelim();
394
+ }
395
+ if (msg.event.eventBody?.length) w.uint32(18).bytes(msg.event.eventBody);
396
+ w.ldelim();
397
+ }
398
+ if (msg.eventAck) {
399
+ w.uint32(50).fork();
400
+ if (msg.eventAck.eventId) w.uint32(10).string(msg.eventAck.eventId);
401
+ w.ldelim();
402
+ }
403
+ if (msg.httpRequest) {
404
+ w.uint32(58).bytes(encodeHttpRequest(msg.httpRequest));
405
+ }
406
+ return w.finish();
407
+ }
408
+
409
+ export function decodeWebSocketMessage(data: Uint8Array): WebSocketMessage {
410
+ const r = new ProtoReader(data);
411
+ const msg: WebSocketMessage = {};
412
+ while (r.pos < r.len) {
413
+ const tag = r.uint32();
414
+ switch (tag >>> 3) {
415
+ case 1: { // ping
416
+ const subEnd = r.uint32() + r.pos;
417
+ const ping = { timestamp: 0 };
418
+ while (r.pos < subEnd) {
419
+ const subTag = r.uint32();
420
+ if ((subTag >>> 3) === 1) ping.timestamp = r.uint64();
421
+ else r.skipType(subTag & 7);
422
+ }
423
+ msg.ping = ping;
424
+ break;
425
+ }
426
+ case 2: { // pong
427
+ const subEnd = r.uint32() + r.pos;
428
+ const pong = { timestamp: 0 };
429
+ while (r.pos < subEnd) {
430
+ const subTag = r.uint32();
431
+ if ((subTag >>> 3) === 1) pong.timestamp = r.uint64();
432
+ else r.skipType(subTag & 7);
433
+ }
434
+ msg.pong = pong;
435
+ break;
436
+ }
437
+ case 3: { // initRequest
438
+ const subEnd = r.uint32() + r.pos;
439
+ const initReq = { userAgent: '' };
440
+ while (r.pos < subEnd) {
441
+ const subTag = r.uint32();
442
+ if ((subTag >>> 3) === 1) initReq.userAgent = r.string();
443
+ else r.skipType(subTag & 7);
444
+ }
445
+ msg.initRequest = initReq;
446
+ break;
447
+ }
448
+ case 4: { // initResponse
449
+ const subEnd = r.uint32() + r.pos;
450
+ r.pos = subEnd;
451
+ msg.initResponse = {};
452
+ break;
453
+ }
454
+ case 5: { // event
455
+ const subEnd = r.uint32() + r.pos;
456
+ const event: WsEvent = { eventBody: new Uint8Array(0) };
457
+ while (r.pos < subEnd) {
458
+ const subTag = r.uint32();
459
+ switch (subTag >>> 3) {
460
+ case 1: {
461
+ const headerEnd = r.uint32() + r.pos;
462
+ const header: EventHeader = { eventId: '', eventType: '', eventCreatedAt: 0 };
463
+ while (r.pos < headerEnd) {
464
+ const hTag = r.uint32();
465
+ switch (hTag >>> 3) {
466
+ case 1: header.eventId = r.string(); break;
467
+ case 2: header.eventType = r.string(); break;
468
+ case 3: header.eventCreatedAt = r.uint64(); break;
469
+ default: r.skipType(hTag & 7); break;
470
+ }
471
+ }
472
+ event.eventHeader = header;
473
+ break;
474
+ }
475
+ case 2: event.eventBody = r.bytes(); break;
476
+ default: r.skipType(subTag & 7); break;
477
+ }
478
+ }
479
+ msg.event = event;
480
+ break;
481
+ }
482
+ case 6: { // eventAck
483
+ const subEnd = r.uint32() + r.pos;
484
+ const ack = { eventId: '' };
485
+ while (r.pos < subEnd) {
486
+ const subTag = r.uint32();
487
+ if ((subTag >>> 3) === 1) ack.eventId = r.string();
488
+ else r.skipType(subTag & 7);
489
+ }
490
+ msg.eventAck = ack;
491
+ break;
492
+ }
493
+ case 7: {
494
+ const bytes = r.bytes();
495
+ msg.httpRequest = decodeHttpRequest(bytes);
496
+ break;
497
+ }
498
+ case 8: {
499
+ const bytes = r.bytes();
500
+ msg.httpResponse = decodeHttpResponse(bytes);
501
+ break;
502
+ }
503
+ default: r.skipType(tag & 7); break;
504
+ }
505
+ }
506
+ return msg;
507
+ }
@@ -0,0 +1,11 @@
1
+ // Code generated by Cored SDK Generator. DO NOT EDIT.
2
+ import type { Config } from '@/core/config';
3
+ import { V1 } from './v1/index';
4
+
5
+ export class Service {
6
+ public readonly v1: V1;
7
+
8
+ constructor(config: Config) {
9
+ this.v1 = new V1(config);
10
+ }
11
+ }
@@ -0,0 +1,41 @@
1
+ // Code generated by Cored SDK Generator. DO NOT EDIT.
2
+ import type { Config } from '@/core/config';
3
+ import type { CreateTypingReq, CreateTypingResp, DeleteTypingReq, DeleteTypingResp } from './chat_model';
4
+
5
+ export class Chat {
6
+ private readonly config: Config;
7
+
8
+ constructor(config: Config) {
9
+ this.config = config;
10
+ }
11
+
12
+ /**
13
+ * Set typing status
14
+ *
15
+ * Set the typing status, lasts only 5 seconds, direct messages only
16
+ */
17
+ async createTyping(req: CreateTypingReq): Promise<CreateTypingResp> {
18
+ const resp = await this.config.apiClient.request({
19
+ method: 'POST',
20
+ path: `/oapi/im/v1/chats/${req.chat_id ?? ''}/typing`,
21
+ body: req,
22
+ withAppAccessToken: true,
23
+ });
24
+ return await resp.json() as CreateTypingResp;
25
+ }
26
+
27
+ /**
28
+ * Clear typing status
29
+ *
30
+ * Direct messages only
31
+ */
32
+ async deleteTyping(req: DeleteTypingReq): Promise<DeleteTypingResp> {
33
+ const resp = await this.config.apiClient.request({
34
+ method: 'DELETE',
35
+ path: `/oapi/im/v1/chats/${req.chat_id ?? ''}/typing`,
36
+ body: req,
37
+ withAppAccessToken: true,
38
+ });
39
+ return await resp.json() as DeleteTypingResp;
40
+ }
41
+ }
@@ -0,0 +1,19 @@
1
+ // Code generated by Cored SDK Generator. DO NOT EDIT.
2
+
3
+ /** Set typing status (Request) */
4
+ export interface CreateTypingReq {
5
+ chat_id?: string; // Chat ID
6
+ }
7
+
8
+ /** Set typing status (Response) */
9
+ export interface CreateTypingResp {
10
+ }
11
+
12
+ /** Clear typing status (Request) */
13
+ export interface DeleteTypingReq {
14
+ chat_id?: string; // Chat ID
15
+ }
16
+
17
+ /** Clear typing status (Response) */
18
+ export interface DeleteTypingResp {
19
+ }
@@ -0,0 +1,9 @@
1
+ // Code generated by Cored SDK Generator. DO NOT EDIT.
2
+ export { V1 } from './v1';
3
+ export { Chat } from './chat';
4
+ export * from './chat_model';
5
+ export { Message } from './message';
6
+ export * from './message_model';
7
+ export { MessageEvent } from './message_event';
8
+ export type * from './message_event';
9
+ export * from './message_enum';
@@ -0,0 +1,59 @@
1
+ // Code generated by Cored SDK Generator. DO NOT EDIT.
2
+ import type { Config } from '@/core/config';
3
+ import { MessageEvent } from './message_event';
4
+ import type { GetMessageReq, GetMessageResp, ReadMessageReq, ReadMessageResp, RecallMessageReq, RecallMessageResp, SendMessageReq, SendMessageResp } from './message_model';
5
+
6
+ export class Message {
7
+ private readonly config: Config;
8
+ public readonly Event: MessageEvent;
9
+
10
+ constructor(config: Config) {
11
+ this.config = config;
12
+ this.Event = new MessageEvent(config);
13
+ }
14
+
15
+ /** Send a message */
16
+ async sendMessage(req: SendMessageReq): Promise<SendMessageResp> {
17
+ const resp = await this.config.apiClient.request({
18
+ method: 'POST',
19
+ path: '/oapi/im/v1/messages',
20
+ body: req,
21
+ withAppAccessToken: true,
22
+ withWebSocket: true,
23
+ });
24
+ return await resp.json() as SendMessageResp;
25
+ }
26
+
27
+ /** Get a message */
28
+ async getMessage(req: GetMessageReq): Promise<GetMessageResp> {
29
+ const resp = await this.config.apiClient.request({
30
+ method: 'GET',
31
+ path: `/oapi/im/v1/messages/${req.message_id ?? ''}`,
32
+ body: req,
33
+ withAppAccessToken: true,
34
+ });
35
+ return await resp.json() as GetMessageResp;
36
+ }
37
+
38
+ /** Recall a message */
39
+ async recallMessage(req: RecallMessageReq): Promise<RecallMessageResp> {
40
+ const resp = await this.config.apiClient.request({
41
+ method: 'POST',
42
+ path: `/oapi/im/v1/messages/${req.message_id ?? ''}/recall`,
43
+ body: req,
44
+ withAppAccessToken: true,
45
+ });
46
+ return await resp.json() as RecallMessageResp;
47
+ }
48
+
49
+ /** Mark message as read */
50
+ async readMessage(req: ReadMessageReq): Promise<ReadMessageResp> {
51
+ const resp = await this.config.apiClient.request({
52
+ method: 'POST',
53
+ path: `/oapi/im/v1/messages/${req.message_id ?? ''}/read`,
54
+ body: req,
55
+ withAppAccessToken: true,
56
+ });
57
+ return await resp.json() as ReadMessageResp;
58
+ }
59
+ }
@@ -0,0 +1,20 @@
1
+ // Code generated by Cored SDK Generator. DO NOT EDIT.
2
+
3
+ /** Message type */
4
+ export const MessageType_TEXT = 'text'; // Text
5
+ export const MessageType_IMAGE = 'image'; // Image
6
+ export const MessageType_STICKER = 'sticker'; // Sticker
7
+ export const MessageType_VIDEO = 'video'; // Video
8
+ export const MessageType_AUDIO = 'audio'; // Audio
9
+ export const MessageType_FILE = 'file'; // File
10
+ export const MessageType_USER_CARD = 'user_card'; // User card
11
+ export const MessageType_GROUP_CARD = 'group_card'; // Group card
12
+ export const MessageType_GROUP_ANNOUNCEMENT = 'group_announcement'; // Group announcement
13
+ export const MessageType_CARD = 'card'; // Card
14
+
15
+ /** Attachment type */
16
+ export const MessageTextAttachmentType_IMAGE = 'image'; // Image
17
+
18
+ /** Message status */
19
+ export const MessageStatus_VISIBLE = 'visible'; // Visible
20
+ export const MessageStatus_RECALLED = 'recalled'; // Recalled