@nadohq/mobile-client 0.65.0 → 0.67.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.
- package/README.md +202 -10
- package/dist/{MobileClient-CfVZXTcz.cjs → MobileClient-vuI5wlB_.cjs} +303 -21
- package/dist/MobileClient-vuI5wlB_.cjs.map +1 -0
- package/dist/MobileClient.cjs +1 -1
- package/dist/MobileClient.d.cts +175 -20
- package/dist/MobileClient.d.cts.map +1 -1
- package/dist/MobileClient.d.ts +175 -20
- package/dist/MobileClient.d.ts.map +1 -1
- package/dist/MobileClient.js +303 -21
- package/dist/MobileClient.js.map +1 -1
- package/dist/{MobileServerFailureError-BZVwlsMg.d.ts → MobileServerFailureError-BeCCNShj.d.cts} +2 -3
- package/dist/MobileServerFailureError-BeCCNShj.d.cts.map +1 -0
- package/dist/{MobileServerFailureError-CbtK8kD4.d.cts → MobileServerFailureError-hHv28weI.d.ts} +2 -3
- package/dist/MobileServerFailureError-hHv28weI.d.ts.map +1 -0
- package/dist/MobileUnsupportedNotificationRouteError-DpiNBvvY.d.cts +15 -0
- package/dist/MobileUnsupportedNotificationRouteError-DpiNBvvY.d.cts.map +1 -0
- package/dist/MobileUnsupportedNotificationRouteError-DpiNBvvY.d.ts +15 -0
- package/dist/MobileUnsupportedNotificationRouteError-DpiNBvvY.d.ts.map +1 -0
- package/dist/{buildSignedMobileRequest-C1v0flCR.d.cts → buildSignedMobileRequest-DcEMKU_4.d.cts} +2 -2
- package/dist/{buildSignedMobileRequest-C1v0flCR.d.cts.map → buildSignedMobileRequest-DcEMKU_4.d.cts.map} +1 -1
- package/dist/{buildSignedMobileRequest-UeeWdYGU.d.ts → buildSignedMobileRequest-DlTMvoXR.d.ts} +2 -2
- package/dist/{buildSignedMobileRequest-UeeWdYGU.d.ts.map → buildSignedMobileRequest-DlTMvoXR.d.ts.map} +1 -1
- package/dist/{canonicalize-5eeZrkzQ.d.ts → canonicalize-BOZlflI3.d.ts} +2 -2
- package/dist/canonicalize-BOZlflI3.d.ts.map +1 -0
- package/dist/{canonicalize-CBaZprTo.d.cts → canonicalize-BvCozzvJ.d.cts} +2 -2
- package/dist/canonicalize-BvCozzvJ.d.cts.map +1 -0
- package/dist/{clientTypes-_mEgzmNs.d.cts → clientTypes-KpHlCDGZ.d.cts} +341 -38
- package/dist/clientTypes-KpHlCDGZ.d.cts.map +1 -0
- package/dist/{clientTypes-C9dJufxk.d.ts → clientTypes-XRI41VdC.d.ts} +341 -38
- package/dist/clientTypes-XRI41VdC.d.ts.map +1 -0
- package/dist/dataMappers.cjs +257 -20
- package/dist/dataMappers.cjs.map +1 -1
- package/dist/dataMappers.d.cts +98 -15
- package/dist/dataMappers.d.cts.map +1 -1
- package/dist/dataMappers.d.ts +98 -15
- package/dist/dataMappers.d.ts.map +1 -1
- package/dist/dataMappers.js +242 -20
- package/dist/dataMappers.js.map +1 -1
- package/dist/{eip712MethodByType-D8jLoxDu.d.cts → eip712MethodByType-DyAmzH7b.d.cts} +2 -2
- package/dist/eip712MethodByType-DyAmzH7b.d.cts.map +1 -0
- package/dist/{eip712MethodByType-DcUh8h-l.d.ts → eip712MethodByType-qSSAF6i2.d.ts} +2 -2
- package/dist/eip712MethodByType-qSSAF6i2.d.ts.map +1 -0
- package/dist/feed-BrgkFqP3.d.cts +23 -0
- package/dist/feed-BrgkFqP3.d.cts.map +1 -0
- package/dist/feed-DcbhLoo1.d.ts +23 -0
- package/dist/feed-DcbhLoo1.d.ts.map +1 -0
- package/dist/index-BVVgDSdq.d.cts +1 -0
- package/dist/index-BVVgDSdq.d.ts +1 -0
- package/dist/index.cjs +8 -2
- package/dist/index.d.cts +14 -16
- package/dist/index.d.ts +14 -16
- package/dist/index.js +4 -3
- package/dist/{mobileErrorCodes-CmjYEIYm.d.ts → mobileErrorCodes-CdwX6QTO.d.cts} +8 -3
- package/dist/mobileErrorCodes-CdwX6QTO.d.cts.map +1 -0
- package/dist/{mobileErrorCodes-CmjYEIYm.d.cts → mobileErrorCodes-CdwX6QTO.d.ts} +8 -3
- package/dist/mobileErrorCodes-CdwX6QTO.d.ts.map +1 -0
- package/dist/{payloadHash-DhHmgRqL.d.cts → payloadHash-BgGSZock.d.cts} +2 -2
- package/dist/payloadHash-BgGSZock.d.cts.map +1 -0
- package/dist/{payloadHash-E1_8fpLW.d.ts → payloadHash-Bi6upCLQ.d.ts} +2 -2
- package/dist/payloadHash-Bi6upCLQ.d.ts.map +1 -0
- package/dist/{serverExecuteTypes-BwWGspOg.d.ts → serverExecuteTypes-DuCWe_H_.d.cts} +23 -14
- package/dist/serverExecuteTypes-DuCWe_H_.d.cts.map +1 -0
- package/dist/{serverExecuteTypes-B-OJok19.d.cts → serverExecuteTypes-usJ6HMJv.d.ts} +23 -14
- package/dist/serverExecuteTypes-usJ6HMJv.d.ts.map +1 -0
- package/dist/{serverModelTypes-CiA-dy1R.d.ts → serverModelTypes-CTHMNIQS.d.cts} +170 -13
- package/dist/serverModelTypes-CTHMNIQS.d.cts.map +1 -0
- package/dist/{serverModelTypes-CiA-dy1R.d.cts → serverModelTypes-CTHMNIQS.d.ts} +170 -13
- package/dist/serverModelTypes-CTHMNIQS.d.ts.map +1 -0
- package/dist/{serverResponseGuards-CShiXpHT.d.ts → serverResponseGuards-CzmldAad.d.cts} +2 -2
- package/dist/{serverResponseGuards-BW69PS7O.d.cts.map → serverResponseGuards-CzmldAad.d.cts.map} +1 -1
- package/dist/{serverResponseGuards-BW69PS7O.d.cts → serverResponseGuards-Dvkbjp2_.d.ts} +2 -2
- package/dist/{serverResponseGuards-CShiXpHT.d.ts.map → serverResponseGuards-Dvkbjp2_.d.ts.map} +1 -1
- package/dist/signing/buildSignedMobileRequest.d.cts +1 -1
- package/dist/signing/buildSignedMobileRequest.d.ts +1 -1
- package/dist/signing/canonicalize.cjs +53 -2
- package/dist/signing/canonicalize.cjs.map +1 -1
- package/dist/signing/canonicalize.d.cts +1 -1
- package/dist/signing/canonicalize.d.ts +1 -1
- package/dist/signing/canonicalize.js +53 -2
- package/dist/signing/canonicalize.js.map +1 -1
- package/dist/signing/eip712MethodByType.cjs +7 -0
- package/dist/signing/eip712MethodByType.cjs.map +1 -1
- package/dist/signing/eip712MethodByType.d.cts +1 -1
- package/dist/signing/eip712MethodByType.d.ts +1 -1
- package/dist/signing/eip712MethodByType.js +7 -0
- package/dist/signing/eip712MethodByType.js.map +1 -1
- package/dist/signing/index.d.cts +5 -5
- package/dist/signing/index.d.ts +5 -5
- package/dist/signing/payloadHash.cjs +1 -1
- package/dist/signing/payloadHash.d.cts +1 -1
- package/dist/signing/payloadHash.d.ts +1 -1
- package/dist/signing/payloadHash.js +1 -1
- package/dist/signing/types.d.cts +1 -1
- package/dist/signing/types.d.ts +1 -1
- package/dist/types/MobileServerFailureError.d.cts +1 -1
- package/dist/types/MobileServerFailureError.d.ts +1 -1
- package/dist/types/MobileUnsupportedNotificationRouteError.cjs +19 -0
- package/dist/types/MobileUnsupportedNotificationRouteError.cjs.map +1 -0
- package/dist/types/MobileUnsupportedNotificationRouteError.d.cts +2 -0
- package/dist/types/MobileUnsupportedNotificationRouteError.d.ts +2 -0
- package/dist/types/MobileUnsupportedNotificationRouteError.js +18 -0
- package/dist/types/MobileUnsupportedNotificationRouteError.js.map +1 -0
- package/dist/types/clientTypes.d.cts +2 -2
- package/dist/types/clientTypes.d.ts +2 -2
- package/dist/types/index.cjs +4 -0
- package/dist/types/index.d.cts +8 -9
- package/dist/types/index.d.ts +8 -9
- package/dist/types/index.js +3 -2
- package/dist/types/mobileErrorCodes.cjs +11 -1
- package/dist/types/mobileErrorCodes.cjs.map +1 -1
- package/dist/types/mobileErrorCodes.d.cts +1 -1
- package/dist/types/mobileErrorCodes.d.ts +1 -1
- package/dist/types/mobileErrorCodes.js +11 -1
- package/dist/types/mobileErrorCodes.js.map +1 -1
- package/dist/types/serverBaseTypes.d.cts +1 -1
- package/dist/types/serverBaseTypes.d.ts +1 -1
- package/dist/types/serverExecuteTypes.d.cts +2 -2
- package/dist/types/serverExecuteTypes.d.ts +2 -2
- package/dist/types/serverModelTypes.cjs +15 -0
- package/dist/types/serverModelTypes.cjs.map +1 -1
- package/dist/types/serverModelTypes.d.cts +2 -2
- package/dist/types/serverModelTypes.d.ts +2 -2
- package/dist/types/serverModelTypes.js +14 -1
- package/dist/types/serverModelTypes.js.map +1 -1
- package/dist/types/serverQueryTypes.d.cts +2 -2
- package/dist/types/serverQueryTypes.d.ts +2 -2
- package/dist/types/serverRequestTypes.d.cts +2 -2
- package/dist/types/serverRequestTypes.d.ts +2 -2
- package/dist/types-CByl_NyJ.d.ts +825 -0
- package/dist/types-CByl_NyJ.d.ts.map +1 -0
- package/dist/types-CR5iaKR4.d.cts +825 -0
- package/dist/types-CR5iaKR4.d.cts.map +1 -0
- package/dist/utils/buildMobileFeedImageMultipart.cjs +31 -0
- package/dist/utils/buildMobileFeedImageMultipart.cjs.map +1 -0
- package/dist/utils/buildMobileFeedImageMultipart.d.cts +15 -0
- package/dist/utils/buildMobileFeedImageMultipart.d.cts.map +1 -0
- package/dist/utils/buildMobileFeedImageMultipart.d.ts +15 -0
- package/dist/utils/buildMobileFeedImageMultipart.d.ts.map +1 -0
- package/dist/utils/buildMobileFeedImageMultipart.js +30 -0
- package/dist/utils/buildMobileFeedImageMultipart.js.map +1 -0
- package/dist/utils/feed.cjs +12 -0
- package/dist/utils/feed.cjs.map +1 -1
- package/dist/utils/feed.d.cts +2 -2
- package/dist/utils/feed.d.ts +2 -2
- package/dist/utils/feed.js +11 -1
- package/dist/utils/feed.js.map +1 -1
- package/dist/utils/index.cjs +3 -1
- package/dist/utils/index.d.cts +3 -3
- package/dist/utils/index.d.ts +3 -3
- package/dist/utils/index.js +2 -2
- package/dist/utils/serverResponseGuards.d.cts +1 -1
- package/dist/utils/serverResponseGuards.d.ts +1 -1
- package/package.json +3 -3
- package/src/MobileClient.ts +444 -19
- package/src/dataMappers.test.ts +511 -6
- package/src/dataMappers.ts +325 -24
- package/src/feedImages.test.ts +309 -0
- package/src/notifications.test.ts +950 -0
- package/src/signing/canonicalize.ts +72 -0
- package/src/signing/eip712MethodByType.ts +10 -0
- package/src/signing/signing.test.ts +67 -1
- package/src/signing/types.ts +55 -9
- package/src/socialFeed.test.ts +63 -2
- package/src/types/MobileUnsupportedNotificationRouteError.ts +16 -0
- package/src/types/clientTypes.ts +427 -36
- package/src/types/index.ts +1 -0
- package/src/types/mobileErrorCodes.ts +10 -0
- package/src/types/serverExecuteTypes.ts +22 -10
- package/src/types/serverModelTypes.ts +216 -11
- package/src/types/serverQueryTypes.ts +106 -9
- package/src/types/serverRequestTypes.ts +114 -17
- package/src/utils/buildMobileFeedImageMultipart.test.ts +45 -0
- package/src/utils/buildMobileFeedImageMultipart.ts +36 -0
- package/src/utils/feed.ts +16 -0
- package/dist/MobileClient-CfVZXTcz.cjs.map +0 -1
- package/dist/MobileServerFailureError-BZVwlsMg.d.ts.map +0 -1
- package/dist/MobileServerFailureError-CbtK8kD4.d.cts.map +0 -1
- package/dist/canonicalize-5eeZrkzQ.d.ts.map +0 -1
- package/dist/canonicalize-CBaZprTo.d.cts.map +0 -1
- package/dist/clientTypes-C9dJufxk.d.ts.map +0 -1
- package/dist/clientTypes-_mEgzmNs.d.cts.map +0 -1
- package/dist/eip712MethodByType-D8jLoxDu.d.cts.map +0 -1
- package/dist/eip712MethodByType-DcUh8h-l.d.ts.map +0 -1
- package/dist/feed-DTJlsg8W.d.cts +0 -14
- package/dist/feed-DTJlsg8W.d.cts.map +0 -1
- package/dist/feed-DTJlsg8W.d.ts +0 -14
- package/dist/feed-DTJlsg8W.d.ts.map +0 -1
- package/dist/mobileErrorCodes-CmjYEIYm.d.cts.map +0 -1
- package/dist/mobileErrorCodes-CmjYEIYm.d.ts.map +0 -1
- package/dist/payloadHash-DhHmgRqL.d.cts.map +0 -1
- package/dist/payloadHash-E1_8fpLW.d.ts.map +0 -1
- package/dist/serverBaseTypes-B5J1_TyC.d.cts +0 -25
- package/dist/serverBaseTypes-B5J1_TyC.d.cts.map +0 -1
- package/dist/serverBaseTypes-DnLzsdm-.d.ts +0 -25
- package/dist/serverBaseTypes-DnLzsdm-.d.ts.map +0 -1
- package/dist/serverExecuteTypes-B-OJok19.d.cts.map +0 -1
- package/dist/serverExecuteTypes-BwWGspOg.d.ts.map +0 -1
- package/dist/serverModelTypes-CiA-dy1R.d.cts.map +0 -1
- package/dist/serverModelTypes-CiA-dy1R.d.ts.map +0 -1
- package/dist/serverQueryTypes-CJcjLB7n.d.ts +0 -283
- package/dist/serverQueryTypes-CJcjLB7n.d.ts.map +0 -1
- package/dist/serverQueryTypes-V1f9yE7L.d.cts +0 -283
- package/dist/serverQueryTypes-V1f9yE7L.d.cts.map +0 -1
- package/dist/serverRequestTypes-CRlkNSu5.d.cts +0 -270
- package/dist/serverRequestTypes-CRlkNSu5.d.cts.map +0 -1
- package/dist/serverRequestTypes-DZoOhV2o.d.ts +0 -270
- package/dist/serverRequestTypes-DZoOhV2o.d.ts.map +0 -1
- package/dist/types-BiRmH5Iv.d.cts +0 -108
- package/dist/types-BiRmH5Iv.d.cts.map +0 -1
- package/dist/types-DoJuq0Ij.d.ts +0 -108
- package/dist/types-DoJuq0Ij.d.ts.map +0 -1
|
@@ -8,7 +8,9 @@ import {
|
|
|
8
8
|
MobileServerSocialFeedDrawing,
|
|
9
9
|
MobileServerSocialFeedItem,
|
|
10
10
|
MobileServerSocialFeedReply,
|
|
11
|
+
MobileServerSocialFeedUploadedImage,
|
|
11
12
|
} from './serverModelTypes';
|
|
13
|
+
import { MobileServerNotificationSettingsV2Response } from './serverQueryTypes';
|
|
12
14
|
import {
|
|
13
15
|
MobileServerExecuteRequestType,
|
|
14
16
|
MobileServerPublicExecuteRequestByType,
|
|
@@ -80,15 +82,31 @@ export interface MobileServerAvatarUploadResponse {
|
|
|
80
82
|
expires_in_seconds: number;
|
|
81
83
|
}
|
|
82
84
|
|
|
85
|
+
/** Ready image returned by a direct multipart upload. */
|
|
86
|
+
export interface MobileServerSocialFeedImageUploadResponse {
|
|
87
|
+
/** Ready image metadata, including original and thumbnail paths. */
|
|
88
|
+
image: MobileServerSocialFeedUploadedImage;
|
|
89
|
+
}
|
|
90
|
+
|
|
83
91
|
/**
|
|
84
92
|
* Success payloads for each signed `execute`, keyed by request `type`. Mutations return either the success
|
|
85
93
|
* envelope alone or authoritative post-commit state; avatar upload creation returns a temporary grant.
|
|
86
94
|
*/
|
|
87
95
|
export interface MobileServerExecuteResponseByType {
|
|
96
|
+
/** Capability-aware device registration returns only status. */
|
|
97
|
+
register_expo_token_v2: MobileServerEmptyExecuteResponse;
|
|
98
|
+
/** Re-query subscriptions after success to obtain the new revision. */
|
|
99
|
+
update_notification_subscriptions: MobileServerEmptyExecuteResponse;
|
|
100
|
+
/** Atomic event recording returns only status. */
|
|
101
|
+
record_product_events: MobileServerEmptyExecuteResponse;
|
|
88
102
|
/** Published or idempotently recovered item. */
|
|
89
103
|
create_feed_post: MobileServerSocialFeedPostResponse;
|
|
90
104
|
/** Atomically published reply and updated count. */
|
|
91
105
|
create_feed_comment: MobileServerSocialFeedCommentResponse;
|
|
106
|
+
/** Direct post-image upload; the image is ready immediately. */
|
|
107
|
+
create_feed_post_image_uploads: MobileServerSocialFeedImageUploadResponse;
|
|
108
|
+
/** Direct comment-image upload; the image is ready immediately. */
|
|
109
|
+
create_feed_comment_image_uploads: MobileServerSocialFeedImageUploadResponse;
|
|
92
110
|
/** First attached drawing. */
|
|
93
111
|
create_feed_chart_drawing: MobileServerSocialFeedDrawingMutationResponse;
|
|
94
112
|
/** Replaced or idempotently recovered drawing. */
|
|
@@ -159,14 +177,6 @@ export interface MobileServerSocialFeedLikeResponse {
|
|
|
159
177
|
version: string;
|
|
160
178
|
}
|
|
161
179
|
|
|
162
|
-
/** Exposure counts deduplicated by browsing credential, item, and UTC day. */
|
|
163
|
-
export interface MobileServerSocialFeedViewsResponse {
|
|
164
|
-
/** Newly counted items. */
|
|
165
|
-
accepted_item_ids: string[];
|
|
166
|
-
/** Already counted items. */
|
|
167
|
-
duplicate_item_ids: string[];
|
|
168
|
-
}
|
|
169
|
-
|
|
170
180
|
/** Page lease result; this response does not carry as_of_ms. */
|
|
171
181
|
export interface MobileServerSocialFeedPresenceResponse {
|
|
172
182
|
/** Active visitor count. */
|
|
@@ -181,12 +191,14 @@ export interface MobileServerSocialFeedPresenceResponse {
|
|
|
181
191
|
|
|
182
192
|
/** Response payloads for unsigned writes. */
|
|
183
193
|
export interface MobileServerPublicExecuteResponseByType {
|
|
194
|
+
/** Saved document, including the advanced settings revision. */
|
|
195
|
+
update_notification_settings_v2: MobileServerNotificationSettingsV2Response;
|
|
184
196
|
/** Token removal returns only the success envelope. */
|
|
185
197
|
unregister_expo_token: MobileServerEmptyExecuteResponse;
|
|
186
198
|
/** Preference updates return only the success envelope. */
|
|
187
199
|
update_preferences: MobileServerEmptyExecuteResponse;
|
|
188
|
-
/**
|
|
189
|
-
record_feed_views:
|
|
200
|
+
/** Batch views return only status; no per-target result or count. */
|
|
201
|
+
record_feed_views: MobileServerEmptyExecuteResponse;
|
|
190
202
|
/** Page lease result. */
|
|
191
203
|
position_presence: MobileServerSocialFeedPresenceResponse;
|
|
192
204
|
}
|
|
@@ -33,6 +33,51 @@ export interface MobileServerAvatarPreset {
|
|
|
33
33
|
*/
|
|
34
34
|
export type MobileNotificationPlatform = 'ios' | 'android';
|
|
35
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Notification types supported by the v2 payload protocol.
|
|
38
|
+
*/
|
|
39
|
+
export type MobileNotificationTypeId =
|
|
40
|
+
| 'new_follower'
|
|
41
|
+
| 'followed_you_back'
|
|
42
|
+
| 'order_fill'
|
|
43
|
+
| 'order_update'
|
|
44
|
+
| 'liquidation'
|
|
45
|
+
| 'trader_opened'
|
|
46
|
+
| 'trader_closed'
|
|
47
|
+
| 'position_milestone'
|
|
48
|
+
| 'market_movement'
|
|
49
|
+
| 'trader_streak'
|
|
50
|
+
| 'account_drama'
|
|
51
|
+
| 'weekly_digest';
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Named navigation destinations supported by notification payloads.
|
|
55
|
+
*/
|
|
56
|
+
export type MobileNotificationRouteName = MobileServerNotificationRoute['name'];
|
|
57
|
+
|
|
58
|
+
/** Position milestone options supported by notification settings. */
|
|
59
|
+
export const MOBILE_NOTIFICATION_POSITION_THRESHOLDS = [10, 25, 50] as const;
|
|
60
|
+
|
|
61
|
+
/** Minimum trade-size options, in whole USD, supported by notification settings. */
|
|
62
|
+
export const MOBILE_NOTIFICATION_MIN_TRADE_SIZES_USD = [
|
|
63
|
+
0, 100, 1000, 10000,
|
|
64
|
+
] as const;
|
|
65
|
+
|
|
66
|
+
/** Supported notification position milestone threshold. */
|
|
67
|
+
export type MobileNotificationPositionThreshold =
|
|
68
|
+
(typeof MOBILE_NOTIFICATION_POSITION_THRESHOLDS)[number];
|
|
69
|
+
|
|
70
|
+
/** Supported notification minimum trade size, in whole USD. */
|
|
71
|
+
export type MobileNotificationMinTradeSizeUsd =
|
|
72
|
+
(typeof MOBILE_NOTIFICATION_MIN_TRADE_SIZES_USD)[number];
|
|
73
|
+
|
|
74
|
+
/** Supported product analytics interaction. */
|
|
75
|
+
export type MobileProductEventName =
|
|
76
|
+
| 'notif_opened'
|
|
77
|
+
| 'market_viewed'
|
|
78
|
+
| 'chart_opened'
|
|
79
|
+
| 'search';
|
|
80
|
+
|
|
36
81
|
/**
|
|
37
82
|
* Category of push notification.
|
|
38
83
|
*/
|
|
@@ -223,6 +268,127 @@ export interface MobileServerNotificationPreferences {
|
|
|
223
268
|
categories: MobileServerNotificationCategoryPreference[];
|
|
224
269
|
}
|
|
225
270
|
|
|
271
|
+
/**
|
|
272
|
+
* Stored push-device metadata shared by registration requests and token ownership responses.
|
|
273
|
+
*/
|
|
274
|
+
export interface MobileServerNotificationDeviceMetadata {
|
|
275
|
+
/** Device operating system. */
|
|
276
|
+
platform: MobileNotificationPlatform;
|
|
277
|
+
/** Locale tag, or null when absent; at most 35 UTF-8 bytes. */
|
|
278
|
+
locale: string | null;
|
|
279
|
+
/** App version, or null when absent; at most 64 UTF-8 bytes. */
|
|
280
|
+
app_version: string | null;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Device capabilities shared by v2 registration and v1/v2 registration queries.
|
|
285
|
+
*/
|
|
286
|
+
export interface MobileServerNotificationCapabilities {
|
|
287
|
+
/** Exactly one supported payload version. */
|
|
288
|
+
payload_versions: [1] | [2];
|
|
289
|
+
/** Supported subset of the registered notification types. */
|
|
290
|
+
type_ids: MobileNotificationTypeId[];
|
|
291
|
+
/** Supported subset of the named destinations. */
|
|
292
|
+
routes: MobileNotificationRouteName[];
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Server-side wallet settings; all fields are required on replacement.
|
|
297
|
+
*/
|
|
298
|
+
export interface MobileServerNotificationSettings {
|
|
299
|
+
/** Own position milestones and the initial weekly digest. */
|
|
300
|
+
my_positions: boolean;
|
|
301
|
+
/** One to three unique values; the minimum selects the starting milestone tier. */
|
|
302
|
+
position_thresholds: MobileNotificationPositionThreshold[];
|
|
303
|
+
/** Combined order fill/update switch; does not control liquidation notifications. */
|
|
304
|
+
my_orders: boolean;
|
|
305
|
+
/** Ordinary followed-trader notifications; enabled bells override this switch. */
|
|
306
|
+
following_trades: boolean;
|
|
307
|
+
/** Notifications about posts by followed traders. */
|
|
308
|
+
following_posts: boolean;
|
|
309
|
+
/** Minimum trade size for trade notifications, in whole USD. */
|
|
310
|
+
min_trade_size_usd: MobileNotificationMinTradeSizeUsd;
|
|
311
|
+
/** New followers and follow-backs. */
|
|
312
|
+
new_followers: boolean;
|
|
313
|
+
/** Maps to the legacy announcement preference. */
|
|
314
|
+
announcements: boolean;
|
|
315
|
+
/** Opt-in trader streak and account drama discovery notifications. */
|
|
316
|
+
discovery: boolean;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* Server-side allowlisted destination; notification data must never be interpreted as an arbitrary URL.
|
|
321
|
+
*/
|
|
322
|
+
export type MobileServerNotificationRoute =
|
|
323
|
+
| {
|
|
324
|
+
/** Public profile destination. */
|
|
325
|
+
name: 'profile';
|
|
326
|
+
/** Profile subaccount as bytes32. */
|
|
327
|
+
subaccount: Hex;
|
|
328
|
+
}
|
|
329
|
+
| {
|
|
330
|
+
/** Market destination. */
|
|
331
|
+
name: 'market';
|
|
332
|
+
/** Positive product ID. */
|
|
333
|
+
product_id: number;
|
|
334
|
+
}
|
|
335
|
+
| {
|
|
336
|
+
/** Own portfolio destination. */
|
|
337
|
+
name: 'portfolio';
|
|
338
|
+
};
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Server-side v2 push/inbox navigation data, not a complete historical trade or notification body.
|
|
342
|
+
*/
|
|
343
|
+
export interface MobileServerNotificationPayloadV2 {
|
|
344
|
+
/** Payload protocol version. */
|
|
345
|
+
payload_version: 2;
|
|
346
|
+
/** Logical notification UUID, used for click deduplication. */
|
|
347
|
+
notification_id: string;
|
|
348
|
+
/** Intended wallet; private navigation must wait for this wallet to connect. */
|
|
349
|
+
recipient_wallet: Hex;
|
|
350
|
+
/** Registered notification type. */
|
|
351
|
+
type_id: MobileNotificationTypeId;
|
|
352
|
+
/** Supported template version. */
|
|
353
|
+
template_version: 1;
|
|
354
|
+
/** Named destination and its parameters. */
|
|
355
|
+
route: MobileServerNotificationRoute;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* Server-side accepted logical notification; does not prove device delivery or read status.
|
|
360
|
+
*/
|
|
361
|
+
export interface MobileServerNotificationInboxItem {
|
|
362
|
+
/** Logical notification UUID. */
|
|
363
|
+
notification_id: string;
|
|
364
|
+
/** Registered notification type. */
|
|
365
|
+
type_id: MobileNotificationTypeId;
|
|
366
|
+
/** Navigation data, without title, body, or read state. */
|
|
367
|
+
data: MobileServerNotificationPayloadV2;
|
|
368
|
+
/** Intent acceptance time in milliseconds. */
|
|
369
|
+
created_at: number;
|
|
370
|
+
/** Backend-computed trade attribution. */
|
|
371
|
+
trade_within_24h: boolean;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* Server-side product analytics event; unused nullable fields must be explicitly null.
|
|
376
|
+
*/
|
|
377
|
+
export interface MobileServerProductEvent {
|
|
378
|
+
/** Stable event UUID; reuse across retries. */
|
|
379
|
+
client_event_id: string;
|
|
380
|
+
/** Supported interaction; notif_opened is not a read-state mutation. */
|
|
381
|
+
event_name: MobileProductEventName;
|
|
382
|
+
/** Required for notif_opened and owned by the signing wallet; otherwise null. */
|
|
383
|
+
notification_id: string | null;
|
|
384
|
+
/** Actual event time in milliseconds, within the past 7 days or next 5 minutes. */
|
|
385
|
+
occurred_at: number;
|
|
386
|
+
/** Required for market_viewed/chart_opened; otherwise null. */
|
|
387
|
+
product_id: number | null;
|
|
388
|
+
/** Required for search, nonblank and at most 80 Unicode characters; otherwise null. */
|
|
389
|
+
query: string | null;
|
|
390
|
+
}
|
|
391
|
+
|
|
226
392
|
/** Content filters accepted by the six social feed lists. Empty or omitted means all. */
|
|
227
393
|
export type MobileSocialFeedType =
|
|
228
394
|
| 'open'
|
|
@@ -426,16 +592,47 @@ export interface MobileServerSocialFeedCommentPreview {
|
|
|
426
592
|
items: MobileServerSocialFeedReply[];
|
|
427
593
|
/** Comment count. */
|
|
428
594
|
total_count: number;
|
|
429
|
-
/**
|
|
595
|
+
/** Opens the first complete group page in the same snapshot; do not prepend preview items. */
|
|
430
596
|
next_cursor: string | null;
|
|
431
597
|
}
|
|
432
598
|
|
|
433
|
-
/**
|
|
434
|
-
export interface
|
|
435
|
-
/**
|
|
436
|
-
|
|
437
|
-
/**
|
|
438
|
-
|
|
599
|
+
/** Uploaded feed image metadata; bytes are fetched separately with the reading session. */
|
|
600
|
+
export interface MobileServerSocialFeedUploadedImage {
|
|
601
|
+
/** Image UUID. */
|
|
602
|
+
image_id: string;
|
|
603
|
+
/** Backend path for the original image bytes. */
|
|
604
|
+
url: string;
|
|
605
|
+
/** Display-orientation width in pixels. */
|
|
606
|
+
width: number;
|
|
607
|
+
/** Display-orientation height in pixels. */
|
|
608
|
+
height: number;
|
|
609
|
+
/** Detected content type. */
|
|
610
|
+
content_type: 'image/jpeg' | 'image/png';
|
|
611
|
+
/** Original file size in bytes. */
|
|
612
|
+
byte_size: number;
|
|
613
|
+
/** Always-present thumbnail (longest edge ≤ 512, never upscaled). */
|
|
614
|
+
thumbnail: MobileServerSocialFeedImageThumbnail;
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
/** External image loaded directly from its URL without Mobile session headers. */
|
|
618
|
+
export interface MobileServerSocialFeedExternalImage {
|
|
619
|
+
/** Original HTTP/HTTPS URL; no upload metadata or thumbnail is provided. */
|
|
620
|
+
url: string;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
/** Uploaded image metadata or an external URL; uploaded images precede external images. */
|
|
624
|
+
export type MobileServerSocialFeedImage =
|
|
625
|
+
| MobileServerSocialFeedUploadedImage
|
|
626
|
+
| MobileServerSocialFeedExternalImage;
|
|
627
|
+
|
|
628
|
+
/** Thumbnail metadata for an uploaded feed image. */
|
|
629
|
+
export interface MobileServerSocialFeedImageThumbnail {
|
|
630
|
+
/** Backend path for the thumbnail bytes. */
|
|
631
|
+
url: string;
|
|
632
|
+
/** Thumbnail width in pixels. */
|
|
633
|
+
width: number;
|
|
634
|
+
/** Thumbnail height in pixels. */
|
|
635
|
+
height: number;
|
|
439
636
|
}
|
|
440
637
|
|
|
441
638
|
/** Coverage of the candidate authors in a qualification snapshot. */
|
|
@@ -484,6 +681,8 @@ export interface MobileServerSocialFeedItemBase {
|
|
|
484
681
|
|
|
485
682
|
/** Content shared by authored posts and trade cards. */
|
|
486
683
|
export interface MobileServerSocialFeedContentBase extends MobileServerSocialFeedItemBase {
|
|
684
|
+
/** Bound images in display order; empty when none. */
|
|
685
|
+
images: MobileServerSocialFeedImage[];
|
|
487
686
|
/** Card text, empty for automatic cards. */
|
|
488
687
|
text: string;
|
|
489
688
|
/** Mentions in the original, unmodified text. */
|
|
@@ -559,16 +758,14 @@ export type MobileServerSocialFeedItem =
|
|
|
559
758
|
| MobileServerSocialFeedPost
|
|
560
759
|
| MobileServerSocialFeedReply;
|
|
561
760
|
|
|
562
|
-
/**
|
|
761
|
+
/** Idle-renewed social feed reading session. Credentials and cursors must be returned unchanged. */
|
|
563
762
|
export interface MobileServerSocialFeedReadSession {
|
|
564
763
|
/** Session identifier. */
|
|
565
764
|
session_id: string;
|
|
566
765
|
/** Feed, item, or full position history session. */
|
|
567
766
|
mode: MobileSocialFeedReadSessionMode;
|
|
568
|
-
/**
|
|
767
|
+
/** Current idle expiration in Unix milliseconds; legitimate session requests renew it. */
|
|
569
768
|
expires_at_ms: number;
|
|
570
|
-
/** Visibility requirements for explicit exposure reporting. */
|
|
571
|
-
view_tracking: MobileServerSocialFeedViewTracking;
|
|
572
769
|
/** Initial update baseline, distinct from the page cursor. */
|
|
573
770
|
update_cursor: string | null;
|
|
574
771
|
/** Credential for this reading session. Do not log or cache publicly. */
|
|
@@ -737,6 +934,8 @@ export interface MobileServerSocialFeedPost extends MobileServerSocialFeedConten
|
|
|
737
934
|
export interface MobileServerSocialFeedReply extends MobileServerSocialFeedItemBase {
|
|
738
935
|
/** Reply discriminant. */
|
|
739
936
|
kind: 'reply';
|
|
937
|
+
/** Bound images in display order; empty when none. */
|
|
938
|
+
images: MobileServerSocialFeedImage[];
|
|
740
939
|
/** Original text. */
|
|
741
940
|
text: string;
|
|
742
941
|
/** Mentions in the text. */
|
|
@@ -757,6 +956,12 @@ export interface MobileServerSocialFeedReply extends MobileServerSocialFeedItemB
|
|
|
757
956
|
interaction: MobileServerSocialFeedInteraction;
|
|
758
957
|
}
|
|
759
958
|
|
|
959
|
+
/** Top-level comment and all readable descendants from the same thread snapshot. */
|
|
960
|
+
export interface MobileServerSocialFeedCommentGroup extends MobileServerSocialFeedReply {
|
|
961
|
+
/** Flat descendants in creation-time, depth, then UUID order; empty when none. */
|
|
962
|
+
replies: MobileServerSocialFeedReply[];
|
|
963
|
+
}
|
|
964
|
+
|
|
760
965
|
/** Current eligibility hints; actual writes still recheck the signed author. */
|
|
761
966
|
export interface MobileServerSocialFeedPublishablePosition {
|
|
762
967
|
/** Candidate position. */
|
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
import { Hex } from 'viem';
|
|
2
2
|
import { MobileServerSuccessResponse } from './serverBaseTypes';
|
|
3
3
|
import {
|
|
4
|
-
MobileNotificationPlatform,
|
|
5
4
|
MobileServerAvatarPreset,
|
|
6
5
|
MobileServerFeedTrade,
|
|
7
6
|
MobileServerFollowListAccount,
|
|
7
|
+
MobileServerNotificationCapabilities,
|
|
8
|
+
MobileServerNotificationDeviceMetadata,
|
|
9
|
+
MobileServerNotificationInboxItem,
|
|
8
10
|
MobileServerNotificationPreferences,
|
|
11
|
+
MobileServerNotificationSettings,
|
|
9
12
|
MobileServerProfile,
|
|
10
13
|
MobileServerSocialFeedActionCandidate,
|
|
11
14
|
MobileServerSocialFeedActionMarker,
|
|
12
15
|
MobileServerSocialFeedAuthor,
|
|
13
16
|
MobileServerSocialFeedCandle,
|
|
14
17
|
MobileServerSocialFeedCohort,
|
|
18
|
+
MobileServerSocialFeedCommentGroup,
|
|
15
19
|
MobileServerSocialFeedDrawing,
|
|
16
20
|
MobileServerSocialFeedEstimatedLiquidationLine,
|
|
17
21
|
MobileServerSocialFeedHistorySummary,
|
|
22
|
+
MobileServerSocialFeedHistoryTake,
|
|
18
23
|
MobileServerSocialFeedItem,
|
|
19
24
|
MobileServerSocialFeedItemPatch,
|
|
20
25
|
MobileServerSocialFeedMarket,
|
|
@@ -22,7 +27,6 @@ import {
|
|
|
22
27
|
MobileServerSocialFeedPositionPatch,
|
|
23
28
|
MobileServerSocialFeedPublishablePosition,
|
|
24
29
|
MobileServerSocialFeedReadSession,
|
|
25
|
-
MobileServerSocialFeedReply,
|
|
26
30
|
MobileServerSocialFeedTimelineEntry,
|
|
27
31
|
MobileServerSocialFeedTradingContext,
|
|
28
32
|
MobileSocialFeedActionResolution,
|
|
@@ -35,8 +39,27 @@ import {
|
|
|
35
39
|
import {
|
|
36
40
|
MobileServerPublicQueryRequestByType,
|
|
37
41
|
MobileServerPublicQueryRequestType,
|
|
42
|
+
MobileServerSignedQueryRequestType,
|
|
38
43
|
} from './serverRequestTypes';
|
|
39
44
|
|
|
45
|
+
/**
|
|
46
|
+
* Success payloads for each signed `query`, keyed by request `type`.
|
|
47
|
+
*/
|
|
48
|
+
export interface MobileServerSignedQueryResponseByType {
|
|
49
|
+
/** Wallet subscriptions and the signing Identity's bells. */
|
|
50
|
+
notification_subscriptions: MobileServerNotificationSubscriptionsResponse;
|
|
51
|
+
/** Private notification page. */
|
|
52
|
+
notification_inbox_v2: MobileServerNotificationInboxV2Response;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Full success response for a signed `query`, with its payload inlined alongside `status`.
|
|
57
|
+
*/
|
|
58
|
+
export type MobileServerSignedQuerySuccessResponse<
|
|
59
|
+
T extends MobileServerSignedQueryRequestType =
|
|
60
|
+
MobileServerSignedQueryRequestType,
|
|
61
|
+
> = MobileServerSuccessResponse & MobileServerSignedQueryResponseByType[T];
|
|
62
|
+
|
|
40
63
|
/**
|
|
41
64
|
* Unsigned `public_query` request body: a `type` discriminant flattened with its params.
|
|
42
65
|
*/
|
|
@@ -165,15 +188,58 @@ export interface MobileServerNotificationPreferencesResponse {
|
|
|
165
188
|
preferences: MobileServerNotificationPreferences;
|
|
166
189
|
}
|
|
167
190
|
|
|
191
|
+
/**
|
|
192
|
+
* Payload of the `notification_registration_v2` public query, including legacy registrations.
|
|
193
|
+
*/
|
|
194
|
+
export interface MobileServerNotificationRegistrationV2Response {
|
|
195
|
+
/** Opaque decimal string; do not convert to a JavaScript number. */
|
|
196
|
+
registration_generation: string;
|
|
197
|
+
/** Persisted capabilities of the most recent registration; legacy type/route arrays are empty. */
|
|
198
|
+
capabilities: MobileServerNotificationCapabilities;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Full settings document returned by both `notification_settings_v2` and `update_notification_settings_v2`.
|
|
203
|
+
*/
|
|
204
|
+
export interface MobileServerNotificationSettingsV2Response {
|
|
205
|
+
/** Settings schema version. */
|
|
206
|
+
schema_version: 2;
|
|
207
|
+
/** Settings revision, independent of the subscription revision. */
|
|
208
|
+
revision: number;
|
|
209
|
+
/** Full saved settings. */
|
|
210
|
+
settings: MobileServerNotificationSettings;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Payload of the `notification_subscriptions` signed query.
|
|
215
|
+
*/
|
|
216
|
+
export interface MobileServerNotificationSubscriptionsResponse {
|
|
217
|
+
/** Wallet-level subscription revision; read again after every mutation. */
|
|
218
|
+
revision: number;
|
|
219
|
+
/** Whether the one-time local favorites import has completed. */
|
|
220
|
+
favorites_imported: boolean;
|
|
221
|
+
/** Subscribed market IDs in ascending order. */
|
|
222
|
+
market_ids: number[];
|
|
223
|
+
/** Followed subaccounts with bells enabled for the signing Identity. */
|
|
224
|
+
trader_bells: Hex[];
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Payload of the `notification_inbox_v2` signed query, ordered newest first.
|
|
229
|
+
*/
|
|
230
|
+
export interface MobileServerNotificationInboxV2Response {
|
|
231
|
+
/** Accepted intents owned by the signing wallet. */
|
|
232
|
+
notifications: MobileServerNotificationInboxItem[];
|
|
233
|
+
/** Pass unchanged to the next request, or null when pagination is complete. */
|
|
234
|
+
next_cursor: string | null;
|
|
235
|
+
}
|
|
236
|
+
|
|
168
237
|
/**
|
|
169
238
|
* Payload of the `registered_wallet` public query success response. Inlined into the envelope rather than
|
|
170
239
|
* nested under a key, matching the backend's `RegisteredWalletResponse`.
|
|
171
240
|
*/
|
|
172
|
-
export interface MobileServerRegisteredWalletResponse {
|
|
241
|
+
export interface MobileServerRegisteredWalletResponse extends MobileServerNotificationDeviceMetadata {
|
|
173
242
|
wallet: Hex;
|
|
174
|
-
platform: MobileNotificationPlatform;
|
|
175
|
-
locale: string | null;
|
|
176
|
-
app_version: string | null;
|
|
177
243
|
token_fingerprint_prefix: string;
|
|
178
244
|
last_seen_at: number;
|
|
179
245
|
}
|
|
@@ -185,6 +251,10 @@ export interface MobileServerRegisteredWalletResponse {
|
|
|
185
251
|
* by {@link MobileServerPublicQuerySuccessResponse}.
|
|
186
252
|
*/
|
|
187
253
|
export interface MobileServerPublicQueryResponseByType {
|
|
254
|
+
/** Latest saved device generation and v1/v2 capabilities. */
|
|
255
|
+
notification_registration_v2: MobileServerNotificationRegistrationV2Response;
|
|
256
|
+
/** Full settings document with its revision. */
|
|
257
|
+
notification_settings_v2: MobileServerNotificationSettingsV2Response;
|
|
188
258
|
/** Open position candidates. */
|
|
189
259
|
self_feed_positions: MobileServerSocialFeedPositionsResponse;
|
|
190
260
|
/** Position command resolution. */
|
|
@@ -197,6 +267,10 @@ export interface MobileServerPublicQueryResponseByType {
|
|
|
197
267
|
feed_comments: MobileServerSocialFeedCommentsResponse;
|
|
198
268
|
/** Full lifecycle history. */
|
|
199
269
|
position_history: MobileServerSocialFeedPositionHistoryResponse;
|
|
270
|
+
/** Most recent 500 actions, without pagination or authored content. */
|
|
271
|
+
position_history_all: MobileServerSocialFeedPositionHistoryResponse;
|
|
272
|
+
/** Published nonblank text with complete drawings. */
|
|
273
|
+
position_thoughts: MobileServerSocialFeedPositionThoughtsResponse;
|
|
200
274
|
/** Candle page and markers. */
|
|
201
275
|
position_chart: MobileServerSocialFeedPositionChartResponse;
|
|
202
276
|
/** Read-only watcher observation. */
|
|
@@ -285,10 +359,12 @@ export interface MobileServerSocialFeedDrawingResponse {
|
|
|
285
359
|
|
|
286
360
|
/** Comment thread, including bidirectional pagination around an optional anchor. */
|
|
287
361
|
export interface MobileServerSocialFeedCommentsResponse {
|
|
288
|
-
/**
|
|
289
|
-
comments:
|
|
290
|
-
/**
|
|
362
|
+
/** Top-level comments, newest first, each with all readable descendants in the snapshot. */
|
|
363
|
+
comments: MobileServerSocialFeedCommentGroup[];
|
|
364
|
+
/** All readable replies across the thread snapshot, including descendants. */
|
|
291
365
|
total_count: number;
|
|
366
|
+
/** All readable top-level comments across the thread snapshot. */
|
|
367
|
+
top_level_count: number;
|
|
292
368
|
/** Forward cursor. */
|
|
293
369
|
next_cursor: string | null;
|
|
294
370
|
/** Backward cursor. */
|
|
@@ -301,6 +377,8 @@ export interface MobileServerSocialFeedCommentsResponse {
|
|
|
301
377
|
|
|
302
378
|
/** Full position history with additional metrics and trusted trading hints. */
|
|
303
379
|
export interface MobileServerSocialFeedPositionHistoryResponse {
|
|
380
|
+
/** Current position owner. */
|
|
381
|
+
owner: MobileServerSocialFeedAuthor;
|
|
304
382
|
/** Current or frozen position and history metrics. */
|
|
305
383
|
position: MobileServerSocialFeedPositionHistoryCard;
|
|
306
384
|
/** Counts across the authorized history. */
|
|
@@ -342,3 +420,22 @@ export interface MobileServerSocialFeedWatchersResponse {
|
|
|
342
420
|
/** Observation time. */
|
|
343
421
|
as_of_ms: number;
|
|
344
422
|
}
|
|
423
|
+
|
|
424
|
+
/** Published position thought with nonblank text and a complete saved drawing. */
|
|
425
|
+
export type MobileServerSocialFeedPositionThought =
|
|
426
|
+
MobileServerSocialFeedHistoryTake & {
|
|
427
|
+
/** Always true for this endpoint; uploaded or external images alone do not qualify. */
|
|
428
|
+
has_analysis: true;
|
|
429
|
+
/** Parsed current drawing; saved data does not necessarily contain visible strokes. */
|
|
430
|
+
drawing: MobileServerSocialFeedDrawing;
|
|
431
|
+
};
|
|
432
|
+
|
|
433
|
+
/** Thoughts in descending drawing creation time and item UUID order; no 500-item total cap. */
|
|
434
|
+
export interface MobileServerSocialFeedPositionThoughtsResponse {
|
|
435
|
+
/** Complete content in server order; never reorder by display time. */
|
|
436
|
+
items: MobileServerSocialFeedPositionThought[];
|
|
437
|
+
/** Null only at the directory end; an empty page can still have a cursor. */
|
|
438
|
+
next_cursor: string | null;
|
|
439
|
+
/** Independent position session; newly published content requires a refresh. */
|
|
440
|
+
read_session: MobileServerSocialFeedReadSession;
|
|
441
|
+
}
|