@nadohq/mobile-client 0.57.0 → 0.59.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 (189) hide show
  1. package/README.md +6 -1
  2. package/dist/{MobileClient-DjNpN7Dw.cjs → MobileClient-aDxiM_Kf.cjs} +47 -1
  3. package/dist/MobileClient-aDxiM_Kf.cjs.map +1 -0
  4. package/dist/MobileClient.cjs +1 -1
  5. package/dist/MobileClient.d.cts +40 -6
  6. package/dist/MobileClient.d.cts.map +1 -1
  7. package/dist/MobileClient.d.ts +40 -6
  8. package/dist/MobileClient.d.ts.map +1 -1
  9. package/dist/MobileClient.js +47 -1
  10. package/dist/MobileClient.js.map +1 -1
  11. package/dist/{MobileServerFailureError-kbMi1Ntc.d.cts → MobileServerFailureError-Bpa_WA9f.d.cts} +3 -3
  12. package/dist/{MobileServerFailureError-kbMi1Ntc.d.cts.map → MobileServerFailureError-Bpa_WA9f.d.cts.map} +1 -1
  13. package/dist/{MobileServerFailureError-DvtkMAVX.d.ts → MobileServerFailureError-Dd3c6P_Z.d.ts} +3 -3
  14. package/dist/{MobileServerFailureError-DvtkMAVX.d.ts.map → MobileServerFailureError-Dd3c6P_Z.d.ts.map} +1 -1
  15. package/dist/{buildSignedMobileRequest-lSIJmG6D.d.ts → buildSignedMobileRequest-Cb1T74xV.d.ts} +2 -2
  16. package/dist/{buildSignedMobileRequest-lSIJmG6D.d.ts.map → buildSignedMobileRequest-Cb1T74xV.d.ts.map} +1 -1
  17. package/dist/{buildSignedMobileRequest-DBWN0z0u.d.cts → buildSignedMobileRequest-NHbMAPzd.d.cts} +2 -2
  18. package/dist/{buildSignedMobileRequest-DBWN0z0u.d.cts.map → buildSignedMobileRequest-NHbMAPzd.d.cts.map} +1 -1
  19. package/dist/{canonicalize-Cx3lCVpm.d.ts → canonicalize-BBYGh17w.d.ts} +2 -2
  20. package/dist/canonicalize-BBYGh17w.d.ts.map +1 -0
  21. package/dist/{canonicalize-DNgB8Jsm.d.cts → canonicalize-BF_SiNvO.d.cts} +2 -2
  22. package/dist/canonicalize-BF_SiNvO.d.cts.map +1 -0
  23. package/dist/{clientTypes-DnPE1zZO.d.cts → clientTypes-BWFKo9oE.d.cts} +63 -2
  24. package/dist/clientTypes-BWFKo9oE.d.cts.map +1 -0
  25. package/dist/{clientTypes-ws9CDHw4.d.ts → clientTypes-DCTiUV0H.d.ts} +63 -2
  26. package/dist/clientTypes-DCTiUV0H.d.ts.map +1 -0
  27. package/dist/dataMappers.cjs +34 -0
  28. package/dist/dataMappers.cjs.map +1 -1
  29. package/dist/dataMappers.d.cts +18 -5
  30. package/dist/dataMappers.d.cts.map +1 -1
  31. package/dist/dataMappers.d.ts +18 -5
  32. package/dist/dataMappers.d.ts.map +1 -1
  33. package/dist/dataMappers.js +32 -1
  34. package/dist/dataMappers.js.map +1 -1
  35. package/dist/{eip712MethodByType-T7dfjmC_.d.cts → eip712MethodByType-BSx11xG-.d.cts} +2 -2
  36. package/dist/eip712MethodByType-BSx11xG-.d.cts.map +1 -0
  37. package/dist/{eip712MethodByType-Bmu9PYx6.d.ts → eip712MethodByType-DkiAjCLs.d.ts} +2 -2
  38. package/dist/eip712MethodByType-DkiAjCLs.d.ts.map +1 -0
  39. package/dist/{follow-D6Mg8GHx.d.ts → follow-B3CZ04c0.d.cts} +7 -2
  40. package/dist/{follow-D6Mg8GHx.d.cts.map → follow-B3CZ04c0.d.cts.map} +1 -1
  41. package/dist/{follow-D6Mg8GHx.d.cts → follow-B3CZ04c0.d.ts} +7 -2
  42. package/dist/{follow-D6Mg8GHx.d.ts.map → follow-B3CZ04c0.d.ts.map} +1 -1
  43. package/dist/index.cjs +6 -1
  44. package/dist/index.d.cts +17 -16
  45. package/dist/index.d.ts +17 -16
  46. package/dist/index.js +4 -3
  47. package/dist/{mobileErrorCodes-B3kTLit_.d.ts → mobileErrorCodes-3LtreeZM.d.cts} +14 -3
  48. package/dist/mobileErrorCodes-3LtreeZM.d.cts.map +1 -0
  49. package/dist/{mobileErrorCodes-B3kTLit_.d.cts → mobileErrorCodes-3LtreeZM.d.ts} +14 -3
  50. package/dist/mobileErrorCodes-3LtreeZM.d.ts.map +1 -0
  51. package/dist/patterns-3UKIG5IS.d.cts +13 -0
  52. package/dist/patterns-3UKIG5IS.d.cts.map +1 -0
  53. package/dist/patterns-3UKIG5IS.d.ts +13 -0
  54. package/dist/patterns-3UKIG5IS.d.ts.map +1 -0
  55. package/dist/{payloadHash-Brc5ceFq.d.cts → payloadHash-BOWGjqdb.d.cts} +2 -2
  56. package/dist/payloadHash-BOWGjqdb.d.cts.map +1 -0
  57. package/dist/{payloadHash-cZgv7NSo.d.ts → payloadHash-Bzf4CtjV.d.ts} +2 -2
  58. package/dist/payloadHash-Bzf4CtjV.d.ts.map +1 -0
  59. package/dist/profileSearch-DCuB-IKD.d.cts +14 -0
  60. package/dist/profileSearch-DCuB-IKD.d.cts.map +1 -0
  61. package/dist/profileSearch-DCuB-IKD.d.ts +14 -0
  62. package/dist/profileSearch-DCuB-IKD.d.ts.map +1 -0
  63. package/dist/{serverBaseTypes-CWBdZomv.d.ts → serverBaseTypes-DWf3iGWy.d.ts} +2 -2
  64. package/dist/{serverBaseTypes-CWBdZomv.d.ts.map → serverBaseTypes-DWf3iGWy.d.ts.map} +1 -1
  65. package/dist/{serverBaseTypes-CcWT_ZBe.d.cts → serverBaseTypes-KREDe2M9.d.cts} +2 -2
  66. package/dist/{serverBaseTypes-CcWT_ZBe.d.cts.map → serverBaseTypes-KREDe2M9.d.cts.map} +1 -1
  67. package/dist/{serverExecuteTypes-CgjzwBaA.d.cts → serverExecuteTypes-DVRa6ifu.d.cts} +26 -6
  68. package/dist/serverExecuteTypes-DVRa6ifu.d.cts.map +1 -0
  69. package/dist/{serverExecuteTypes-jyr5aO5q.d.ts → serverExecuteTypes-DlYZCp1f.d.ts} +26 -6
  70. package/dist/serverExecuteTypes-DlYZCp1f.d.ts.map +1 -0
  71. package/dist/{serverQueryTypes-DPRP61yA.d.ts → serverQueryTypes-BFdwq0Z2.d.ts} +14 -4
  72. package/dist/serverQueryTypes-BFdwq0Z2.d.ts.map +1 -0
  73. package/dist/{serverQueryTypes-H_mI6fPl.d.cts → serverQueryTypes-DNdMpmDr.d.cts} +14 -4
  74. package/dist/serverQueryTypes-DNdMpmDr.d.cts.map +1 -0
  75. package/dist/{serverRequestTypes-BY0f5woc.d.ts → serverRequestTypes-BNA7FCY6.d.ts} +20 -3
  76. package/dist/serverRequestTypes-BNA7FCY6.d.ts.map +1 -0
  77. package/dist/{serverRequestTypes-DGGqQMK3.d.cts → serverRequestTypes-CxDRFKfv.d.cts} +20 -3
  78. package/dist/serverRequestTypes-CxDRFKfv.d.cts.map +1 -0
  79. package/dist/{serverResponseGuards-BGHTBbtz.d.ts → serverResponseGuards-BU1Xv_tG.d.ts} +2 -2
  80. package/dist/{serverResponseGuards-BGHTBbtz.d.ts.map → serverResponseGuards-BU1Xv_tG.d.ts.map} +1 -1
  81. package/dist/{serverResponseGuards-DGhrUL_c.d.cts → serverResponseGuards-Dkdok0Sm.d.cts} +2 -2
  82. package/dist/{serverResponseGuards-DGhrUL_c.d.cts.map → serverResponseGuards-Dkdok0Sm.d.cts.map} +1 -1
  83. package/dist/signing/buildSignedMobileRequest.d.cts +1 -1
  84. package/dist/signing/buildSignedMobileRequest.d.ts +1 -1
  85. package/dist/signing/canonicalize.cjs +5 -0
  86. package/dist/signing/canonicalize.cjs.map +1 -1
  87. package/dist/signing/canonicalize.d.cts +1 -1
  88. package/dist/signing/canonicalize.d.ts +1 -1
  89. package/dist/signing/canonicalize.js +5 -0
  90. package/dist/signing/canonicalize.js.map +1 -1
  91. package/dist/signing/eip712MethodByType.cjs +2 -1
  92. package/dist/signing/eip712MethodByType.cjs.map +1 -1
  93. package/dist/signing/eip712MethodByType.d.cts +1 -1
  94. package/dist/signing/eip712MethodByType.d.ts +1 -1
  95. package/dist/signing/eip712MethodByType.js +2 -1
  96. package/dist/signing/eip712MethodByType.js.map +1 -1
  97. package/dist/signing/index.d.cts +5 -5
  98. package/dist/signing/index.d.ts +5 -5
  99. package/dist/signing/payloadHash.d.cts +1 -1
  100. package/dist/signing/payloadHash.d.ts +1 -1
  101. package/dist/signing/types.d.cts +1 -1
  102. package/dist/signing/types.d.ts +1 -1
  103. package/dist/types/MobileServerFailureError.d.cts +1 -1
  104. package/dist/types/MobileServerFailureError.d.ts +1 -1
  105. package/dist/types/clientTypes.d.cts +2 -2
  106. package/dist/types/clientTypes.d.ts +2 -2
  107. package/dist/types/index.d.cts +8 -8
  108. package/dist/types/index.d.ts +8 -8
  109. package/dist/types/mobileErrorCodes.cjs +12 -0
  110. package/dist/types/mobileErrorCodes.cjs.map +1 -1
  111. package/dist/types/mobileErrorCodes.d.cts +1 -1
  112. package/dist/types/mobileErrorCodes.d.ts +1 -1
  113. package/dist/types/mobileErrorCodes.js +12 -0
  114. package/dist/types/mobileErrorCodes.js.map +1 -1
  115. package/dist/types/serverBaseTypes.d.cts +1 -1
  116. package/dist/types/serverBaseTypes.d.ts +1 -1
  117. package/dist/types/serverExecuteTypes.d.cts +2 -2
  118. package/dist/types/serverExecuteTypes.d.ts +2 -2
  119. package/dist/types/serverQueryTypes.d.cts +2 -2
  120. package/dist/types/serverQueryTypes.d.ts +2 -2
  121. package/dist/types/serverRequestTypes.d.cts +2 -2
  122. package/dist/types/serverRequestTypes.d.ts +2 -2
  123. package/dist/{types-l47aSWtA.d.cts → types-BCr2G5gS.d.cts} +6 -2
  124. package/dist/types-BCr2G5gS.d.cts.map +1 -0
  125. package/dist/{types-B021odcS.d.ts → types-C18k-9Vy.d.ts} +6 -2
  126. package/dist/types-C18k-9Vy.d.ts.map +1 -0
  127. package/dist/utils/follow.cjs +6 -0
  128. package/dist/utils/follow.cjs.map +1 -1
  129. package/dist/utils/follow.d.cts +2 -2
  130. package/dist/utils/follow.d.ts +2 -2
  131. package/dist/utils/follow.js +6 -1
  132. package/dist/utils/follow.js.map +1 -1
  133. package/dist/utils/index.cjs +5 -0
  134. package/dist/utils/index.d.cts +5 -4
  135. package/dist/utils/index.d.ts +5 -4
  136. package/dist/utils/index.js +4 -3
  137. package/dist/utils/patterns.cjs +6 -0
  138. package/dist/utils/patterns.cjs.map +1 -1
  139. package/dist/utils/patterns.d.cts +2 -2
  140. package/dist/utils/patterns.d.ts +2 -2
  141. package/dist/utils/patterns.js +6 -1
  142. package/dist/utils/patterns.js.map +1 -1
  143. package/dist/utils/profileSearch.cjs +17 -0
  144. package/dist/utils/profileSearch.cjs.map +1 -0
  145. package/dist/utils/profileSearch.d.cts +2 -0
  146. package/dist/utils/profileSearch.d.ts +2 -0
  147. package/dist/utils/profileSearch.js +15 -0
  148. package/dist/utils/profileSearch.js.map +1 -0
  149. package/dist/utils/serverResponseGuards.d.cts +1 -1
  150. package/dist/utils/serverResponseGuards.d.ts +1 -1
  151. package/package.json +3 -3
  152. package/src/MobileClient.ts +65 -0
  153. package/src/dataMappers.ts +48 -0
  154. package/src/signing/canonicalize.ts +6 -0
  155. package/src/signing/eip712MethodByType.ts +1 -0
  156. package/src/signing/signing.test.ts +34 -0
  157. package/src/signing/types.ts +7 -0
  158. package/src/types/clientTypes.ts +65 -0
  159. package/src/types/mobileErrorCodes.ts +12 -0
  160. package/src/types/serverExecuteTypes.ts +24 -2
  161. package/src/types/serverQueryTypes.ts +11 -0
  162. package/src/types/serverRequestTypes.ts +18 -0
  163. package/src/utils/follow.ts +6 -0
  164. package/src/utils/index.ts +1 -0
  165. package/src/utils/patterns.ts +7 -0
  166. package/src/utils/profileSearch.ts +11 -0
  167. package/dist/MobileClient-DjNpN7Dw.cjs.map +0 -1
  168. package/dist/canonicalize-Cx3lCVpm.d.ts.map +0 -1
  169. package/dist/canonicalize-DNgB8Jsm.d.cts.map +0 -1
  170. package/dist/clientTypes-DnPE1zZO.d.cts.map +0 -1
  171. package/dist/clientTypes-ws9CDHw4.d.ts.map +0 -1
  172. package/dist/eip712MethodByType-Bmu9PYx6.d.ts.map +0 -1
  173. package/dist/eip712MethodByType-T7dfjmC_.d.cts.map +0 -1
  174. package/dist/mobileErrorCodes-B3kTLit_.d.cts.map +0 -1
  175. package/dist/mobileErrorCodes-B3kTLit_.d.ts.map +0 -1
  176. package/dist/patterns-BE0Audp5.d.cts +0 -8
  177. package/dist/patterns-BE0Audp5.d.cts.map +0 -1
  178. package/dist/patterns-BE0Audp5.d.ts +0 -8
  179. package/dist/patterns-BE0Audp5.d.ts.map +0 -1
  180. package/dist/payloadHash-Brc5ceFq.d.cts.map +0 -1
  181. package/dist/payloadHash-cZgv7NSo.d.ts.map +0 -1
  182. package/dist/serverExecuteTypes-CgjzwBaA.d.cts.map +0 -1
  183. package/dist/serverExecuteTypes-jyr5aO5q.d.ts.map +0 -1
  184. package/dist/serverQueryTypes-DPRP61yA.d.ts.map +0 -1
  185. package/dist/serverQueryTypes-H_mI6fPl.d.cts.map +0 -1
  186. package/dist/serverRequestTypes-BY0f5woc.d.ts.map +0 -1
  187. package/dist/serverRequestTypes-DGGqQMK3.d.cts.map +0 -1
  188. package/dist/types-B021odcS.d.ts.map +0 -1
  189. package/dist/types-l47aSWtA.d.cts.map +0 -1
@@ -86,6 +86,16 @@ function mapMobileFollowListPage(server) {
86
86
  };
87
87
  }
88
88
  /**
89
+ * Maps a server-side profile search page (snake_case) to its client-side (camelCase) representation. Each
90
+ * match goes through {@link mapMobilePublicProfile}, so include-gated fields stay `undefined` when omitted.
91
+ */
92
+ function mapMobileProfileSearchPage(server) {
93
+ return {
94
+ profiles: server.profiles.map(mapMobilePublicProfile),
95
+ nextCursor: server.next_cursor
96
+ };
97
+ }
98
+ /**
89
99
  * Maps a server-side follow or unfollow response to its client-side representation.
90
100
  */
91
101
  function mapMobileFollowMutationResult(server) {
@@ -95,6 +105,16 @@ function mapMobileFollowMutationResult(server) {
95
105
  };
96
106
  }
97
107
  /**
108
+ * Maps a server-side batch follow or unfollow response to its client-side representation.
109
+ */
110
+ function mapMobileFollowBatchResult(server) {
111
+ return server.results.map((result) => ({
112
+ subaccount: result.subaccount,
113
+ isFollowing: result.is_following,
114
+ followerCount: result.follower_count
115
+ }));
116
+ }
117
+ /**
98
118
  * Maps server-side notification preferences (snake_case) to their client-side (camelCase) representation.
99
119
  */
100
120
  function mapMobileNotificationPreferences(server) {
@@ -139,6 +159,17 @@ function mapMobileFollowListParamsToServer(params) {
139
159
  };
140
160
  }
141
161
  /**
162
+ * Maps the client-side params of a profile search page to the server-side wire shape.
163
+ */
164
+ function mapMobileProfileSearchParamsToServer(params) {
165
+ return {
166
+ query: params.query,
167
+ include: params.include ? mapMobileProfilesIncludeToServer(params.include) : void 0,
168
+ cursor: params.cursor,
169
+ limit: params.limit
170
+ };
171
+ }
172
+ /**
142
173
  * Maps client-side notification preferences (camelCase) to the server-side (snake_case) wire shape.
143
174
  */
144
175
  function mapMobileNotificationPreferencesToServer(preferences) {
@@ -545,11 +576,14 @@ exports.mapMobileAvatarPreset = mapMobileAvatarPreset;
545
576
  exports.mapMobileAvatarSelectionToServer = mapMobileAvatarSelectionToServer;
546
577
  exports.mapMobileAvatarUpload = mapMobileAvatarUpload;
547
578
  exports.mapMobileFeedPage = mapMobileFeedPage;
579
+ exports.mapMobileFollowBatchResult = mapMobileFollowBatchResult;
548
580
  exports.mapMobileFollowListPage = mapMobileFollowListPage;
549
581
  exports.mapMobileFollowListParamsToServer = mapMobileFollowListParamsToServer;
550
582
  exports.mapMobileFollowMutationResult = mapMobileFollowMutationResult;
551
583
  exports.mapMobileNotificationPreferences = mapMobileNotificationPreferences;
552
584
  exports.mapMobileNotificationPreferencesToServer = mapMobileNotificationPreferencesToServer;
585
+ exports.mapMobileProfileSearchPage = mapMobileProfileSearchPage;
586
+ exports.mapMobileProfileSearchParamsToServer = mapMobileProfileSearchParamsToServer;
553
587
  exports.mapMobileProfilesIncludeToServer = mapMobileProfilesIncludeToServer;
554
588
  exports.mapMobilePublicProfile = mapMobilePublicProfile;
555
589
  exports.mapMobileRegisteredWallet = mapMobileRegisteredWallet;
@@ -1 +1 @@
1
- {"version":3,"file":"dataMappers.cjs","names":[],"sources":["../src/dataMappers.ts"],"sourcesContent":["import { removeDecimals, subaccountToHex, toBigNumber } from '@nadohq/shared';\nimport {\n GetMobileFollowListParams,\n MobileAvatarPreset,\n MobileAvatarSelection,\n MobileAvatarUpload,\n MobileFeedPage,\n MobileFeedTrade,\n MobileFollowListPage,\n MobileFollowMutationResult,\n MobileFollowSummary,\n MobileIdentitySummary,\n MobileNotificationPreferenceScope,\n MobileNotificationPreferences,\n MobileProfilesInclude,\n MobilePublicProfile,\n MobileRegisteredWallet,\n MobileSocialFeedAuthor,\n MobileSocialFeedInteraction,\n MobileSocialFeedItem,\n MobileSocialFeedItemBase,\n MobileSocialFeedItemPatch,\n MobileSocialFeedItemResponse,\n MobileSocialFeedListParams,\n MobileSocialFeedMarket,\n MobileSocialFeedPage,\n MobileSocialFeedPnl,\n MobileSocialFeedPositionCard,\n MobileSocialFeedPositionPatch,\n MobileSocialFeedRankedPage,\n MobileSocialFeedReadParams,\n MobileSocialFeedReadSession,\n MobileSocialFeedTopTradersPage,\n MobileSocialFeedTradeCard,\n MobileSocialFeedTradeRow,\n MobileSocialFeedTradeRowBase,\n MobileSocialFeedTraderBadge,\n MobileSocialFeedUpdates,\n} from './types/clientTypes';\nimport {\n MobileServerAvatarUploadResponse,\n MobileServerFollowMutationResponse,\n} from './types/serverExecuteTypes';\nimport {\n MobileServerAvatarPreset,\n MobileServerAvatarSelection,\n MobileServerFeedTrade,\n MobileServerFollowSummary,\n MobileServerIdentitySummary,\n MobileServerNotificationPreferenceScope,\n MobileServerNotificationPreferences,\n MobileServerProfile,\n MobileServerSocialFeedAuthor,\n MobileServerSocialFeedInteraction,\n MobileServerSocialFeedItem,\n MobileServerSocialFeedItemBase,\n MobileServerSocialFeedItemPatch,\n MobileServerSocialFeedMarket,\n MobileServerSocialFeedPnl,\n MobileServerSocialFeedPositionCard,\n MobileServerSocialFeedPositionPatch,\n MobileServerSocialFeedReadSession,\n MobileServerSocialFeedTradeCard,\n MobileServerSocialFeedTradeRow,\n MobileServerSocialFeedTradeRowBase,\n MobileServerSocialFeedTraderBadge,\n} from './types/serverModelTypes';\nimport {\n MobileServerFeedResponse,\n MobileServerFollowListResponse,\n MobileServerRegisteredWalletResponse,\n MobileServerSocialFeedItemResponse,\n MobileServerSocialFeedRankedResponse,\n MobileServerSocialFeedResponse,\n MobileServerSocialFeedTopTradersResponse,\n MobileServerSocialFeedUpdatesResponse,\n} from './types/serverQueryTypes';\nimport {\n MobileServerFollowListRequest,\n MobileServerProfilesInclude,\n MobileServerSocialFeedListParams,\n MobileServerSocialFeedReadParams,\n} from './types/serverRequestTypes';\n\n/**\n * Maps a server-side avatar preset to its client-side representation.\n */\nexport function mapMobileAvatarPreset(\n server: MobileServerAvatarPreset,\n): MobileAvatarPreset {\n return { id: server.id, avatarUrl: server.avatar_url };\n}\n\n/**\n * Maps an upload grant, preserving the signed PUT headers and server-provided lifetime.\n */\nexport function mapMobileAvatarUpload(\n server: MobileServerAvatarUploadResponse,\n): MobileAvatarUpload {\n return {\n uploadKey: server.upload_key,\n uploadUrl: server.upload_url,\n headers: server.headers,\n expiresInSeconds: server.expires_in_seconds,\n };\n}\n\n/**\n * Maps a client-side avatar selection to the signed wire payload; null clears the saved avatar.\n */\nexport function mapMobileAvatarSelectionToServer(\n avatar: MobileAvatarSelection | null,\n): MobileServerAvatarSelection | null {\n if (avatar === null) {\n return null;\n }\n if (avatar.type === 'preset') {\n return { type: 'preset', id: avatar.id };\n }\n return { type: 'upload', upload_key: avatar.uploadKey };\n}\n\n/**\n * Maps a server-side public profile (snake_case) to its client-side (camelCase) representation. The three\n * include-gated fields stay `undefined` when the backend omitted them, rather than being coerced to `null`\n * or zero, so callers can tell \"not requested\" from a real value.\n */\nexport function mapMobilePublicProfile(\n server: MobileServerProfile,\n): MobilePublicProfile {\n return {\n ...mapMobileIdentitySummary(server),\n bio: server.bio,\n privateMode: server.private_mode,\n followerCount: server.follower_count,\n followingCount: server.following_count,\n followSummary: server.follow_summary\n ? mapMobileFollowSummary(server.follow_summary)\n : undefined,\n };\n}\n\n/**\n * Maps a server-side identity summary (snake_case) to its client-side (camelCase) representation.\n */\nfunction mapMobileIdentitySummary(\n server: MobileServerIdentitySummary,\n): MobileIdentitySummary {\n return {\n subaccount: server.subaccount,\n username: server.username,\n displayName: server.display_name,\n avatarUrl: server.avatar_url,\n };\n}\n\n/**\n * Maps a server-side follow summary to its client-side representation.\n */\nfunction mapMobileFollowSummary(\n server: MobileServerFollowSummary,\n): MobileFollowSummary {\n return {\n isFollowing: server.is_following,\n followedByCount: server.followed_by_count,\n followedBy: server.followed_by.map(mapMobileIdentitySummary),\n };\n}\n\n/**\n * Maps a server-side Followers or Following response to a client-side {@link MobileFollowListPage}. Rows\n * keep `isFollowing` absent when the request named no `viewAs`, rather than defaulting it to `false`.\n */\nexport function mapMobileFollowListPage(\n server: MobileServerFollowListResponse,\n): MobileFollowListPage {\n return {\n accounts: server.accounts.map((account) => ({\n identity: mapMobileIdentitySummary(account.identity),\n isFollowing: account.is_following,\n followerCount: account.follower_count,\n })),\n nextCursor: server.next_cursor,\n };\n}\n\n/**\n * Maps a server-side follow or unfollow response to its client-side representation.\n */\nexport function mapMobileFollowMutationResult(\n server: MobileServerFollowMutationResponse,\n): MobileFollowMutationResult {\n return {\n isFollowing: server.is_following,\n followerCount: server.follower_count,\n };\n}\n\n/**\n * Maps server-side notification preferences (snake_case) to their client-side (camelCase) representation.\n */\nexport function mapMobileNotificationPreferences(\n server: MobileServerNotificationPreferences,\n): MobileNotificationPreferences {\n return {\n schemaVersion: server.schema_version,\n categories: server.categories.map((category) => ({\n category: category.category,\n enabled: category.enabled,\n scopes: category.scopes.map(mapMobileNotificationPreferenceScope),\n })),\n };\n}\n\nfunction mapMobileNotificationPreferenceScope(\n server: MobileServerNotificationPreferenceScope,\n): MobileNotificationPreferenceScope {\n if (server.type === 'subaccount') {\n return { type: 'subaccount', subaccount: server.subaccount };\n }\n return { type: 'product', productId: server.product_id };\n}\n\n/**\n * Maps client-side profiles includes (camelCase) to the server-side (snake_case) wire shape.\n */\nexport function mapMobileProfilesIncludeToServer(\n include: MobileProfilesInclude,\n): MobileServerProfilesInclude {\n return {\n follow_counts: include.followCounts,\n follow_summary: include.followSummary\n ? { view_as: subaccountToHex(include.followSummary.viewAs) }\n : undefined,\n };\n}\n\n/**\n * Maps the client-side params of a Followers or Following page to the server-side wire shape. Both list\n * directions take identical params and differ only in the `type` the caller dispatches on.\n */\nexport function mapMobileFollowListParamsToServer(\n params: GetMobileFollowListParams,\n): MobileServerFollowListRequest {\n return {\n subaccount: subaccountToHex(params.target),\n view_as: params.viewAs ? subaccountToHex(params.viewAs) : undefined,\n cursor: params.cursor,\n limit: params.limit,\n };\n}\n\n/**\n * Maps client-side notification preferences (camelCase) to the server-side (snake_case) wire shape.\n */\nexport function mapMobileNotificationPreferencesToServer(\n preferences: MobileNotificationPreferences,\n): MobileServerNotificationPreferences {\n return {\n schema_version: preferences.schemaVersion,\n categories: preferences.categories.map((category) => ({\n category: category.category,\n enabled: category.enabled,\n scopes: category.scopes.map(mapMobileNotificationPreferenceScopeToServer),\n })),\n };\n}\n\nfunction mapMobileNotificationPreferenceScopeToServer(\n scope: MobileNotificationPreferenceScope,\n): MobileServerNotificationPreferenceScope {\n if (scope.type === 'subaccount') {\n return { type: 'subaccount', subaccount: scope.subaccount };\n }\n return { type: 'product', product_id: scope.productId };\n}\n\n/**\n * Maps a server-side feed trade (snake_case) to its client-side (camelCase) representation.\n */\nfunction mapMobileFeedTrade(server: MobileServerFeedTrade): MobileFeedTrade {\n return {\n ...mapMobileIdentitySummary(server),\n orderDigest: server.order_digest,\n productId: server.product_id,\n quantity: server.quantity,\n notional: server.notional,\n averagePrice: server.average_price,\n margin: {\n mode: server.margin.mode,\n estimatedLeverage: server.margin.estimated_leverage,\n },\n position: server.position,\n realizedPnl: server.realized_pnl,\n filledAt: server.filled_at_ms,\n };\n}\n\n/**\n * Maps a server-side feed response to a client-side {@link MobileFeedPage}.\n */\nexport function mapMobileFeedPage(\n server: MobileServerFeedResponse,\n): MobileFeedPage {\n return {\n trades: server.trades.map(mapMobileFeedTrade),\n nextCursor: server.next_cursor,\n };\n}\n\n/**\n * Maps a server-side registered wallet (snake_case) to its client-side (camelCase) representation.\n */\nexport function mapMobileRegisteredWallet(\n server: MobileServerRegisteredWalletResponse,\n): MobileRegisteredWallet {\n return {\n wallet: server.wallet,\n platform: server.platform,\n locale: server.locale,\n appVersion: server.app_version,\n tokenFingerprintPrefix: server.token_fingerprint_prefix,\n lastSeenAt: server.last_seen_at,\n };\n}\n\n/**\n * Maps the official account PnL badge, retaining x18 amount units.\n * @param server - The service response.\n * @returns The mapped trader badge.\n */\nexport function mapMobileSocialFeedTraderBadge(\n server: MobileServerSocialFeedTraderBadge,\n): MobileSocialFeedTraderBadge {\n return {\n code: server.code,\n pnl: toBigNumber(server.pnl_x18),\n metricKey: server.metric_key,\n window: server.window,\n sourceAsOfMs: server.source_as_of_ms,\n fetchedAtMs: server.fetched_at_ms,\n snapshotId: server.snapshot_id,\n };\n}\n\n/**\n * Maps author identity, relationship state, and optional qualification badge.\n * @param server - The service response.\n * @returns The mapped feed author.\n */\nexport function mapMobileSocialFeedAuthor(\n server: MobileServerSocialFeedAuthor,\n): MobileSocialFeedAuthor {\n return {\n ...mapMobileIdentitySummary(server),\n isFollowing: server.is_following,\n traderBadge:\n server.trader_badge === null\n ? null\n : mapMobileSocialFeedTraderBadge(server.trader_badge),\n traderDataStatus: server.trader_data_status,\n };\n}\n\n/**\n * Maps social market metadata.\n * @param server - The service response.\n * @returns The mapped feed market.\n */\nexport function mapMobileSocialFeedMarket(\n server: MobileServerSocialFeedMarket,\n): MobileSocialFeedMarket {\n return {\n productId: server.product_id,\n symbol: server.symbol,\n logoUrl: server.logo_url,\n category: server.category,\n sourceCategories: server.source_categories,\n };\n}\n\n/**\n * Maps position PnL while retaining x18 amount units and availability.\n * @param server - The service response.\n * @returns The mapped feed pnl.\n */\nexport function mapMobileSocialFeedPnl(\n server: MobileServerSocialFeedPnl,\n): MobileSocialFeedPnl {\n return {\n amount: server.amount_x18 === null ? null : toBigNumber(server.amount_x18),\n basis: server.basis,\n mode: server.mode,\n asOfMs: server.as_of_ms,\n quality: server.quality,\n };\n}\n\n/**\n * Maps complete position facts, converting entry price to decimal units.\n * @param server - The service response.\n * @returns The mapped feed position patch.\n */\nexport function mapMobileSocialFeedPositionPatch(\n server: MobileServerSocialFeedPositionPatch,\n): MobileSocialFeedPositionPatch {\n return {\n positionId: server.position_id,\n positionVersion: server.position_version,\n stateAsOfMs: server.state_as_of_ms,\n entryPrice: removeDecimals(server.entry_price_x18),\n displayBasis: server.display_basis,\n snapshotAtMs: server.snapshot_at_ms,\n quantity: toBigNumber(server.quantity_x18),\n notional: toBigNumber(server.notional_x18),\n state: server.state,\n historyQuality: server.history_quality,\n marginMode: server.margin_mode,\n leverage: server.leverage,\n leverageAtMs: server.leverage_at_ms,\n pnl: mapMobileSocialFeedPnl(server.pnl),\n };\n}\n\n/**\n * Maps a position card with its current or frozen financial state.\n * @param server - The service response.\n * @returns The mapped feed position card.\n */\nexport function mapMobileSocialFeedPositionCard(\n server: MobileServerSocialFeedPositionCard,\n): MobileSocialFeedPositionCard {\n return {\n ...mapMobileSocialFeedPositionPatch(server),\n productId: server.product_id,\n market: mapMobileSocialFeedMarket(server.market),\n direction: server.direction,\n };\n}\n\n/**\n * Maps interaction counters without inventing unavailable relationship state.\n * @param server - The service response.\n * @returns The mapped feed interaction.\n */\nexport function mapMobileSocialFeedInteraction(\n server: MobileServerSocialFeedInteraction,\n): MobileSocialFeedInteraction {\n return {\n likeCount: server.like_count,\n commentCount: server.comment_count,\n viewCount: server.view_count,\n likedByMe: server.liked_by_me,\n };\n}\n\n/**\n * Maps common item metadata and server capabilities.\n * @param server - The service response.\n * @returns The mapped social feed item base.\n */\nexport function mapMobileSocialFeedItemBase(\n server: MobileServerSocialFeedItemBase,\n): MobileSocialFeedItemBase {\n return {\n id: server.id,\n hasAnalysis: server.has_analysis,\n drawing: server.drawing,\n author: mapMobileSocialFeedAuthor(server.author),\n createdAtMs: server.created_at_ms,\n displayAtMs: server.display_at_ms,\n version: server.version,\n market: mapMobileSocialFeedMarket(server.market),\n capabilities: {\n canLike: server.capabilities.can_like,\n canComment: server.capabilities.can_comment,\n canRecordView: server.capabilities.can_record_view,\n },\n };\n}\n\n/**\n * Maps an automatic trade card and its position and interaction metadata.\n * @param server - The service response.\n * @returns The mapped social trade card.\n */\nexport function mapMobileSocialFeedTradeCard(\n server: MobileServerSocialFeedTradeCard,\n): MobileSocialFeedTradeCard {\n return {\n ...mapMobileSocialFeedItemBase(server),\n kind: server.kind,\n action: server.action,\n text: server.text,\n mentions: server.mentions,\n position: mapMobileSocialFeedPositionCard(server.position),\n interaction: mapMobileSocialFeedInteraction(server.interaction),\n commentPreview: {\n items: server.comment_preview.items,\n totalCount: server.comment_preview.total_count,\n nextCursor: server.comment_preview.next_cursor,\n },\n };\n}\n\n/**\n * Maps historical trade facts with decimal execution prices and x18 quantities.\n * @param server - The service response.\n * @returns The mapped social trade row base.\n */\nexport function mapMobileSocialFeedTradeRowBase(\n server: MobileServerSocialFeedTradeRowBase,\n): MobileSocialFeedTradeRowBase {\n return {\n ...mapMobileSocialFeedItemBase(server),\n kind: server.kind,\n positionId: server.position_id,\n direction: server.direction,\n marginMode: server.margin_mode,\n leverage: server.leverage,\n leverageAtMs: server.leverage_at_ms,\n tradeCount: server.trade_count,\n quantity: toBigNumber(server.quantity_x18),\n averagePrice: removeDecimals(server.average_price_x18),\n };\n}\n\n/**\n * Maps size changes and independently nullable liquidation facts.\n * @param server - The service response.\n * @returns The mapped social trade row.\n */\nexport function mapMobileSocialFeedTradeRow(\n server: MobileServerSocialFeedTradeRow,\n): MobileSocialFeedTradeRow {\n const base = mapMobileSocialFeedTradeRowBase(server);\n if (server.action === 'liquidated') {\n return {\n ...base,\n action: server.action,\n notional:\n server.notional_x18 === null ? null : toBigNumber(server.notional_x18),\n entryPrice: removeDecimals(server.entry_price_x18),\n liquidationOraclePrice: removeDecimals(\n server.liquidation_oracle_price_x18,\n ),\n liquidationExecutionPrice: removeDecimals(\n server.liquidation_execution_price_x18,\n ),\n realizedPnlDelta:\n server.realized_pnl_delta_x18 === null\n ? null\n : toBigNumber(server.realized_pnl_delta_x18),\n };\n }\n return {\n ...base,\n action: server.action,\n notional: toBigNumber(server.notional_x18),\n };\n}\n\n/**\n * Maps the item variant without mixing card and row fields.\n * @param server - The service response.\n * @returns The mapped social feed item.\n */\nexport function mapMobileSocialFeedItem(\n server: MobileServerSocialFeedItem,\n): MobileSocialFeedItem {\n return server.kind === 'trade_card'\n ? mapMobileSocialFeedTradeCard(server)\n : mapMobileSocialFeedTradeRow(server);\n}\n\n/**\n * Maps a fixed reading session, preserving opaque credentials and cursors.\n * @param server - The service response.\n * @returns The mapped feed read session.\n */\nexport function mapMobileSocialFeedReadSession(\n server: MobileServerSocialFeedReadSession,\n): MobileSocialFeedReadSession {\n return {\n sessionId: server.session_id,\n mode: server.mode,\n expiresAtMs: server.expires_at_ms,\n viewTracking: {\n minVisibleRatio: server.view_tracking.min_visible_ratio,\n minDurationMs: server.view_tracking.min_duration_ms,\n },\n updateCursor: server.update_cursor,\n viewerToken: server.viewer_token,\n };\n}\n\n/**\n * Maps a fixed feed page without changing item order or pagination.\n * @param server - The service response.\n * @returns The mapped social feed page.\n */\nexport function mapMobileSocialFeedPage(\n server: MobileServerSocialFeedResponse,\n): MobileSocialFeedPage {\n return {\n readSession: mapMobileSocialFeedReadSession(server.read_session),\n items: server.items.map(mapMobileSocialFeedItem),\n nextCursor: server.next_cursor,\n watermark: server.watermark,\n };\n}\n\n/**\n * Maps a main feed page and its ranking version.\n * @param server - The service response.\n * @returns The mapped ranked feed page.\n */\nexport function mapMobileSocialFeedRankedPage(\n server: MobileServerSocialFeedRankedResponse,\n): MobileSocialFeedRankedPage {\n return {\n ...mapMobileSocialFeedPage(server),\n rankingVersion: server.ranking_version,\n };\n}\n\n/**\n * Maps qualified trader items and their shared eligibility snapshot.\n * @param server - The service response.\n * @returns The mapped top traders feed page.\n */\nexport function mapMobileSocialFeedTopTradersPage(\n server: MobileServerSocialFeedTopTradersResponse,\n): MobileSocialFeedTopTradersPage {\n return {\n ...mapMobileSocialFeedRankedPage(server),\n cohort: {\n snapshotId: server.cohort.snapshot_id,\n status: server.cohort.status,\n coverage: {\n scope: server.cohort.coverage.scope,\n totalAuthors: server.cohort.coverage.total_authors,\n queriedAuthors: server.cohort.coverage.queried_authors,\n complete: server.cohort.coverage.complete,\n },\n },\n };\n}\n\n/**\n * Maps item details and the authorized reading session.\n * @param server - The service response.\n * @returns The mapped social feed item response.\n */\nexport function mapMobileSocialFeedItemResponse(\n server: MobileServerSocialFeedItemResponse,\n): MobileSocialFeedItemResponse {\n return {\n item: mapMobileSocialFeedItem(server.item),\n readSession: mapMobileSocialFeedReadSession(server.read_session),\n };\n}\n\n/**\n * Maps item deltas, preserving omitted fields and explicit null clears.\n * @param server - The service response.\n * @returns The mapped feed item patch.\n */\nexport function mapMobileSocialFeedItemPatch(\n server: MobileServerSocialFeedItemPatch,\n): MobileSocialFeedItemPatch {\n return {\n itemId: server.item_id,\n version: server.version,\n author: mapMobileSocialFeedAuthor(server.author),\n displayAtMs: server.display_at_ms,\n ...(server.interaction === undefined\n ? {}\n : { interaction: mapMobileSocialFeedInteraction(server.interaction) }),\n ...(server.trade_count === undefined\n ? {}\n : { tradeCount: server.trade_count }),\n ...(server.quantity_x18 === undefined\n ? {}\n : { quantity: toBigNumber(server.quantity_x18) }),\n ...(server.notional_x18 === undefined\n ? {}\n : {\n notional:\n server.notional_x18 === null\n ? null\n : toBigNumber(server.notional_x18),\n }),\n ...(server.average_price_x18 === undefined\n ? {}\n : {\n averagePrice: removeDecimals(server.average_price_x18),\n }),\n ...(server.entry_price_x18 === undefined\n ? {}\n : {\n entryPrice: removeDecimals(server.entry_price_x18),\n }),\n ...(server.liquidation_oracle_price_x18 === undefined\n ? {}\n : {\n liquidationOraclePrice: removeDecimals(\n server.liquidation_oracle_price_x18,\n ),\n }),\n ...(server.liquidation_execution_price_x18 === undefined\n ? {}\n : {\n liquidationExecutionPrice: removeDecimals(\n server.liquidation_execution_price_x18,\n ),\n }),\n ...(server.realized_pnl_delta_x18 === undefined\n ? {}\n : {\n realizedPnlDelta:\n server.realized_pnl_delta_x18 === null\n ? null\n : toBigNumber(server.realized_pnl_delta_x18),\n }),\n ...(server.leverage === undefined ? {} : { leverage: server.leverage }),\n ...(server.leverage_at_ms === undefined\n ? {}\n : { leverageAtMs: server.leverage_at_ms }),\n };\n}\n\n/**\n * Maps viewport changes while preserving the sequence and update baseline.\n * @param server - The service response.\n * @returns The mapped feed updates.\n */\nexport function mapMobileSocialFeedUpdates(\n server: MobileServerSocialFeedUpdatesResponse,\n): MobileSocialFeedUpdates {\n return {\n itemPatches: server.item_patches.map(mapMobileSocialFeedItemPatch),\n positionPatches: server.position_patches.map(\n mapMobileSocialFeedPositionPatch,\n ),\n unavailableTargets: server.unavailable_targets,\n newItemsCount: server.new_items_count,\n updateCursor: server.update_cursor,\n reset: server.reset,\n viewportRevision: server.viewport_revision,\n requestSeq: server.request_seq,\n };\n}\n\n/**\n * Maps common list parameters to the public query wire format without inserting defaults.\n * @param params - Client filters and session pagination.\n * @returns Wire fields; undefined options are omitted when serialized to JSON.\n */\nexport function mapMobileSocialFeedListParamsToServer(\n params: MobileSocialFeedListParams,\n): MobileServerSocialFeedListParams {\n return {\n feed_types: params.feedTypes,\n minimum_notional: params.minimumNotional,\n limit: params.limit,\n session_id: params.sessionId,\n cursor: params.cursor,\n };\n}\n\n/**\n * Maps the public viewing account and browser credential without inferring an identity.\n * @param params - Public relationship perspective and optional session credential.\n * @returns Wire fields for a public feed read.\n */\nexport function mapMobileSocialFeedReadParamsToServer(\n params: MobileSocialFeedReadParams,\n): MobileServerSocialFeedReadParams {\n return {\n view_as:\n params.viewAs === undefined ? undefined : subaccountToHex(params.viewAs),\n viewer_token: params.viewerToken,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"dataMappers.cjs","names":[],"sources":["../src/dataMappers.ts"],"sourcesContent":["import { removeDecimals, subaccountToHex, toBigNumber } from '@nadohq/shared';\nimport {\n GetMobileFollowListParams,\n MobileAvatarPreset,\n MobileAvatarSelection,\n MobileAvatarUpload,\n MobileFeedPage,\n MobileFeedTrade,\n MobileFollowBatchResultItem,\n MobileFollowListPage,\n MobileFollowMutationResult,\n MobileFollowSummary,\n MobileIdentitySummary,\n MobileNotificationPreferenceScope,\n MobileNotificationPreferences,\n MobileProfileSearchPage,\n MobileProfilesInclude,\n MobilePublicProfile,\n MobileRegisteredWallet,\n MobileSocialFeedAuthor,\n MobileSocialFeedInteraction,\n MobileSocialFeedItem,\n MobileSocialFeedItemBase,\n MobileSocialFeedItemPatch,\n MobileSocialFeedItemResponse,\n MobileSocialFeedListParams,\n MobileSocialFeedMarket,\n MobileSocialFeedPage,\n MobileSocialFeedPnl,\n MobileSocialFeedPositionCard,\n MobileSocialFeedPositionPatch,\n MobileSocialFeedRankedPage,\n MobileSocialFeedReadParams,\n MobileSocialFeedReadSession,\n MobileSocialFeedTopTradersPage,\n MobileSocialFeedTradeCard,\n MobileSocialFeedTradeRow,\n MobileSocialFeedTradeRowBase,\n MobileSocialFeedTraderBadge,\n MobileSocialFeedUpdates,\n SearchMobileProfilesParams,\n} from './types/clientTypes';\nimport {\n MobileServerAvatarUploadResponse,\n MobileServerFollowBatchResponse,\n MobileServerFollowMutationResponse,\n} from './types/serverExecuteTypes';\nimport {\n MobileServerAvatarPreset,\n MobileServerAvatarSelection,\n MobileServerFeedTrade,\n MobileServerFollowSummary,\n MobileServerIdentitySummary,\n MobileServerNotificationPreferenceScope,\n MobileServerNotificationPreferences,\n MobileServerProfile,\n MobileServerSocialFeedAuthor,\n MobileServerSocialFeedInteraction,\n MobileServerSocialFeedItem,\n MobileServerSocialFeedItemBase,\n MobileServerSocialFeedItemPatch,\n MobileServerSocialFeedMarket,\n MobileServerSocialFeedPnl,\n MobileServerSocialFeedPositionCard,\n MobileServerSocialFeedPositionPatch,\n MobileServerSocialFeedReadSession,\n MobileServerSocialFeedTradeCard,\n MobileServerSocialFeedTradeRow,\n MobileServerSocialFeedTradeRowBase,\n MobileServerSocialFeedTraderBadge,\n} from './types/serverModelTypes';\nimport {\n MobileServerFeedResponse,\n MobileServerFollowListResponse,\n MobileServerRegisteredWalletResponse,\n MobileServerSearchProfilesResponse,\n MobileServerSocialFeedItemResponse,\n MobileServerSocialFeedRankedResponse,\n MobileServerSocialFeedResponse,\n MobileServerSocialFeedTopTradersResponse,\n MobileServerSocialFeedUpdatesResponse,\n} from './types/serverQueryTypes';\nimport {\n MobileServerFollowListRequest,\n MobileServerProfilesInclude,\n MobileServerSearchProfilesRequest,\n MobileServerSocialFeedListParams,\n MobileServerSocialFeedReadParams,\n} from './types/serverRequestTypes';\n\n/**\n * Maps a server-side avatar preset to its client-side representation.\n */\nexport function mapMobileAvatarPreset(\n server: MobileServerAvatarPreset,\n): MobileAvatarPreset {\n return { id: server.id, avatarUrl: server.avatar_url };\n}\n\n/**\n * Maps an upload grant, preserving the signed PUT headers and server-provided lifetime.\n */\nexport function mapMobileAvatarUpload(\n server: MobileServerAvatarUploadResponse,\n): MobileAvatarUpload {\n return {\n uploadKey: server.upload_key,\n uploadUrl: server.upload_url,\n headers: server.headers,\n expiresInSeconds: server.expires_in_seconds,\n };\n}\n\n/**\n * Maps a client-side avatar selection to the signed wire payload; null clears the saved avatar.\n */\nexport function mapMobileAvatarSelectionToServer(\n avatar: MobileAvatarSelection | null,\n): MobileServerAvatarSelection | null {\n if (avatar === null) {\n return null;\n }\n if (avatar.type === 'preset') {\n return { type: 'preset', id: avatar.id };\n }\n return { type: 'upload', upload_key: avatar.uploadKey };\n}\n\n/**\n * Maps a server-side public profile (snake_case) to its client-side (camelCase) representation. The three\n * include-gated fields stay `undefined` when the backend omitted them, rather than being coerced to `null`\n * or zero, so callers can tell \"not requested\" from a real value.\n */\nexport function mapMobilePublicProfile(\n server: MobileServerProfile,\n): MobilePublicProfile {\n return {\n ...mapMobileIdentitySummary(server),\n bio: server.bio,\n privateMode: server.private_mode,\n followerCount: server.follower_count,\n followingCount: server.following_count,\n followSummary: server.follow_summary\n ? mapMobileFollowSummary(server.follow_summary)\n : undefined,\n };\n}\n\n/**\n * Maps a server-side identity summary (snake_case) to its client-side (camelCase) representation.\n */\nfunction mapMobileIdentitySummary(\n server: MobileServerIdentitySummary,\n): MobileIdentitySummary {\n return {\n subaccount: server.subaccount,\n username: server.username,\n displayName: server.display_name,\n avatarUrl: server.avatar_url,\n };\n}\n\n/**\n * Maps a server-side follow summary to its client-side representation.\n */\nfunction mapMobileFollowSummary(\n server: MobileServerFollowSummary,\n): MobileFollowSummary {\n return {\n isFollowing: server.is_following,\n followedByCount: server.followed_by_count,\n followedBy: server.followed_by.map(mapMobileIdentitySummary),\n };\n}\n\n/**\n * Maps a server-side Followers or Following response to a client-side {@link MobileFollowListPage}. Rows\n * keep `isFollowing` absent when the request named no `viewAs`, rather than defaulting it to `false`.\n */\nexport function mapMobileFollowListPage(\n server: MobileServerFollowListResponse,\n): MobileFollowListPage {\n return {\n accounts: server.accounts.map((account) => ({\n identity: mapMobileIdentitySummary(account.identity),\n isFollowing: account.is_following,\n followerCount: account.follower_count,\n })),\n nextCursor: server.next_cursor,\n };\n}\n\n/**\n * Maps a server-side profile search page (snake_case) to its client-side (camelCase) representation. Each\n * match goes through {@link mapMobilePublicProfile}, so include-gated fields stay `undefined` when omitted.\n */\nexport function mapMobileProfileSearchPage(\n server: MobileServerSearchProfilesResponse,\n): MobileProfileSearchPage {\n return {\n profiles: server.profiles.map(mapMobilePublicProfile),\n nextCursor: server.next_cursor,\n };\n}\n\n/**\n * Maps a server-side follow or unfollow response to its client-side representation.\n */\nexport function mapMobileFollowMutationResult(\n server: MobileServerFollowMutationResponse,\n): MobileFollowMutationResult {\n return {\n isFollowing: server.is_following,\n followerCount: server.follower_count,\n };\n}\n\n/**\n * Maps a server-side batch follow or unfollow response to its client-side representation.\n */\nexport function mapMobileFollowBatchResult(\n server: MobileServerFollowBatchResponse,\n): MobileFollowBatchResultItem[] {\n return server.results.map((result) => ({\n subaccount: result.subaccount,\n isFollowing: result.is_following,\n followerCount: result.follower_count,\n }));\n}\n\n/**\n * Maps server-side notification preferences (snake_case) to their client-side (camelCase) representation.\n */\nexport function mapMobileNotificationPreferences(\n server: MobileServerNotificationPreferences,\n): MobileNotificationPreferences {\n return {\n schemaVersion: server.schema_version,\n categories: server.categories.map((category) => ({\n category: category.category,\n enabled: category.enabled,\n scopes: category.scopes.map(mapMobileNotificationPreferenceScope),\n })),\n };\n}\n\nfunction mapMobileNotificationPreferenceScope(\n server: MobileServerNotificationPreferenceScope,\n): MobileNotificationPreferenceScope {\n if (server.type === 'subaccount') {\n return { type: 'subaccount', subaccount: server.subaccount };\n }\n return { type: 'product', productId: server.product_id };\n}\n\n/**\n * Maps client-side profiles includes (camelCase) to the server-side (snake_case) wire shape.\n */\nexport function mapMobileProfilesIncludeToServer(\n include: MobileProfilesInclude,\n): MobileServerProfilesInclude {\n return {\n follow_counts: include.followCounts,\n follow_summary: include.followSummary\n ? { view_as: subaccountToHex(include.followSummary.viewAs) }\n : undefined,\n };\n}\n\n/**\n * Maps the client-side params of a Followers or Following page to the server-side wire shape. Both list\n * directions take identical params and differ only in the `type` the caller dispatches on.\n */\nexport function mapMobileFollowListParamsToServer(\n params: GetMobileFollowListParams,\n): MobileServerFollowListRequest {\n return {\n subaccount: subaccountToHex(params.target),\n view_as: params.viewAs ? subaccountToHex(params.viewAs) : undefined,\n cursor: params.cursor,\n limit: params.limit,\n };\n}\n\n/**\n * Maps the client-side params of a profile search page to the server-side wire shape.\n */\nexport function mapMobileProfileSearchParamsToServer(\n params: SearchMobileProfilesParams,\n): MobileServerSearchProfilesRequest {\n return {\n query: params.query,\n include: params.include\n ? mapMobileProfilesIncludeToServer(params.include)\n : undefined,\n cursor: params.cursor,\n limit: params.limit,\n };\n}\n\n/**\n * Maps client-side notification preferences (camelCase) to the server-side (snake_case) wire shape.\n */\nexport function mapMobileNotificationPreferencesToServer(\n preferences: MobileNotificationPreferences,\n): MobileServerNotificationPreferences {\n return {\n schema_version: preferences.schemaVersion,\n categories: preferences.categories.map((category) => ({\n category: category.category,\n enabled: category.enabled,\n scopes: category.scopes.map(mapMobileNotificationPreferenceScopeToServer),\n })),\n };\n}\n\nfunction mapMobileNotificationPreferenceScopeToServer(\n scope: MobileNotificationPreferenceScope,\n): MobileServerNotificationPreferenceScope {\n if (scope.type === 'subaccount') {\n return { type: 'subaccount', subaccount: scope.subaccount };\n }\n return { type: 'product', product_id: scope.productId };\n}\n\n/**\n * Maps a server-side feed trade (snake_case) to its client-side (camelCase) representation.\n */\nfunction mapMobileFeedTrade(server: MobileServerFeedTrade): MobileFeedTrade {\n return {\n ...mapMobileIdentitySummary(server),\n orderDigest: server.order_digest,\n productId: server.product_id,\n quantity: server.quantity,\n notional: server.notional,\n averagePrice: server.average_price,\n margin: {\n mode: server.margin.mode,\n estimatedLeverage: server.margin.estimated_leverage,\n },\n position: server.position,\n realizedPnl: server.realized_pnl,\n filledAt: server.filled_at_ms,\n };\n}\n\n/**\n * Maps a server-side feed response to a client-side {@link MobileFeedPage}.\n */\nexport function mapMobileFeedPage(\n server: MobileServerFeedResponse,\n): MobileFeedPage {\n return {\n trades: server.trades.map(mapMobileFeedTrade),\n nextCursor: server.next_cursor,\n };\n}\n\n/**\n * Maps a server-side registered wallet (snake_case) to its client-side (camelCase) representation.\n */\nexport function mapMobileRegisteredWallet(\n server: MobileServerRegisteredWalletResponse,\n): MobileRegisteredWallet {\n return {\n wallet: server.wallet,\n platform: server.platform,\n locale: server.locale,\n appVersion: server.app_version,\n tokenFingerprintPrefix: server.token_fingerprint_prefix,\n lastSeenAt: server.last_seen_at,\n };\n}\n\n/**\n * Maps the official account PnL badge, retaining x18 amount units.\n * @param server - The service response.\n * @returns The mapped trader badge.\n */\nexport function mapMobileSocialFeedTraderBadge(\n server: MobileServerSocialFeedTraderBadge,\n): MobileSocialFeedTraderBadge {\n return {\n code: server.code,\n pnl: toBigNumber(server.pnl_x18),\n metricKey: server.metric_key,\n window: server.window,\n sourceAsOfMs: server.source_as_of_ms,\n fetchedAtMs: server.fetched_at_ms,\n snapshotId: server.snapshot_id,\n };\n}\n\n/**\n * Maps author identity, relationship state, and optional qualification badge.\n * @param server - The service response.\n * @returns The mapped feed author.\n */\nexport function mapMobileSocialFeedAuthor(\n server: MobileServerSocialFeedAuthor,\n): MobileSocialFeedAuthor {\n return {\n ...mapMobileIdentitySummary(server),\n isFollowing: server.is_following,\n traderBadge:\n server.trader_badge === null\n ? null\n : mapMobileSocialFeedTraderBadge(server.trader_badge),\n traderDataStatus: server.trader_data_status,\n };\n}\n\n/**\n * Maps social market metadata.\n * @param server - The service response.\n * @returns The mapped feed market.\n */\nexport function mapMobileSocialFeedMarket(\n server: MobileServerSocialFeedMarket,\n): MobileSocialFeedMarket {\n return {\n productId: server.product_id,\n symbol: server.symbol,\n logoUrl: server.logo_url,\n category: server.category,\n sourceCategories: server.source_categories,\n };\n}\n\n/**\n * Maps position PnL while retaining x18 amount units and availability.\n * @param server - The service response.\n * @returns The mapped feed pnl.\n */\nexport function mapMobileSocialFeedPnl(\n server: MobileServerSocialFeedPnl,\n): MobileSocialFeedPnl {\n return {\n amount: server.amount_x18 === null ? null : toBigNumber(server.amount_x18),\n basis: server.basis,\n mode: server.mode,\n asOfMs: server.as_of_ms,\n quality: server.quality,\n };\n}\n\n/**\n * Maps complete position facts, converting entry price to decimal units.\n * @param server - The service response.\n * @returns The mapped feed position patch.\n */\nexport function mapMobileSocialFeedPositionPatch(\n server: MobileServerSocialFeedPositionPatch,\n): MobileSocialFeedPositionPatch {\n return {\n positionId: server.position_id,\n positionVersion: server.position_version,\n stateAsOfMs: server.state_as_of_ms,\n entryPrice: removeDecimals(server.entry_price_x18),\n displayBasis: server.display_basis,\n snapshotAtMs: server.snapshot_at_ms,\n quantity: toBigNumber(server.quantity_x18),\n notional: toBigNumber(server.notional_x18),\n state: server.state,\n historyQuality: server.history_quality,\n marginMode: server.margin_mode,\n leverage: server.leverage,\n leverageAtMs: server.leverage_at_ms,\n pnl: mapMobileSocialFeedPnl(server.pnl),\n };\n}\n\n/**\n * Maps a position card with its current or frozen financial state.\n * @param server - The service response.\n * @returns The mapped feed position card.\n */\nexport function mapMobileSocialFeedPositionCard(\n server: MobileServerSocialFeedPositionCard,\n): MobileSocialFeedPositionCard {\n return {\n ...mapMobileSocialFeedPositionPatch(server),\n productId: server.product_id,\n market: mapMobileSocialFeedMarket(server.market),\n direction: server.direction,\n };\n}\n\n/**\n * Maps interaction counters without inventing unavailable relationship state.\n * @param server - The service response.\n * @returns The mapped feed interaction.\n */\nexport function mapMobileSocialFeedInteraction(\n server: MobileServerSocialFeedInteraction,\n): MobileSocialFeedInteraction {\n return {\n likeCount: server.like_count,\n commentCount: server.comment_count,\n viewCount: server.view_count,\n likedByMe: server.liked_by_me,\n };\n}\n\n/**\n * Maps common item metadata and server capabilities.\n * @param server - The service response.\n * @returns The mapped social feed item base.\n */\nexport function mapMobileSocialFeedItemBase(\n server: MobileServerSocialFeedItemBase,\n): MobileSocialFeedItemBase {\n return {\n id: server.id,\n hasAnalysis: server.has_analysis,\n drawing: server.drawing,\n author: mapMobileSocialFeedAuthor(server.author),\n createdAtMs: server.created_at_ms,\n displayAtMs: server.display_at_ms,\n version: server.version,\n market: mapMobileSocialFeedMarket(server.market),\n capabilities: {\n canLike: server.capabilities.can_like,\n canComment: server.capabilities.can_comment,\n canRecordView: server.capabilities.can_record_view,\n },\n };\n}\n\n/**\n * Maps an automatic trade card and its position and interaction metadata.\n * @param server - The service response.\n * @returns The mapped social trade card.\n */\nexport function mapMobileSocialFeedTradeCard(\n server: MobileServerSocialFeedTradeCard,\n): MobileSocialFeedTradeCard {\n return {\n ...mapMobileSocialFeedItemBase(server),\n kind: server.kind,\n action: server.action,\n text: server.text,\n mentions: server.mentions,\n position: mapMobileSocialFeedPositionCard(server.position),\n interaction: mapMobileSocialFeedInteraction(server.interaction),\n commentPreview: {\n items: server.comment_preview.items,\n totalCount: server.comment_preview.total_count,\n nextCursor: server.comment_preview.next_cursor,\n },\n };\n}\n\n/**\n * Maps historical trade facts with decimal execution prices and x18 quantities.\n * @param server - The service response.\n * @returns The mapped social trade row base.\n */\nexport function mapMobileSocialFeedTradeRowBase(\n server: MobileServerSocialFeedTradeRowBase,\n): MobileSocialFeedTradeRowBase {\n return {\n ...mapMobileSocialFeedItemBase(server),\n kind: server.kind,\n positionId: server.position_id,\n direction: server.direction,\n marginMode: server.margin_mode,\n leverage: server.leverage,\n leverageAtMs: server.leverage_at_ms,\n tradeCount: server.trade_count,\n quantity: toBigNumber(server.quantity_x18),\n averagePrice: removeDecimals(server.average_price_x18),\n };\n}\n\n/**\n * Maps size changes and independently nullable liquidation facts.\n * @param server - The service response.\n * @returns The mapped social trade row.\n */\nexport function mapMobileSocialFeedTradeRow(\n server: MobileServerSocialFeedTradeRow,\n): MobileSocialFeedTradeRow {\n const base = mapMobileSocialFeedTradeRowBase(server);\n if (server.action === 'liquidated') {\n return {\n ...base,\n action: server.action,\n notional:\n server.notional_x18 === null ? null : toBigNumber(server.notional_x18),\n entryPrice: removeDecimals(server.entry_price_x18),\n liquidationOraclePrice: removeDecimals(\n server.liquidation_oracle_price_x18,\n ),\n liquidationExecutionPrice: removeDecimals(\n server.liquidation_execution_price_x18,\n ),\n realizedPnlDelta:\n server.realized_pnl_delta_x18 === null\n ? null\n : toBigNumber(server.realized_pnl_delta_x18),\n };\n }\n return {\n ...base,\n action: server.action,\n notional: toBigNumber(server.notional_x18),\n };\n}\n\n/**\n * Maps the item variant without mixing card and row fields.\n * @param server - The service response.\n * @returns The mapped social feed item.\n */\nexport function mapMobileSocialFeedItem(\n server: MobileServerSocialFeedItem,\n): MobileSocialFeedItem {\n return server.kind === 'trade_card'\n ? mapMobileSocialFeedTradeCard(server)\n : mapMobileSocialFeedTradeRow(server);\n}\n\n/**\n * Maps a fixed reading session, preserving opaque credentials and cursors.\n * @param server - The service response.\n * @returns The mapped feed read session.\n */\nexport function mapMobileSocialFeedReadSession(\n server: MobileServerSocialFeedReadSession,\n): MobileSocialFeedReadSession {\n return {\n sessionId: server.session_id,\n mode: server.mode,\n expiresAtMs: server.expires_at_ms,\n viewTracking: {\n minVisibleRatio: server.view_tracking.min_visible_ratio,\n minDurationMs: server.view_tracking.min_duration_ms,\n },\n updateCursor: server.update_cursor,\n viewerToken: server.viewer_token,\n };\n}\n\n/**\n * Maps a fixed feed page without changing item order or pagination.\n * @param server - The service response.\n * @returns The mapped social feed page.\n */\nexport function mapMobileSocialFeedPage(\n server: MobileServerSocialFeedResponse,\n): MobileSocialFeedPage {\n return {\n readSession: mapMobileSocialFeedReadSession(server.read_session),\n items: server.items.map(mapMobileSocialFeedItem),\n nextCursor: server.next_cursor,\n watermark: server.watermark,\n };\n}\n\n/**\n * Maps a main feed page and its ranking version.\n * @param server - The service response.\n * @returns The mapped ranked feed page.\n */\nexport function mapMobileSocialFeedRankedPage(\n server: MobileServerSocialFeedRankedResponse,\n): MobileSocialFeedRankedPage {\n return {\n ...mapMobileSocialFeedPage(server),\n rankingVersion: server.ranking_version,\n };\n}\n\n/**\n * Maps qualified trader items and their shared eligibility snapshot.\n * @param server - The service response.\n * @returns The mapped top traders feed page.\n */\nexport function mapMobileSocialFeedTopTradersPage(\n server: MobileServerSocialFeedTopTradersResponse,\n): MobileSocialFeedTopTradersPage {\n return {\n ...mapMobileSocialFeedRankedPage(server),\n cohort: {\n snapshotId: server.cohort.snapshot_id,\n status: server.cohort.status,\n coverage: {\n scope: server.cohort.coverage.scope,\n totalAuthors: server.cohort.coverage.total_authors,\n queriedAuthors: server.cohort.coverage.queried_authors,\n complete: server.cohort.coverage.complete,\n },\n },\n };\n}\n\n/**\n * Maps item details and the authorized reading session.\n * @param server - The service response.\n * @returns The mapped social feed item response.\n */\nexport function mapMobileSocialFeedItemResponse(\n server: MobileServerSocialFeedItemResponse,\n): MobileSocialFeedItemResponse {\n return {\n item: mapMobileSocialFeedItem(server.item),\n readSession: mapMobileSocialFeedReadSession(server.read_session),\n };\n}\n\n/**\n * Maps item deltas, preserving omitted fields and explicit null clears.\n * @param server - The service response.\n * @returns The mapped feed item patch.\n */\nexport function mapMobileSocialFeedItemPatch(\n server: MobileServerSocialFeedItemPatch,\n): MobileSocialFeedItemPatch {\n return {\n itemId: server.item_id,\n version: server.version,\n author: mapMobileSocialFeedAuthor(server.author),\n displayAtMs: server.display_at_ms,\n ...(server.interaction === undefined\n ? {}\n : { interaction: mapMobileSocialFeedInteraction(server.interaction) }),\n ...(server.trade_count === undefined\n ? {}\n : { tradeCount: server.trade_count }),\n ...(server.quantity_x18 === undefined\n ? {}\n : { quantity: toBigNumber(server.quantity_x18) }),\n ...(server.notional_x18 === undefined\n ? {}\n : {\n notional:\n server.notional_x18 === null\n ? null\n : toBigNumber(server.notional_x18),\n }),\n ...(server.average_price_x18 === undefined\n ? {}\n : {\n averagePrice: removeDecimals(server.average_price_x18),\n }),\n ...(server.entry_price_x18 === undefined\n ? {}\n : {\n entryPrice: removeDecimals(server.entry_price_x18),\n }),\n ...(server.liquidation_oracle_price_x18 === undefined\n ? {}\n : {\n liquidationOraclePrice: removeDecimals(\n server.liquidation_oracle_price_x18,\n ),\n }),\n ...(server.liquidation_execution_price_x18 === undefined\n ? {}\n : {\n liquidationExecutionPrice: removeDecimals(\n server.liquidation_execution_price_x18,\n ),\n }),\n ...(server.realized_pnl_delta_x18 === undefined\n ? {}\n : {\n realizedPnlDelta:\n server.realized_pnl_delta_x18 === null\n ? null\n : toBigNumber(server.realized_pnl_delta_x18),\n }),\n ...(server.leverage === undefined ? {} : { leverage: server.leverage }),\n ...(server.leverage_at_ms === undefined\n ? {}\n : { leverageAtMs: server.leverage_at_ms }),\n };\n}\n\n/**\n * Maps viewport changes while preserving the sequence and update baseline.\n * @param server - The service response.\n * @returns The mapped feed updates.\n */\nexport function mapMobileSocialFeedUpdates(\n server: MobileServerSocialFeedUpdatesResponse,\n): MobileSocialFeedUpdates {\n return {\n itemPatches: server.item_patches.map(mapMobileSocialFeedItemPatch),\n positionPatches: server.position_patches.map(\n mapMobileSocialFeedPositionPatch,\n ),\n unavailableTargets: server.unavailable_targets,\n newItemsCount: server.new_items_count,\n updateCursor: server.update_cursor,\n reset: server.reset,\n viewportRevision: server.viewport_revision,\n requestSeq: server.request_seq,\n };\n}\n\n/**\n * Maps common list parameters to the public query wire format without inserting defaults.\n * @param params - Client filters and session pagination.\n * @returns Wire fields; undefined options are omitted when serialized to JSON.\n */\nexport function mapMobileSocialFeedListParamsToServer(\n params: MobileSocialFeedListParams,\n): MobileServerSocialFeedListParams {\n return {\n feed_types: params.feedTypes,\n minimum_notional: params.minimumNotional,\n limit: params.limit,\n session_id: params.sessionId,\n cursor: params.cursor,\n };\n}\n\n/**\n * Maps the public viewing account and browser credential without inferring an identity.\n * @param params - Public relationship perspective and optional session credential.\n * @returns Wire fields for a public feed read.\n */\nexport function mapMobileSocialFeedReadParamsToServer(\n params: MobileSocialFeedReadParams,\n): MobileServerSocialFeedReadParams {\n return {\n view_as:\n params.viewAs === undefined ? undefined : subaccountToHex(params.viewAs),\n viewer_token: params.viewerToken,\n };\n}\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { A as MobileServerSocialFeedMarket, D as MobileServerSocialFeedItem, E as MobileServerSocialFeedInteraction, F as MobileServerSocialFeedTradeCard, I as MobileServerSocialFeedTradeRow, L as MobileServerSocialFeedTradeRowBase, M as MobileServerSocialFeedPositionCard, N as MobileServerSocialFeedPositionPatch, O as MobileServerSocialFeedItemBase, P as MobileServerSocialFeedReadSession, R as MobileServerSocialFeedTraderBadge, b as MobileServerProfile, d as MobileServerAvatarSelection, j as MobileServerSocialFeedPnl, k as MobileServerSocialFeedItemPatch, u as MobileServerAvatarPreset, x as MobileServerSocialFeedAuthor, y as MobileServerNotificationPreferences } from "./serverModelTypes-DAqEyYtB.cjs";
2
- import { $ as MobileSocialFeedListParams, E as MobileFollowMutationResult, F as MobileRegisteredWallet, H as MobileSocialFeedAuthor, J as MobileSocialFeedInteraction, M as MobileProfilesInclude, N as MobilePublicProfile, Q as MobileSocialFeedItemResponse, S as MobileFeedPage, T as MobileFollowListPage, X as MobileSocialFeedItemBase, Y as MobileSocialFeedItem, Z as MobileSocialFeedItemPatch, _ as MobileAvatarPreset, at as MobileSocialFeedRankedPage, ct as MobileSocialFeedTopTradersPage, dt as MobileSocialFeedTradeRowBase, et as MobileSocialFeedMarket, ft as MobileSocialFeedTraderBadge, i as GetMobileFollowListParams, it as MobileSocialFeedPositionPatch, j as MobileNotificationPreferences, lt as MobileSocialFeedTradeCard, nt as MobileSocialFeedPnl, ot as MobileSocialFeedReadParams, pt as MobileSocialFeedUpdates, rt as MobileSocialFeedPositionCard, st as MobileSocialFeedReadSession, tt as MobileSocialFeedPage, ut as MobileSocialFeedTradeRow, v as MobileAvatarSelection, y as MobileAvatarUpload } from "./clientTypes-DnPE1zZO.cjs";
3
- import { d as MobileServerSocialFeedReadParams, n as MobileServerFollowListRequest, r as MobileServerProfilesInclude, u as MobileServerSocialFeedListParams } from "./serverRequestTypes-DGGqQMK3.cjs";
4
- import { o as MobileServerFollowMutationResponse, t as MobileServerAvatarUploadResponse } from "./serverExecuteTypes-CgjzwBaA.cjs";
5
- import { d as MobileServerSocialFeedRankedResponse, f as MobileServerSocialFeedResponse, l as MobileServerRegisteredWalletResponse, m as MobileServerSocialFeedUpdatesResponse, n as MobileServerFeedResponse, p as MobileServerSocialFeedTopTradersResponse, r as MobileServerFollowListResponse, u as MobileServerSocialFeedItemResponse } from "./serverQueryTypes-H_mI6fPl.cjs";
2
+ import { $ as MobileSocialFeedItemBase, D as MobileFollowMutationResult, E as MobileFollowListPage, F as MobilePublicProfile, G as MobileSocialFeedAuthor, L as MobileRegisteredWallet, M as MobileNotificationPreferences, N as MobileProfileSearchPage, P as MobileProfilesInclude, Q as MobileSocialFeedItem, S as MobileFeedPage, St as SearchMobileProfilesParams, Z as MobileSocialFeedInteraction, _ as MobileAvatarPreset, at as MobileSocialFeedPnl, ct as MobileSocialFeedRankedPage, dt as MobileSocialFeedTopTradersPage, et as MobileSocialFeedItemPatch, ft as MobileSocialFeedTradeCard, gt as MobileSocialFeedUpdates, ht as MobileSocialFeedTraderBadge, i as GetMobileFollowListParams, it as MobileSocialFeedPage, lt as MobileSocialFeedReadParams, mt as MobileSocialFeedTradeRowBase, nt as MobileSocialFeedListParams, ot as MobileSocialFeedPositionCard, pt as MobileSocialFeedTradeRow, rt as MobileSocialFeedMarket, st as MobileSocialFeedPositionPatch, tt as MobileSocialFeedItemResponse, ut as MobileSocialFeedReadSession, v as MobileAvatarSelection, w as MobileFollowBatchResultItem, y as MobileAvatarUpload } from "./clientTypes-BWFKo9oE.cjs";
3
+ import { d as MobileServerSocialFeedListParams, f as MobileServerSocialFeedReadParams, l as MobileServerSearchProfilesRequest, n as MobileServerFollowListRequest, r as MobileServerProfilesInclude } from "./serverRequestTypes-CxDRFKfv.cjs";
4
+ import { c as MobileServerFollowMutationResponse, o as MobileServerFollowBatchResponse, t as MobileServerAvatarUploadResponse } from "./serverExecuteTypes-DVRa6ifu.cjs";
5
+ import { d as MobileServerSocialFeedItemResponse, f as MobileServerSocialFeedRankedResponse, h as MobileServerSocialFeedUpdatesResponse, l as MobileServerRegisteredWalletResponse, m as MobileServerSocialFeedTopTradersResponse, n as MobileServerFeedResponse, p as MobileServerSocialFeedResponse, r as MobileServerFollowListResponse, u as MobileServerSearchProfilesResponse } from "./serverQueryTypes-DNdMpmDr.cjs";
6
6
 
7
7
  //#region src/dataMappers.d.ts
8
8
  /**
@@ -28,10 +28,19 @@ declare function mapMobilePublicProfile(server: MobileServerProfile): MobilePubl
28
28
  * keep `isFollowing` absent when the request named no `viewAs`, rather than defaulting it to `false`.
29
29
  */
30
30
  declare function mapMobileFollowListPage(server: MobileServerFollowListResponse): MobileFollowListPage;
31
+ /**
32
+ * Maps a server-side profile search page (snake_case) to its client-side (camelCase) representation. Each
33
+ * match goes through {@link mapMobilePublicProfile}, so include-gated fields stay `undefined` when omitted.
34
+ */
35
+ declare function mapMobileProfileSearchPage(server: MobileServerSearchProfilesResponse): MobileProfileSearchPage;
31
36
  /**
32
37
  * Maps a server-side follow or unfollow response to its client-side representation.
33
38
  */
34
39
  declare function mapMobileFollowMutationResult(server: MobileServerFollowMutationResponse): MobileFollowMutationResult;
40
+ /**
41
+ * Maps a server-side batch follow or unfollow response to its client-side representation.
42
+ */
43
+ declare function mapMobileFollowBatchResult(server: MobileServerFollowBatchResponse): MobileFollowBatchResultItem[];
35
44
  /**
36
45
  * Maps server-side notification preferences (snake_case) to their client-side (camelCase) representation.
37
46
  */
@@ -45,6 +54,10 @@ declare function mapMobileProfilesIncludeToServer(include: MobileProfilesInclude
45
54
  * directions take identical params and differ only in the `type` the caller dispatches on.
46
55
  */
47
56
  declare function mapMobileFollowListParamsToServer(params: GetMobileFollowListParams): MobileServerFollowListRequest;
57
+ /**
58
+ * Maps the client-side params of a profile search page to the server-side wire shape.
59
+ */
60
+ declare function mapMobileProfileSearchParamsToServer(params: SearchMobileProfilesParams): MobileServerSearchProfilesRequest;
48
61
  /**
49
62
  * Maps client-side notification preferences (camelCase) to the server-side (snake_case) wire shape.
50
63
  */
@@ -184,5 +197,5 @@ declare function mapMobileSocialFeedListParamsToServer(params: MobileSocialFeedL
184
197
  */
185
198
  declare function mapMobileSocialFeedReadParamsToServer(params: MobileSocialFeedReadParams): MobileServerSocialFeedReadParams;
186
199
  //#endregion
187
- export { mapMobileAvatarPreset, mapMobileAvatarSelectionToServer, mapMobileAvatarUpload, mapMobileFeedPage, mapMobileFollowListPage, mapMobileFollowListParamsToServer, mapMobileFollowMutationResult, mapMobileNotificationPreferences, mapMobileNotificationPreferencesToServer, mapMobileProfilesIncludeToServer, mapMobilePublicProfile, mapMobileRegisteredWallet, mapMobileSocialFeedAuthor, mapMobileSocialFeedInteraction, mapMobileSocialFeedItem, mapMobileSocialFeedItemBase, mapMobileSocialFeedItemPatch, mapMobileSocialFeedItemResponse, mapMobileSocialFeedListParamsToServer, mapMobileSocialFeedMarket, mapMobileSocialFeedPage, mapMobileSocialFeedPnl, mapMobileSocialFeedPositionCard, mapMobileSocialFeedPositionPatch, mapMobileSocialFeedRankedPage, mapMobileSocialFeedReadParamsToServer, mapMobileSocialFeedReadSession, mapMobileSocialFeedTopTradersPage, mapMobileSocialFeedTradeCard, mapMobileSocialFeedTradeRow, mapMobileSocialFeedTradeRowBase, mapMobileSocialFeedTraderBadge, mapMobileSocialFeedUpdates };
200
+ export { mapMobileAvatarPreset, mapMobileAvatarSelectionToServer, mapMobileAvatarUpload, mapMobileFeedPage, mapMobileFollowBatchResult, mapMobileFollowListPage, mapMobileFollowListParamsToServer, mapMobileFollowMutationResult, mapMobileNotificationPreferences, mapMobileNotificationPreferencesToServer, mapMobileProfileSearchPage, mapMobileProfileSearchParamsToServer, mapMobileProfilesIncludeToServer, mapMobilePublicProfile, mapMobileRegisteredWallet, mapMobileSocialFeedAuthor, mapMobileSocialFeedInteraction, mapMobileSocialFeedItem, mapMobileSocialFeedItemBase, mapMobileSocialFeedItemPatch, mapMobileSocialFeedItemResponse, mapMobileSocialFeedListParamsToServer, mapMobileSocialFeedMarket, mapMobileSocialFeedPage, mapMobileSocialFeedPnl, mapMobileSocialFeedPositionCard, mapMobileSocialFeedPositionPatch, mapMobileSocialFeedRankedPage, mapMobileSocialFeedReadParamsToServer, mapMobileSocialFeedReadSession, mapMobileSocialFeedTopTradersPage, mapMobileSocialFeedTradeCard, mapMobileSocialFeedTradeRow, mapMobileSocialFeedTradeRowBase, mapMobileSocialFeedTraderBadge, mapMobileSocialFeedUpdates };
188
201
  //# sourceMappingURL=dataMappers.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataMappers.d.cts","names":[],"sources":["../src/src/dataMappers.ts"],"mappings":";;;;;;;;;AAuFA;iBAAgB,qBAAA,CACd,MAAA,EAAQ,wBAAA,GACP,kBAAkB;;;;iBAOL,qBAAA,CACd,MAAA,EAAQ,gCAAA,GACP,kBAAkB;;;AATA;iBAqBL,gCAAA,CACd,MAAA,EAAQ,qBAAA,UACP,2BAA2B;;;;;;iBAed,sBAAA,CACd,MAAA,EAAQ,mBAAA,GACP,mBAAmB;;AA/BD;AAYrB;;iBA+DgB,uBAAA,CACd,MAAA,EAAQ,8BAAA,GACP,oBAAoB;;;;iBAcP,6BAAA,CACd,MAAA,EAAQ,kCAAA,GACP,0BAA0B;;AA/EC;AAe9B;iBA0EgB,gCAAA,CACd,MAAA,EAAQ,mCAAA,GACP,6BAA6B;;;;iBAuBhB,gCAAA,CACd,OAAA,EAAS,qBAAA,GACR,2BAA2B;;;AAnGR;AA4CtB;iBAoEgB,iCAAA,CACd,MAAA,EAAQ,yBAAA,GACP,6BAA6B;;;;iBAYhB,wCAAA,CACd,WAAA,EAAa,6BAAA,GACZ,mCAAmC;;;AAlFf;iBA8HP,iBAAA,CACd,MAAA,EAAQ,wBAAA,GACP,cAAc;;;;iBAUD,yBAAA,CACd,MAAA,EAAQ,oCAAA,GACP,sBAAsB;;;;AA5HI;AAU7B;iBAkIgB,8BAAA,CACd,MAAA,EAAQ,iCAAA,GACP,2BAA2B;;;;;;iBAiBd,yBAAA,CACd,MAAA,EAAQ,4BAAA,GACP,sBAAsB;AArJO;AAuBhC;;;;AAvBgC,iBAsKhB,yBAAA,CACd,MAAA,EAAQ,4BAAA,GACP,sBAAsB;;;;AA/IK;AAa9B;iBAiJgB,sBAAA,CACd,MAAA,EAAQ,yBAAA,GACP,mBAAmB;;;;;;iBAeN,gCAAA,CACd,MAAA,EAAQ,mCAAA,GACP,6BAA6B;AAlKA;AAYhC;;;;AAZgC,iBA0LhB,+BAAA,CACd,MAAA,EAAQ,kCAAA,GACP,4BAA4B;;;;AA9KO;AA4CtC;iBAgJgB,8BAAA,CACd,MAAA,EAAQ,iCAAA,GACP,2BAA2B;;;;;;iBAcd,2BAAA,CACd,MAAA,EAAQ,8BAAA,GACP,wBAAwB;AAhKV;AAUjB;;;;AAViB,iBAuLD,4BAAA,CACd,MAAA,EAAQ,+BAAA,GACP,yBAAyB;;;;AA7KH;AAgBzB;iBAmLgB,+BAAA,CACd,MAAA,EAAQ,kCAAA,GACP,4BAA4B;;;;;;iBAoBf,2BAAA,CACd,MAAA,EAAQ,8BAAA,GACP,wBAAwB;AAzMG;AAiB9B;;;;AAjB8B,iBA0Od,uBAAA,CACd,MAAA,EAAQ,0BAAA,GACP,oBAAoB;;;;AAzNE;AAiBzB;iBAmNgB,8BAAA,CACd,MAAA,EAAQ,iCAAA,GACP,2BAA2B;;;;;;iBAmBd,uBAAA,CACd,MAAA,EAAQ,8BAAA,GACP,oBAAoB;AAxOE;AAezB;;;;AAfyB,iBAsPT,6BAAA,CACd,MAAA,EAAQ,oCAAA,GACP,0BAA0B;;;;AAvOP;AAetB;iBAoOgB,iCAAA,CACd,MAAA,EAAQ,wCAAA,GACP,8BAA8B;;;;;;iBAqBjB,+BAAA,CACd,MAAA,EAAQ,kCAAA,GACP,4BAA4B;AA3PC;AAwBhC;;;;AAxBgC,iBAuQhB,4BAAA,CACd,MAAA,EAAQ,+BAAA,GACP,yBAAyB;;;;AA/OG;AAc/B;iBAoSgB,0BAAA,CACd,MAAA,EAAQ,qCAAA,GACP,uBAAuB;;;;;;iBAoBV,qCAAA,CACd,MAAA,EAAQ,0BAAA,GACP,gCAAgC;AA1TL;AAc9B;;;;AAd8B,iBAyUd,qCAAA,CACd,MAAA,EAAQ,0BAAA,GACP,gCAAgC"}
1
+ {"version":3,"file":"dataMappers.d.cts","names":[],"sources":["../src/src/dataMappers.ts"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { A as MobileServerSocialFeedMarket, D as MobileServerSocialFeedItem, E as MobileServerSocialFeedInteraction, F as MobileServerSocialFeedTradeCard, I as MobileServerSocialFeedTradeRow, L as MobileServerSocialFeedTradeRowBase, M as MobileServerSocialFeedPositionCard, N as MobileServerSocialFeedPositionPatch, O as MobileServerSocialFeedItemBase, P as MobileServerSocialFeedReadSession, R as MobileServerSocialFeedTraderBadge, b as MobileServerProfile, d as MobileServerAvatarSelection, j as MobileServerSocialFeedPnl, k as MobileServerSocialFeedItemPatch, u as MobileServerAvatarPreset, x as MobileServerSocialFeedAuthor, y as MobileServerNotificationPreferences } from "./serverModelTypes-DAqEyYtB.js";
2
- import { $ as MobileSocialFeedListParams, E as MobileFollowMutationResult, F as MobileRegisteredWallet, H as MobileSocialFeedAuthor, J as MobileSocialFeedInteraction, M as MobileProfilesInclude, N as MobilePublicProfile, Q as MobileSocialFeedItemResponse, S as MobileFeedPage, T as MobileFollowListPage, X as MobileSocialFeedItemBase, Y as MobileSocialFeedItem, Z as MobileSocialFeedItemPatch, _ as MobileAvatarPreset, at as MobileSocialFeedRankedPage, ct as MobileSocialFeedTopTradersPage, dt as MobileSocialFeedTradeRowBase, et as MobileSocialFeedMarket, ft as MobileSocialFeedTraderBadge, i as GetMobileFollowListParams, it as MobileSocialFeedPositionPatch, j as MobileNotificationPreferences, lt as MobileSocialFeedTradeCard, nt as MobileSocialFeedPnl, ot as MobileSocialFeedReadParams, pt as MobileSocialFeedUpdates, rt as MobileSocialFeedPositionCard, st as MobileSocialFeedReadSession, tt as MobileSocialFeedPage, ut as MobileSocialFeedTradeRow, v as MobileAvatarSelection, y as MobileAvatarUpload } from "./clientTypes-ws9CDHw4.js";
3
- import { d as MobileServerSocialFeedReadParams, n as MobileServerFollowListRequest, r as MobileServerProfilesInclude, u as MobileServerSocialFeedListParams } from "./serverRequestTypes-BY0f5woc.js";
4
- import { o as MobileServerFollowMutationResponse, t as MobileServerAvatarUploadResponse } from "./serverExecuteTypes-jyr5aO5q.js";
5
- import { d as MobileServerSocialFeedRankedResponse, f as MobileServerSocialFeedResponse, l as MobileServerRegisteredWalletResponse, m as MobileServerSocialFeedUpdatesResponse, n as MobileServerFeedResponse, p as MobileServerSocialFeedTopTradersResponse, r as MobileServerFollowListResponse, u as MobileServerSocialFeedItemResponse } from "./serverQueryTypes-DPRP61yA.js";
2
+ import { $ as MobileSocialFeedItemBase, D as MobileFollowMutationResult, E as MobileFollowListPage, F as MobilePublicProfile, G as MobileSocialFeedAuthor, L as MobileRegisteredWallet, M as MobileNotificationPreferences, N as MobileProfileSearchPage, P as MobileProfilesInclude, Q as MobileSocialFeedItem, S as MobileFeedPage, St as SearchMobileProfilesParams, Z as MobileSocialFeedInteraction, _ as MobileAvatarPreset, at as MobileSocialFeedPnl, ct as MobileSocialFeedRankedPage, dt as MobileSocialFeedTopTradersPage, et as MobileSocialFeedItemPatch, ft as MobileSocialFeedTradeCard, gt as MobileSocialFeedUpdates, ht as MobileSocialFeedTraderBadge, i as GetMobileFollowListParams, it as MobileSocialFeedPage, lt as MobileSocialFeedReadParams, mt as MobileSocialFeedTradeRowBase, nt as MobileSocialFeedListParams, ot as MobileSocialFeedPositionCard, pt as MobileSocialFeedTradeRow, rt as MobileSocialFeedMarket, st as MobileSocialFeedPositionPatch, tt as MobileSocialFeedItemResponse, ut as MobileSocialFeedReadSession, v as MobileAvatarSelection, w as MobileFollowBatchResultItem, y as MobileAvatarUpload } from "./clientTypes-DCTiUV0H.js";
3
+ import { d as MobileServerSocialFeedListParams, f as MobileServerSocialFeedReadParams, l as MobileServerSearchProfilesRequest, n as MobileServerFollowListRequest, r as MobileServerProfilesInclude } from "./serverRequestTypes-BNA7FCY6.js";
4
+ import { c as MobileServerFollowMutationResponse, o as MobileServerFollowBatchResponse, t as MobileServerAvatarUploadResponse } from "./serverExecuteTypes-DlYZCp1f.js";
5
+ import { d as MobileServerSocialFeedItemResponse, f as MobileServerSocialFeedRankedResponse, h as MobileServerSocialFeedUpdatesResponse, l as MobileServerRegisteredWalletResponse, m as MobileServerSocialFeedTopTradersResponse, n as MobileServerFeedResponse, p as MobileServerSocialFeedResponse, r as MobileServerFollowListResponse, u as MobileServerSearchProfilesResponse } from "./serverQueryTypes-BFdwq0Z2.js";
6
6
 
7
7
  //#region src/dataMappers.d.ts
8
8
  /**
@@ -28,10 +28,19 @@ declare function mapMobilePublicProfile(server: MobileServerProfile): MobilePubl
28
28
  * keep `isFollowing` absent when the request named no `viewAs`, rather than defaulting it to `false`.
29
29
  */
30
30
  declare function mapMobileFollowListPage(server: MobileServerFollowListResponse): MobileFollowListPage;
31
+ /**
32
+ * Maps a server-side profile search page (snake_case) to its client-side (camelCase) representation. Each
33
+ * match goes through {@link mapMobilePublicProfile}, so include-gated fields stay `undefined` when omitted.
34
+ */
35
+ declare function mapMobileProfileSearchPage(server: MobileServerSearchProfilesResponse): MobileProfileSearchPage;
31
36
  /**
32
37
  * Maps a server-side follow or unfollow response to its client-side representation.
33
38
  */
34
39
  declare function mapMobileFollowMutationResult(server: MobileServerFollowMutationResponse): MobileFollowMutationResult;
40
+ /**
41
+ * Maps a server-side batch follow or unfollow response to its client-side representation.
42
+ */
43
+ declare function mapMobileFollowBatchResult(server: MobileServerFollowBatchResponse): MobileFollowBatchResultItem[];
35
44
  /**
36
45
  * Maps server-side notification preferences (snake_case) to their client-side (camelCase) representation.
37
46
  */
@@ -45,6 +54,10 @@ declare function mapMobileProfilesIncludeToServer(include: MobileProfilesInclude
45
54
  * directions take identical params and differ only in the `type` the caller dispatches on.
46
55
  */
47
56
  declare function mapMobileFollowListParamsToServer(params: GetMobileFollowListParams): MobileServerFollowListRequest;
57
+ /**
58
+ * Maps the client-side params of a profile search page to the server-side wire shape.
59
+ */
60
+ declare function mapMobileProfileSearchParamsToServer(params: SearchMobileProfilesParams): MobileServerSearchProfilesRequest;
48
61
  /**
49
62
  * Maps client-side notification preferences (camelCase) to the server-side (snake_case) wire shape.
50
63
  */
@@ -184,5 +197,5 @@ declare function mapMobileSocialFeedListParamsToServer(params: MobileSocialFeedL
184
197
  */
185
198
  declare function mapMobileSocialFeedReadParamsToServer(params: MobileSocialFeedReadParams): MobileServerSocialFeedReadParams;
186
199
  //#endregion
187
- export { mapMobileAvatarPreset, mapMobileAvatarSelectionToServer, mapMobileAvatarUpload, mapMobileFeedPage, mapMobileFollowListPage, mapMobileFollowListParamsToServer, mapMobileFollowMutationResult, mapMobileNotificationPreferences, mapMobileNotificationPreferencesToServer, mapMobileProfilesIncludeToServer, mapMobilePublicProfile, mapMobileRegisteredWallet, mapMobileSocialFeedAuthor, mapMobileSocialFeedInteraction, mapMobileSocialFeedItem, mapMobileSocialFeedItemBase, mapMobileSocialFeedItemPatch, mapMobileSocialFeedItemResponse, mapMobileSocialFeedListParamsToServer, mapMobileSocialFeedMarket, mapMobileSocialFeedPage, mapMobileSocialFeedPnl, mapMobileSocialFeedPositionCard, mapMobileSocialFeedPositionPatch, mapMobileSocialFeedRankedPage, mapMobileSocialFeedReadParamsToServer, mapMobileSocialFeedReadSession, mapMobileSocialFeedTopTradersPage, mapMobileSocialFeedTradeCard, mapMobileSocialFeedTradeRow, mapMobileSocialFeedTradeRowBase, mapMobileSocialFeedTraderBadge, mapMobileSocialFeedUpdates };
200
+ export { mapMobileAvatarPreset, mapMobileAvatarSelectionToServer, mapMobileAvatarUpload, mapMobileFeedPage, mapMobileFollowBatchResult, mapMobileFollowListPage, mapMobileFollowListParamsToServer, mapMobileFollowMutationResult, mapMobileNotificationPreferences, mapMobileNotificationPreferencesToServer, mapMobileProfileSearchPage, mapMobileProfileSearchParamsToServer, mapMobileProfilesIncludeToServer, mapMobilePublicProfile, mapMobileRegisteredWallet, mapMobileSocialFeedAuthor, mapMobileSocialFeedInteraction, mapMobileSocialFeedItem, mapMobileSocialFeedItemBase, mapMobileSocialFeedItemPatch, mapMobileSocialFeedItemResponse, mapMobileSocialFeedListParamsToServer, mapMobileSocialFeedMarket, mapMobileSocialFeedPage, mapMobileSocialFeedPnl, mapMobileSocialFeedPositionCard, mapMobileSocialFeedPositionPatch, mapMobileSocialFeedRankedPage, mapMobileSocialFeedReadParamsToServer, mapMobileSocialFeedReadSession, mapMobileSocialFeedTopTradersPage, mapMobileSocialFeedTradeCard, mapMobileSocialFeedTradeRow, mapMobileSocialFeedTradeRowBase, mapMobileSocialFeedTraderBadge, mapMobileSocialFeedUpdates };
188
201
  //# sourceMappingURL=dataMappers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataMappers.d.ts","names":[],"sources":["../src/src/dataMappers.ts"],"mappings":";;;;;;;;;AAuFA;iBAAgB,qBAAA,CACd,MAAA,EAAQ,wBAAA,GACP,kBAAkB;;;;iBAOL,qBAAA,CACd,MAAA,EAAQ,gCAAA,GACP,kBAAkB;;;AATA;iBAqBL,gCAAA,CACd,MAAA,EAAQ,qBAAA,UACP,2BAA2B;;;;;;iBAed,sBAAA,CACd,MAAA,EAAQ,mBAAA,GACP,mBAAmB;;AA/BD;AAYrB;;iBA+DgB,uBAAA,CACd,MAAA,EAAQ,8BAAA,GACP,oBAAoB;;;;iBAcP,6BAAA,CACd,MAAA,EAAQ,kCAAA,GACP,0BAA0B;;AA/EC;AAe9B;iBA0EgB,gCAAA,CACd,MAAA,EAAQ,mCAAA,GACP,6BAA6B;;;;iBAuBhB,gCAAA,CACd,OAAA,EAAS,qBAAA,GACR,2BAA2B;;;AAnGR;AA4CtB;iBAoEgB,iCAAA,CACd,MAAA,EAAQ,yBAAA,GACP,6BAA6B;;;;iBAYhB,wCAAA,CACd,WAAA,EAAa,6BAAA,GACZ,mCAAmC;;;AAlFf;iBA8HP,iBAAA,CACd,MAAA,EAAQ,wBAAA,GACP,cAAc;;;;iBAUD,yBAAA,CACd,MAAA,EAAQ,oCAAA,GACP,sBAAsB;;;;AA5HI;AAU7B;iBAkIgB,8BAAA,CACd,MAAA,EAAQ,iCAAA,GACP,2BAA2B;;;;;;iBAiBd,yBAAA,CACd,MAAA,EAAQ,4BAAA,GACP,sBAAsB;AArJO;AAuBhC;;;;AAvBgC,iBAsKhB,yBAAA,CACd,MAAA,EAAQ,4BAAA,GACP,sBAAsB;;;;AA/IK;AAa9B;iBAiJgB,sBAAA,CACd,MAAA,EAAQ,yBAAA,GACP,mBAAmB;;;;;;iBAeN,gCAAA,CACd,MAAA,EAAQ,mCAAA,GACP,6BAA6B;AAlKA;AAYhC;;;;AAZgC,iBA0LhB,+BAAA,CACd,MAAA,EAAQ,kCAAA,GACP,4BAA4B;;;;AA9KO;AA4CtC;iBAgJgB,8BAAA,CACd,MAAA,EAAQ,iCAAA,GACP,2BAA2B;;;;;;iBAcd,2BAAA,CACd,MAAA,EAAQ,8BAAA,GACP,wBAAwB;AAhKV;AAUjB;;;;AAViB,iBAuLD,4BAAA,CACd,MAAA,EAAQ,+BAAA,GACP,yBAAyB;;;;AA7KH;AAgBzB;iBAmLgB,+BAAA,CACd,MAAA,EAAQ,kCAAA,GACP,4BAA4B;;;;;;iBAoBf,2BAAA,CACd,MAAA,EAAQ,8BAAA,GACP,wBAAwB;AAzMG;AAiB9B;;;;AAjB8B,iBA0Od,uBAAA,CACd,MAAA,EAAQ,0BAAA,GACP,oBAAoB;;;;AAzNE;AAiBzB;iBAmNgB,8BAAA,CACd,MAAA,EAAQ,iCAAA,GACP,2BAA2B;;;;;;iBAmBd,uBAAA,CACd,MAAA,EAAQ,8BAAA,GACP,oBAAoB;AAxOE;AAezB;;;;AAfyB,iBAsPT,6BAAA,CACd,MAAA,EAAQ,oCAAA,GACP,0BAA0B;;;;AAvOP;AAetB;iBAoOgB,iCAAA,CACd,MAAA,EAAQ,wCAAA,GACP,8BAA8B;;;;;;iBAqBjB,+BAAA,CACd,MAAA,EAAQ,kCAAA,GACP,4BAA4B;AA3PC;AAwBhC;;;;AAxBgC,iBAuQhB,4BAAA,CACd,MAAA,EAAQ,+BAAA,GACP,yBAAyB;;;;AA/OG;AAc/B;iBAoSgB,0BAAA,CACd,MAAA,EAAQ,qCAAA,GACP,uBAAuB;;;;;;iBAoBV,qCAAA,CACd,MAAA,EAAQ,0BAAA,GACP,gCAAgC;AA1TL;AAc9B;;;;AAd8B,iBAyUd,qCAAA,CACd,MAAA,EAAQ,0BAAA,GACP,gCAAgC"}
1
+ {"version":3,"file":"dataMappers.d.ts","names":[],"sources":["../src/src/dataMappers.ts"],"mappings":"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"}
@@ -85,6 +85,16 @@ function mapMobileFollowListPage(server) {
85
85
  };
86
86
  }
87
87
  /**
88
+ * Maps a server-side profile search page (snake_case) to its client-side (camelCase) representation. Each
89
+ * match goes through {@link mapMobilePublicProfile}, so include-gated fields stay `undefined` when omitted.
90
+ */
91
+ function mapMobileProfileSearchPage(server) {
92
+ return {
93
+ profiles: server.profiles.map(mapMobilePublicProfile),
94
+ nextCursor: server.next_cursor
95
+ };
96
+ }
97
+ /**
88
98
  * Maps a server-side follow or unfollow response to its client-side representation.
89
99
  */
90
100
  function mapMobileFollowMutationResult(server) {
@@ -94,6 +104,16 @@ function mapMobileFollowMutationResult(server) {
94
104
  };
95
105
  }
96
106
  /**
107
+ * Maps a server-side batch follow or unfollow response to its client-side representation.
108
+ */
109
+ function mapMobileFollowBatchResult(server) {
110
+ return server.results.map((result) => ({
111
+ subaccount: result.subaccount,
112
+ isFollowing: result.is_following,
113
+ followerCount: result.follower_count
114
+ }));
115
+ }
116
+ /**
97
117
  * Maps server-side notification preferences (snake_case) to their client-side (camelCase) representation.
98
118
  */
99
119
  function mapMobileNotificationPreferences(server) {
@@ -138,6 +158,17 @@ function mapMobileFollowListParamsToServer(params) {
138
158
  };
139
159
  }
140
160
  /**
161
+ * Maps the client-side params of a profile search page to the server-side wire shape.
162
+ */
163
+ function mapMobileProfileSearchParamsToServer(params) {
164
+ return {
165
+ query: params.query,
166
+ include: params.include ? mapMobileProfilesIncludeToServer(params.include) : void 0,
167
+ cursor: params.cursor,
168
+ limit: params.limit
169
+ };
170
+ }
171
+ /**
141
172
  * Maps client-side notification preferences (camelCase) to the server-side (snake_case) wire shape.
142
173
  */
143
174
  function mapMobileNotificationPreferencesToServer(preferences) {
@@ -540,6 +571,6 @@ function mapMobileSocialFeedReadParamsToServer(params) {
540
571
  };
541
572
  }
542
573
  //#endregion
543
- export { mapMobileAvatarPreset, mapMobileAvatarSelectionToServer, mapMobileAvatarUpload, mapMobileFeedPage, mapMobileFollowListPage, mapMobileFollowListParamsToServer, mapMobileFollowMutationResult, mapMobileNotificationPreferences, mapMobileNotificationPreferencesToServer, mapMobileProfilesIncludeToServer, mapMobilePublicProfile, mapMobileRegisteredWallet, mapMobileSocialFeedAuthor, mapMobileSocialFeedInteraction, mapMobileSocialFeedItem, mapMobileSocialFeedItemBase, mapMobileSocialFeedItemPatch, mapMobileSocialFeedItemResponse, mapMobileSocialFeedListParamsToServer, mapMobileSocialFeedMarket, mapMobileSocialFeedPage, mapMobileSocialFeedPnl, mapMobileSocialFeedPositionCard, mapMobileSocialFeedPositionPatch, mapMobileSocialFeedRankedPage, mapMobileSocialFeedReadParamsToServer, mapMobileSocialFeedReadSession, mapMobileSocialFeedTopTradersPage, mapMobileSocialFeedTradeCard, mapMobileSocialFeedTradeRow, mapMobileSocialFeedTradeRowBase, mapMobileSocialFeedTraderBadge, mapMobileSocialFeedUpdates };
574
+ export { mapMobileAvatarPreset, mapMobileAvatarSelectionToServer, mapMobileAvatarUpload, mapMobileFeedPage, mapMobileFollowBatchResult, mapMobileFollowListPage, mapMobileFollowListParamsToServer, mapMobileFollowMutationResult, mapMobileNotificationPreferences, mapMobileNotificationPreferencesToServer, mapMobileProfileSearchPage, mapMobileProfileSearchParamsToServer, mapMobileProfilesIncludeToServer, mapMobilePublicProfile, mapMobileRegisteredWallet, mapMobileSocialFeedAuthor, mapMobileSocialFeedInteraction, mapMobileSocialFeedItem, mapMobileSocialFeedItemBase, mapMobileSocialFeedItemPatch, mapMobileSocialFeedItemResponse, mapMobileSocialFeedListParamsToServer, mapMobileSocialFeedMarket, mapMobileSocialFeedPage, mapMobileSocialFeedPnl, mapMobileSocialFeedPositionCard, mapMobileSocialFeedPositionPatch, mapMobileSocialFeedRankedPage, mapMobileSocialFeedReadParamsToServer, mapMobileSocialFeedReadSession, mapMobileSocialFeedTopTradersPage, mapMobileSocialFeedTradeCard, mapMobileSocialFeedTradeRow, mapMobileSocialFeedTradeRowBase, mapMobileSocialFeedTraderBadge, mapMobileSocialFeedUpdates };
544
575
 
545
576
  //# sourceMappingURL=dataMappers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataMappers.js","names":[],"sources":["../src/dataMappers.ts"],"sourcesContent":["import { removeDecimals, subaccountToHex, toBigNumber } from '@nadohq/shared';\nimport {\n GetMobileFollowListParams,\n MobileAvatarPreset,\n MobileAvatarSelection,\n MobileAvatarUpload,\n MobileFeedPage,\n MobileFeedTrade,\n MobileFollowListPage,\n MobileFollowMutationResult,\n MobileFollowSummary,\n MobileIdentitySummary,\n MobileNotificationPreferenceScope,\n MobileNotificationPreferences,\n MobileProfilesInclude,\n MobilePublicProfile,\n MobileRegisteredWallet,\n MobileSocialFeedAuthor,\n MobileSocialFeedInteraction,\n MobileSocialFeedItem,\n MobileSocialFeedItemBase,\n MobileSocialFeedItemPatch,\n MobileSocialFeedItemResponse,\n MobileSocialFeedListParams,\n MobileSocialFeedMarket,\n MobileSocialFeedPage,\n MobileSocialFeedPnl,\n MobileSocialFeedPositionCard,\n MobileSocialFeedPositionPatch,\n MobileSocialFeedRankedPage,\n MobileSocialFeedReadParams,\n MobileSocialFeedReadSession,\n MobileSocialFeedTopTradersPage,\n MobileSocialFeedTradeCard,\n MobileSocialFeedTradeRow,\n MobileSocialFeedTradeRowBase,\n MobileSocialFeedTraderBadge,\n MobileSocialFeedUpdates,\n} from './types/clientTypes';\nimport {\n MobileServerAvatarUploadResponse,\n MobileServerFollowMutationResponse,\n} from './types/serverExecuteTypes';\nimport {\n MobileServerAvatarPreset,\n MobileServerAvatarSelection,\n MobileServerFeedTrade,\n MobileServerFollowSummary,\n MobileServerIdentitySummary,\n MobileServerNotificationPreferenceScope,\n MobileServerNotificationPreferences,\n MobileServerProfile,\n MobileServerSocialFeedAuthor,\n MobileServerSocialFeedInteraction,\n MobileServerSocialFeedItem,\n MobileServerSocialFeedItemBase,\n MobileServerSocialFeedItemPatch,\n MobileServerSocialFeedMarket,\n MobileServerSocialFeedPnl,\n MobileServerSocialFeedPositionCard,\n MobileServerSocialFeedPositionPatch,\n MobileServerSocialFeedReadSession,\n MobileServerSocialFeedTradeCard,\n MobileServerSocialFeedTradeRow,\n MobileServerSocialFeedTradeRowBase,\n MobileServerSocialFeedTraderBadge,\n} from './types/serverModelTypes';\nimport {\n MobileServerFeedResponse,\n MobileServerFollowListResponse,\n MobileServerRegisteredWalletResponse,\n MobileServerSocialFeedItemResponse,\n MobileServerSocialFeedRankedResponse,\n MobileServerSocialFeedResponse,\n MobileServerSocialFeedTopTradersResponse,\n MobileServerSocialFeedUpdatesResponse,\n} from './types/serverQueryTypes';\nimport {\n MobileServerFollowListRequest,\n MobileServerProfilesInclude,\n MobileServerSocialFeedListParams,\n MobileServerSocialFeedReadParams,\n} from './types/serverRequestTypes';\n\n/**\n * Maps a server-side avatar preset to its client-side representation.\n */\nexport function mapMobileAvatarPreset(\n server: MobileServerAvatarPreset,\n): MobileAvatarPreset {\n return { id: server.id, avatarUrl: server.avatar_url };\n}\n\n/**\n * Maps an upload grant, preserving the signed PUT headers and server-provided lifetime.\n */\nexport function mapMobileAvatarUpload(\n server: MobileServerAvatarUploadResponse,\n): MobileAvatarUpload {\n return {\n uploadKey: server.upload_key,\n uploadUrl: server.upload_url,\n headers: server.headers,\n expiresInSeconds: server.expires_in_seconds,\n };\n}\n\n/**\n * Maps a client-side avatar selection to the signed wire payload; null clears the saved avatar.\n */\nexport function mapMobileAvatarSelectionToServer(\n avatar: MobileAvatarSelection | null,\n): MobileServerAvatarSelection | null {\n if (avatar === null) {\n return null;\n }\n if (avatar.type === 'preset') {\n return { type: 'preset', id: avatar.id };\n }\n return { type: 'upload', upload_key: avatar.uploadKey };\n}\n\n/**\n * Maps a server-side public profile (snake_case) to its client-side (camelCase) representation. The three\n * include-gated fields stay `undefined` when the backend omitted them, rather than being coerced to `null`\n * or zero, so callers can tell \"not requested\" from a real value.\n */\nexport function mapMobilePublicProfile(\n server: MobileServerProfile,\n): MobilePublicProfile {\n return {\n ...mapMobileIdentitySummary(server),\n bio: server.bio,\n privateMode: server.private_mode,\n followerCount: server.follower_count,\n followingCount: server.following_count,\n followSummary: server.follow_summary\n ? mapMobileFollowSummary(server.follow_summary)\n : undefined,\n };\n}\n\n/**\n * Maps a server-side identity summary (snake_case) to its client-side (camelCase) representation.\n */\nfunction mapMobileIdentitySummary(\n server: MobileServerIdentitySummary,\n): MobileIdentitySummary {\n return {\n subaccount: server.subaccount,\n username: server.username,\n displayName: server.display_name,\n avatarUrl: server.avatar_url,\n };\n}\n\n/**\n * Maps a server-side follow summary to its client-side representation.\n */\nfunction mapMobileFollowSummary(\n server: MobileServerFollowSummary,\n): MobileFollowSummary {\n return {\n isFollowing: server.is_following,\n followedByCount: server.followed_by_count,\n followedBy: server.followed_by.map(mapMobileIdentitySummary),\n };\n}\n\n/**\n * Maps a server-side Followers or Following response to a client-side {@link MobileFollowListPage}. Rows\n * keep `isFollowing` absent when the request named no `viewAs`, rather than defaulting it to `false`.\n */\nexport function mapMobileFollowListPage(\n server: MobileServerFollowListResponse,\n): MobileFollowListPage {\n return {\n accounts: server.accounts.map((account) => ({\n identity: mapMobileIdentitySummary(account.identity),\n isFollowing: account.is_following,\n followerCount: account.follower_count,\n })),\n nextCursor: server.next_cursor,\n };\n}\n\n/**\n * Maps a server-side follow or unfollow response to its client-side representation.\n */\nexport function mapMobileFollowMutationResult(\n server: MobileServerFollowMutationResponse,\n): MobileFollowMutationResult {\n return {\n isFollowing: server.is_following,\n followerCount: server.follower_count,\n };\n}\n\n/**\n * Maps server-side notification preferences (snake_case) to their client-side (camelCase) representation.\n */\nexport function mapMobileNotificationPreferences(\n server: MobileServerNotificationPreferences,\n): MobileNotificationPreferences {\n return {\n schemaVersion: server.schema_version,\n categories: server.categories.map((category) => ({\n category: category.category,\n enabled: category.enabled,\n scopes: category.scopes.map(mapMobileNotificationPreferenceScope),\n })),\n };\n}\n\nfunction mapMobileNotificationPreferenceScope(\n server: MobileServerNotificationPreferenceScope,\n): MobileNotificationPreferenceScope {\n if (server.type === 'subaccount') {\n return { type: 'subaccount', subaccount: server.subaccount };\n }\n return { type: 'product', productId: server.product_id };\n}\n\n/**\n * Maps client-side profiles includes (camelCase) to the server-side (snake_case) wire shape.\n */\nexport function mapMobileProfilesIncludeToServer(\n include: MobileProfilesInclude,\n): MobileServerProfilesInclude {\n return {\n follow_counts: include.followCounts,\n follow_summary: include.followSummary\n ? { view_as: subaccountToHex(include.followSummary.viewAs) }\n : undefined,\n };\n}\n\n/**\n * Maps the client-side params of a Followers or Following page to the server-side wire shape. Both list\n * directions take identical params and differ only in the `type` the caller dispatches on.\n */\nexport function mapMobileFollowListParamsToServer(\n params: GetMobileFollowListParams,\n): MobileServerFollowListRequest {\n return {\n subaccount: subaccountToHex(params.target),\n view_as: params.viewAs ? subaccountToHex(params.viewAs) : undefined,\n cursor: params.cursor,\n limit: params.limit,\n };\n}\n\n/**\n * Maps client-side notification preferences (camelCase) to the server-side (snake_case) wire shape.\n */\nexport function mapMobileNotificationPreferencesToServer(\n preferences: MobileNotificationPreferences,\n): MobileServerNotificationPreferences {\n return {\n schema_version: preferences.schemaVersion,\n categories: preferences.categories.map((category) => ({\n category: category.category,\n enabled: category.enabled,\n scopes: category.scopes.map(mapMobileNotificationPreferenceScopeToServer),\n })),\n };\n}\n\nfunction mapMobileNotificationPreferenceScopeToServer(\n scope: MobileNotificationPreferenceScope,\n): MobileServerNotificationPreferenceScope {\n if (scope.type === 'subaccount') {\n return { type: 'subaccount', subaccount: scope.subaccount };\n }\n return { type: 'product', product_id: scope.productId };\n}\n\n/**\n * Maps a server-side feed trade (snake_case) to its client-side (camelCase) representation.\n */\nfunction mapMobileFeedTrade(server: MobileServerFeedTrade): MobileFeedTrade {\n return {\n ...mapMobileIdentitySummary(server),\n orderDigest: server.order_digest,\n productId: server.product_id,\n quantity: server.quantity,\n notional: server.notional,\n averagePrice: server.average_price,\n margin: {\n mode: server.margin.mode,\n estimatedLeverage: server.margin.estimated_leverage,\n },\n position: server.position,\n realizedPnl: server.realized_pnl,\n filledAt: server.filled_at_ms,\n };\n}\n\n/**\n * Maps a server-side feed response to a client-side {@link MobileFeedPage}.\n */\nexport function mapMobileFeedPage(\n server: MobileServerFeedResponse,\n): MobileFeedPage {\n return {\n trades: server.trades.map(mapMobileFeedTrade),\n nextCursor: server.next_cursor,\n };\n}\n\n/**\n * Maps a server-side registered wallet (snake_case) to its client-side (camelCase) representation.\n */\nexport function mapMobileRegisteredWallet(\n server: MobileServerRegisteredWalletResponse,\n): MobileRegisteredWallet {\n return {\n wallet: server.wallet,\n platform: server.platform,\n locale: server.locale,\n appVersion: server.app_version,\n tokenFingerprintPrefix: server.token_fingerprint_prefix,\n lastSeenAt: server.last_seen_at,\n };\n}\n\n/**\n * Maps the official account PnL badge, retaining x18 amount units.\n * @param server - The service response.\n * @returns The mapped trader badge.\n */\nexport function mapMobileSocialFeedTraderBadge(\n server: MobileServerSocialFeedTraderBadge,\n): MobileSocialFeedTraderBadge {\n return {\n code: server.code,\n pnl: toBigNumber(server.pnl_x18),\n metricKey: server.metric_key,\n window: server.window,\n sourceAsOfMs: server.source_as_of_ms,\n fetchedAtMs: server.fetched_at_ms,\n snapshotId: server.snapshot_id,\n };\n}\n\n/**\n * Maps author identity, relationship state, and optional qualification badge.\n * @param server - The service response.\n * @returns The mapped feed author.\n */\nexport function mapMobileSocialFeedAuthor(\n server: MobileServerSocialFeedAuthor,\n): MobileSocialFeedAuthor {\n return {\n ...mapMobileIdentitySummary(server),\n isFollowing: server.is_following,\n traderBadge:\n server.trader_badge === null\n ? null\n : mapMobileSocialFeedTraderBadge(server.trader_badge),\n traderDataStatus: server.trader_data_status,\n };\n}\n\n/**\n * Maps social market metadata.\n * @param server - The service response.\n * @returns The mapped feed market.\n */\nexport function mapMobileSocialFeedMarket(\n server: MobileServerSocialFeedMarket,\n): MobileSocialFeedMarket {\n return {\n productId: server.product_id,\n symbol: server.symbol,\n logoUrl: server.logo_url,\n category: server.category,\n sourceCategories: server.source_categories,\n };\n}\n\n/**\n * Maps position PnL while retaining x18 amount units and availability.\n * @param server - The service response.\n * @returns The mapped feed pnl.\n */\nexport function mapMobileSocialFeedPnl(\n server: MobileServerSocialFeedPnl,\n): MobileSocialFeedPnl {\n return {\n amount: server.amount_x18 === null ? null : toBigNumber(server.amount_x18),\n basis: server.basis,\n mode: server.mode,\n asOfMs: server.as_of_ms,\n quality: server.quality,\n };\n}\n\n/**\n * Maps complete position facts, converting entry price to decimal units.\n * @param server - The service response.\n * @returns The mapped feed position patch.\n */\nexport function mapMobileSocialFeedPositionPatch(\n server: MobileServerSocialFeedPositionPatch,\n): MobileSocialFeedPositionPatch {\n return {\n positionId: server.position_id,\n positionVersion: server.position_version,\n stateAsOfMs: server.state_as_of_ms,\n entryPrice: removeDecimals(server.entry_price_x18),\n displayBasis: server.display_basis,\n snapshotAtMs: server.snapshot_at_ms,\n quantity: toBigNumber(server.quantity_x18),\n notional: toBigNumber(server.notional_x18),\n state: server.state,\n historyQuality: server.history_quality,\n marginMode: server.margin_mode,\n leverage: server.leverage,\n leverageAtMs: server.leverage_at_ms,\n pnl: mapMobileSocialFeedPnl(server.pnl),\n };\n}\n\n/**\n * Maps a position card with its current or frozen financial state.\n * @param server - The service response.\n * @returns The mapped feed position card.\n */\nexport function mapMobileSocialFeedPositionCard(\n server: MobileServerSocialFeedPositionCard,\n): MobileSocialFeedPositionCard {\n return {\n ...mapMobileSocialFeedPositionPatch(server),\n productId: server.product_id,\n market: mapMobileSocialFeedMarket(server.market),\n direction: server.direction,\n };\n}\n\n/**\n * Maps interaction counters without inventing unavailable relationship state.\n * @param server - The service response.\n * @returns The mapped feed interaction.\n */\nexport function mapMobileSocialFeedInteraction(\n server: MobileServerSocialFeedInteraction,\n): MobileSocialFeedInteraction {\n return {\n likeCount: server.like_count,\n commentCount: server.comment_count,\n viewCount: server.view_count,\n likedByMe: server.liked_by_me,\n };\n}\n\n/**\n * Maps common item metadata and server capabilities.\n * @param server - The service response.\n * @returns The mapped social feed item base.\n */\nexport function mapMobileSocialFeedItemBase(\n server: MobileServerSocialFeedItemBase,\n): MobileSocialFeedItemBase {\n return {\n id: server.id,\n hasAnalysis: server.has_analysis,\n drawing: server.drawing,\n author: mapMobileSocialFeedAuthor(server.author),\n createdAtMs: server.created_at_ms,\n displayAtMs: server.display_at_ms,\n version: server.version,\n market: mapMobileSocialFeedMarket(server.market),\n capabilities: {\n canLike: server.capabilities.can_like,\n canComment: server.capabilities.can_comment,\n canRecordView: server.capabilities.can_record_view,\n },\n };\n}\n\n/**\n * Maps an automatic trade card and its position and interaction metadata.\n * @param server - The service response.\n * @returns The mapped social trade card.\n */\nexport function mapMobileSocialFeedTradeCard(\n server: MobileServerSocialFeedTradeCard,\n): MobileSocialFeedTradeCard {\n return {\n ...mapMobileSocialFeedItemBase(server),\n kind: server.kind,\n action: server.action,\n text: server.text,\n mentions: server.mentions,\n position: mapMobileSocialFeedPositionCard(server.position),\n interaction: mapMobileSocialFeedInteraction(server.interaction),\n commentPreview: {\n items: server.comment_preview.items,\n totalCount: server.comment_preview.total_count,\n nextCursor: server.comment_preview.next_cursor,\n },\n };\n}\n\n/**\n * Maps historical trade facts with decimal execution prices and x18 quantities.\n * @param server - The service response.\n * @returns The mapped social trade row base.\n */\nexport function mapMobileSocialFeedTradeRowBase(\n server: MobileServerSocialFeedTradeRowBase,\n): MobileSocialFeedTradeRowBase {\n return {\n ...mapMobileSocialFeedItemBase(server),\n kind: server.kind,\n positionId: server.position_id,\n direction: server.direction,\n marginMode: server.margin_mode,\n leverage: server.leverage,\n leverageAtMs: server.leverage_at_ms,\n tradeCount: server.trade_count,\n quantity: toBigNumber(server.quantity_x18),\n averagePrice: removeDecimals(server.average_price_x18),\n };\n}\n\n/**\n * Maps size changes and independently nullable liquidation facts.\n * @param server - The service response.\n * @returns The mapped social trade row.\n */\nexport function mapMobileSocialFeedTradeRow(\n server: MobileServerSocialFeedTradeRow,\n): MobileSocialFeedTradeRow {\n const base = mapMobileSocialFeedTradeRowBase(server);\n if (server.action === 'liquidated') {\n return {\n ...base,\n action: server.action,\n notional:\n server.notional_x18 === null ? null : toBigNumber(server.notional_x18),\n entryPrice: removeDecimals(server.entry_price_x18),\n liquidationOraclePrice: removeDecimals(\n server.liquidation_oracle_price_x18,\n ),\n liquidationExecutionPrice: removeDecimals(\n server.liquidation_execution_price_x18,\n ),\n realizedPnlDelta:\n server.realized_pnl_delta_x18 === null\n ? null\n : toBigNumber(server.realized_pnl_delta_x18),\n };\n }\n return {\n ...base,\n action: server.action,\n notional: toBigNumber(server.notional_x18),\n };\n}\n\n/**\n * Maps the item variant without mixing card and row fields.\n * @param server - The service response.\n * @returns The mapped social feed item.\n */\nexport function mapMobileSocialFeedItem(\n server: MobileServerSocialFeedItem,\n): MobileSocialFeedItem {\n return server.kind === 'trade_card'\n ? mapMobileSocialFeedTradeCard(server)\n : mapMobileSocialFeedTradeRow(server);\n}\n\n/**\n * Maps a fixed reading session, preserving opaque credentials and cursors.\n * @param server - The service response.\n * @returns The mapped feed read session.\n */\nexport function mapMobileSocialFeedReadSession(\n server: MobileServerSocialFeedReadSession,\n): MobileSocialFeedReadSession {\n return {\n sessionId: server.session_id,\n mode: server.mode,\n expiresAtMs: server.expires_at_ms,\n viewTracking: {\n minVisibleRatio: server.view_tracking.min_visible_ratio,\n minDurationMs: server.view_tracking.min_duration_ms,\n },\n updateCursor: server.update_cursor,\n viewerToken: server.viewer_token,\n };\n}\n\n/**\n * Maps a fixed feed page without changing item order or pagination.\n * @param server - The service response.\n * @returns The mapped social feed page.\n */\nexport function mapMobileSocialFeedPage(\n server: MobileServerSocialFeedResponse,\n): MobileSocialFeedPage {\n return {\n readSession: mapMobileSocialFeedReadSession(server.read_session),\n items: server.items.map(mapMobileSocialFeedItem),\n nextCursor: server.next_cursor,\n watermark: server.watermark,\n };\n}\n\n/**\n * Maps a main feed page and its ranking version.\n * @param server - The service response.\n * @returns The mapped ranked feed page.\n */\nexport function mapMobileSocialFeedRankedPage(\n server: MobileServerSocialFeedRankedResponse,\n): MobileSocialFeedRankedPage {\n return {\n ...mapMobileSocialFeedPage(server),\n rankingVersion: server.ranking_version,\n };\n}\n\n/**\n * Maps qualified trader items and their shared eligibility snapshot.\n * @param server - The service response.\n * @returns The mapped top traders feed page.\n */\nexport function mapMobileSocialFeedTopTradersPage(\n server: MobileServerSocialFeedTopTradersResponse,\n): MobileSocialFeedTopTradersPage {\n return {\n ...mapMobileSocialFeedRankedPage(server),\n cohort: {\n snapshotId: server.cohort.snapshot_id,\n status: server.cohort.status,\n coverage: {\n scope: server.cohort.coverage.scope,\n totalAuthors: server.cohort.coverage.total_authors,\n queriedAuthors: server.cohort.coverage.queried_authors,\n complete: server.cohort.coverage.complete,\n },\n },\n };\n}\n\n/**\n * Maps item details and the authorized reading session.\n * @param server - The service response.\n * @returns The mapped social feed item response.\n */\nexport function mapMobileSocialFeedItemResponse(\n server: MobileServerSocialFeedItemResponse,\n): MobileSocialFeedItemResponse {\n return {\n item: mapMobileSocialFeedItem(server.item),\n readSession: mapMobileSocialFeedReadSession(server.read_session),\n };\n}\n\n/**\n * Maps item deltas, preserving omitted fields and explicit null clears.\n * @param server - The service response.\n * @returns The mapped feed item patch.\n */\nexport function mapMobileSocialFeedItemPatch(\n server: MobileServerSocialFeedItemPatch,\n): MobileSocialFeedItemPatch {\n return {\n itemId: server.item_id,\n version: server.version,\n author: mapMobileSocialFeedAuthor(server.author),\n displayAtMs: server.display_at_ms,\n ...(server.interaction === undefined\n ? {}\n : { interaction: mapMobileSocialFeedInteraction(server.interaction) }),\n ...(server.trade_count === undefined\n ? {}\n : { tradeCount: server.trade_count }),\n ...(server.quantity_x18 === undefined\n ? {}\n : { quantity: toBigNumber(server.quantity_x18) }),\n ...(server.notional_x18 === undefined\n ? {}\n : {\n notional:\n server.notional_x18 === null\n ? null\n : toBigNumber(server.notional_x18),\n }),\n ...(server.average_price_x18 === undefined\n ? {}\n : {\n averagePrice: removeDecimals(server.average_price_x18),\n }),\n ...(server.entry_price_x18 === undefined\n ? {}\n : {\n entryPrice: removeDecimals(server.entry_price_x18),\n }),\n ...(server.liquidation_oracle_price_x18 === undefined\n ? {}\n : {\n liquidationOraclePrice: removeDecimals(\n server.liquidation_oracle_price_x18,\n ),\n }),\n ...(server.liquidation_execution_price_x18 === undefined\n ? {}\n : {\n liquidationExecutionPrice: removeDecimals(\n server.liquidation_execution_price_x18,\n ),\n }),\n ...(server.realized_pnl_delta_x18 === undefined\n ? {}\n : {\n realizedPnlDelta:\n server.realized_pnl_delta_x18 === null\n ? null\n : toBigNumber(server.realized_pnl_delta_x18),\n }),\n ...(server.leverage === undefined ? {} : { leverage: server.leverage }),\n ...(server.leverage_at_ms === undefined\n ? {}\n : { leverageAtMs: server.leverage_at_ms }),\n };\n}\n\n/**\n * Maps viewport changes while preserving the sequence and update baseline.\n * @param server - The service response.\n * @returns The mapped feed updates.\n */\nexport function mapMobileSocialFeedUpdates(\n server: MobileServerSocialFeedUpdatesResponse,\n): MobileSocialFeedUpdates {\n return {\n itemPatches: server.item_patches.map(mapMobileSocialFeedItemPatch),\n positionPatches: server.position_patches.map(\n mapMobileSocialFeedPositionPatch,\n ),\n unavailableTargets: server.unavailable_targets,\n newItemsCount: server.new_items_count,\n updateCursor: server.update_cursor,\n reset: server.reset,\n viewportRevision: server.viewport_revision,\n requestSeq: server.request_seq,\n };\n}\n\n/**\n * Maps common list parameters to the public query wire format without inserting defaults.\n * @param params - Client filters and session pagination.\n * @returns Wire fields; undefined options are omitted when serialized to JSON.\n */\nexport function mapMobileSocialFeedListParamsToServer(\n params: MobileSocialFeedListParams,\n): MobileServerSocialFeedListParams {\n return {\n feed_types: params.feedTypes,\n minimum_notional: params.minimumNotional,\n limit: params.limit,\n session_id: params.sessionId,\n cursor: params.cursor,\n };\n}\n\n/**\n * Maps the public viewing account and browser credential without inferring an identity.\n * @param params - Public relationship perspective and optional session credential.\n * @returns Wire fields for a public feed read.\n */\nexport function mapMobileSocialFeedReadParamsToServer(\n params: MobileSocialFeedReadParams,\n): MobileServerSocialFeedReadParams {\n return {\n view_as:\n params.viewAs === undefined ? undefined : subaccountToHex(params.viewAs),\n viewer_token: params.viewerToken,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"dataMappers.js","names":[],"sources":["../src/dataMappers.ts"],"sourcesContent":["import { removeDecimals, subaccountToHex, toBigNumber } from '@nadohq/shared';\nimport {\n GetMobileFollowListParams,\n MobileAvatarPreset,\n MobileAvatarSelection,\n MobileAvatarUpload,\n MobileFeedPage,\n MobileFeedTrade,\n MobileFollowBatchResultItem,\n MobileFollowListPage,\n MobileFollowMutationResult,\n MobileFollowSummary,\n MobileIdentitySummary,\n MobileNotificationPreferenceScope,\n MobileNotificationPreferences,\n MobileProfileSearchPage,\n MobileProfilesInclude,\n MobilePublicProfile,\n MobileRegisteredWallet,\n MobileSocialFeedAuthor,\n MobileSocialFeedInteraction,\n MobileSocialFeedItem,\n MobileSocialFeedItemBase,\n MobileSocialFeedItemPatch,\n MobileSocialFeedItemResponse,\n MobileSocialFeedListParams,\n MobileSocialFeedMarket,\n MobileSocialFeedPage,\n MobileSocialFeedPnl,\n MobileSocialFeedPositionCard,\n MobileSocialFeedPositionPatch,\n MobileSocialFeedRankedPage,\n MobileSocialFeedReadParams,\n MobileSocialFeedReadSession,\n MobileSocialFeedTopTradersPage,\n MobileSocialFeedTradeCard,\n MobileSocialFeedTradeRow,\n MobileSocialFeedTradeRowBase,\n MobileSocialFeedTraderBadge,\n MobileSocialFeedUpdates,\n SearchMobileProfilesParams,\n} from './types/clientTypes';\nimport {\n MobileServerAvatarUploadResponse,\n MobileServerFollowBatchResponse,\n MobileServerFollowMutationResponse,\n} from './types/serverExecuteTypes';\nimport {\n MobileServerAvatarPreset,\n MobileServerAvatarSelection,\n MobileServerFeedTrade,\n MobileServerFollowSummary,\n MobileServerIdentitySummary,\n MobileServerNotificationPreferenceScope,\n MobileServerNotificationPreferences,\n MobileServerProfile,\n MobileServerSocialFeedAuthor,\n MobileServerSocialFeedInteraction,\n MobileServerSocialFeedItem,\n MobileServerSocialFeedItemBase,\n MobileServerSocialFeedItemPatch,\n MobileServerSocialFeedMarket,\n MobileServerSocialFeedPnl,\n MobileServerSocialFeedPositionCard,\n MobileServerSocialFeedPositionPatch,\n MobileServerSocialFeedReadSession,\n MobileServerSocialFeedTradeCard,\n MobileServerSocialFeedTradeRow,\n MobileServerSocialFeedTradeRowBase,\n MobileServerSocialFeedTraderBadge,\n} from './types/serverModelTypes';\nimport {\n MobileServerFeedResponse,\n MobileServerFollowListResponse,\n MobileServerRegisteredWalletResponse,\n MobileServerSearchProfilesResponse,\n MobileServerSocialFeedItemResponse,\n MobileServerSocialFeedRankedResponse,\n MobileServerSocialFeedResponse,\n MobileServerSocialFeedTopTradersResponse,\n MobileServerSocialFeedUpdatesResponse,\n} from './types/serverQueryTypes';\nimport {\n MobileServerFollowListRequest,\n MobileServerProfilesInclude,\n MobileServerSearchProfilesRequest,\n MobileServerSocialFeedListParams,\n MobileServerSocialFeedReadParams,\n} from './types/serverRequestTypes';\n\n/**\n * Maps a server-side avatar preset to its client-side representation.\n */\nexport function mapMobileAvatarPreset(\n server: MobileServerAvatarPreset,\n): MobileAvatarPreset {\n return { id: server.id, avatarUrl: server.avatar_url };\n}\n\n/**\n * Maps an upload grant, preserving the signed PUT headers and server-provided lifetime.\n */\nexport function mapMobileAvatarUpload(\n server: MobileServerAvatarUploadResponse,\n): MobileAvatarUpload {\n return {\n uploadKey: server.upload_key,\n uploadUrl: server.upload_url,\n headers: server.headers,\n expiresInSeconds: server.expires_in_seconds,\n };\n}\n\n/**\n * Maps a client-side avatar selection to the signed wire payload; null clears the saved avatar.\n */\nexport function mapMobileAvatarSelectionToServer(\n avatar: MobileAvatarSelection | null,\n): MobileServerAvatarSelection | null {\n if (avatar === null) {\n return null;\n }\n if (avatar.type === 'preset') {\n return { type: 'preset', id: avatar.id };\n }\n return { type: 'upload', upload_key: avatar.uploadKey };\n}\n\n/**\n * Maps a server-side public profile (snake_case) to its client-side (camelCase) representation. The three\n * include-gated fields stay `undefined` when the backend omitted them, rather than being coerced to `null`\n * or zero, so callers can tell \"not requested\" from a real value.\n */\nexport function mapMobilePublicProfile(\n server: MobileServerProfile,\n): MobilePublicProfile {\n return {\n ...mapMobileIdentitySummary(server),\n bio: server.bio,\n privateMode: server.private_mode,\n followerCount: server.follower_count,\n followingCount: server.following_count,\n followSummary: server.follow_summary\n ? mapMobileFollowSummary(server.follow_summary)\n : undefined,\n };\n}\n\n/**\n * Maps a server-side identity summary (snake_case) to its client-side (camelCase) representation.\n */\nfunction mapMobileIdentitySummary(\n server: MobileServerIdentitySummary,\n): MobileIdentitySummary {\n return {\n subaccount: server.subaccount,\n username: server.username,\n displayName: server.display_name,\n avatarUrl: server.avatar_url,\n };\n}\n\n/**\n * Maps a server-side follow summary to its client-side representation.\n */\nfunction mapMobileFollowSummary(\n server: MobileServerFollowSummary,\n): MobileFollowSummary {\n return {\n isFollowing: server.is_following,\n followedByCount: server.followed_by_count,\n followedBy: server.followed_by.map(mapMobileIdentitySummary),\n };\n}\n\n/**\n * Maps a server-side Followers or Following response to a client-side {@link MobileFollowListPage}. Rows\n * keep `isFollowing` absent when the request named no `viewAs`, rather than defaulting it to `false`.\n */\nexport function mapMobileFollowListPage(\n server: MobileServerFollowListResponse,\n): MobileFollowListPage {\n return {\n accounts: server.accounts.map((account) => ({\n identity: mapMobileIdentitySummary(account.identity),\n isFollowing: account.is_following,\n followerCount: account.follower_count,\n })),\n nextCursor: server.next_cursor,\n };\n}\n\n/**\n * Maps a server-side profile search page (snake_case) to its client-side (camelCase) representation. Each\n * match goes through {@link mapMobilePublicProfile}, so include-gated fields stay `undefined` when omitted.\n */\nexport function mapMobileProfileSearchPage(\n server: MobileServerSearchProfilesResponse,\n): MobileProfileSearchPage {\n return {\n profiles: server.profiles.map(mapMobilePublicProfile),\n nextCursor: server.next_cursor,\n };\n}\n\n/**\n * Maps a server-side follow or unfollow response to its client-side representation.\n */\nexport function mapMobileFollowMutationResult(\n server: MobileServerFollowMutationResponse,\n): MobileFollowMutationResult {\n return {\n isFollowing: server.is_following,\n followerCount: server.follower_count,\n };\n}\n\n/**\n * Maps a server-side batch follow or unfollow response to its client-side representation.\n */\nexport function mapMobileFollowBatchResult(\n server: MobileServerFollowBatchResponse,\n): MobileFollowBatchResultItem[] {\n return server.results.map((result) => ({\n subaccount: result.subaccount,\n isFollowing: result.is_following,\n followerCount: result.follower_count,\n }));\n}\n\n/**\n * Maps server-side notification preferences (snake_case) to their client-side (camelCase) representation.\n */\nexport function mapMobileNotificationPreferences(\n server: MobileServerNotificationPreferences,\n): MobileNotificationPreferences {\n return {\n schemaVersion: server.schema_version,\n categories: server.categories.map((category) => ({\n category: category.category,\n enabled: category.enabled,\n scopes: category.scopes.map(mapMobileNotificationPreferenceScope),\n })),\n };\n}\n\nfunction mapMobileNotificationPreferenceScope(\n server: MobileServerNotificationPreferenceScope,\n): MobileNotificationPreferenceScope {\n if (server.type === 'subaccount') {\n return { type: 'subaccount', subaccount: server.subaccount };\n }\n return { type: 'product', productId: server.product_id };\n}\n\n/**\n * Maps client-side profiles includes (camelCase) to the server-side (snake_case) wire shape.\n */\nexport function mapMobileProfilesIncludeToServer(\n include: MobileProfilesInclude,\n): MobileServerProfilesInclude {\n return {\n follow_counts: include.followCounts,\n follow_summary: include.followSummary\n ? { view_as: subaccountToHex(include.followSummary.viewAs) }\n : undefined,\n };\n}\n\n/**\n * Maps the client-side params of a Followers or Following page to the server-side wire shape. Both list\n * directions take identical params and differ only in the `type` the caller dispatches on.\n */\nexport function mapMobileFollowListParamsToServer(\n params: GetMobileFollowListParams,\n): MobileServerFollowListRequest {\n return {\n subaccount: subaccountToHex(params.target),\n view_as: params.viewAs ? subaccountToHex(params.viewAs) : undefined,\n cursor: params.cursor,\n limit: params.limit,\n };\n}\n\n/**\n * Maps the client-side params of a profile search page to the server-side wire shape.\n */\nexport function mapMobileProfileSearchParamsToServer(\n params: SearchMobileProfilesParams,\n): MobileServerSearchProfilesRequest {\n return {\n query: params.query,\n include: params.include\n ? mapMobileProfilesIncludeToServer(params.include)\n : undefined,\n cursor: params.cursor,\n limit: params.limit,\n };\n}\n\n/**\n * Maps client-side notification preferences (camelCase) to the server-side (snake_case) wire shape.\n */\nexport function mapMobileNotificationPreferencesToServer(\n preferences: MobileNotificationPreferences,\n): MobileServerNotificationPreferences {\n return {\n schema_version: preferences.schemaVersion,\n categories: preferences.categories.map((category) => ({\n category: category.category,\n enabled: category.enabled,\n scopes: category.scopes.map(mapMobileNotificationPreferenceScopeToServer),\n })),\n };\n}\n\nfunction mapMobileNotificationPreferenceScopeToServer(\n scope: MobileNotificationPreferenceScope,\n): MobileServerNotificationPreferenceScope {\n if (scope.type === 'subaccount') {\n return { type: 'subaccount', subaccount: scope.subaccount };\n }\n return { type: 'product', product_id: scope.productId };\n}\n\n/**\n * Maps a server-side feed trade (snake_case) to its client-side (camelCase) representation.\n */\nfunction mapMobileFeedTrade(server: MobileServerFeedTrade): MobileFeedTrade {\n return {\n ...mapMobileIdentitySummary(server),\n orderDigest: server.order_digest,\n productId: server.product_id,\n quantity: server.quantity,\n notional: server.notional,\n averagePrice: server.average_price,\n margin: {\n mode: server.margin.mode,\n estimatedLeverage: server.margin.estimated_leverage,\n },\n position: server.position,\n realizedPnl: server.realized_pnl,\n filledAt: server.filled_at_ms,\n };\n}\n\n/**\n * Maps a server-side feed response to a client-side {@link MobileFeedPage}.\n */\nexport function mapMobileFeedPage(\n server: MobileServerFeedResponse,\n): MobileFeedPage {\n return {\n trades: server.trades.map(mapMobileFeedTrade),\n nextCursor: server.next_cursor,\n };\n}\n\n/**\n * Maps a server-side registered wallet (snake_case) to its client-side (camelCase) representation.\n */\nexport function mapMobileRegisteredWallet(\n server: MobileServerRegisteredWalletResponse,\n): MobileRegisteredWallet {\n return {\n wallet: server.wallet,\n platform: server.platform,\n locale: server.locale,\n appVersion: server.app_version,\n tokenFingerprintPrefix: server.token_fingerprint_prefix,\n lastSeenAt: server.last_seen_at,\n };\n}\n\n/**\n * Maps the official account PnL badge, retaining x18 amount units.\n * @param server - The service response.\n * @returns The mapped trader badge.\n */\nexport function mapMobileSocialFeedTraderBadge(\n server: MobileServerSocialFeedTraderBadge,\n): MobileSocialFeedTraderBadge {\n return {\n code: server.code,\n pnl: toBigNumber(server.pnl_x18),\n metricKey: server.metric_key,\n window: server.window,\n sourceAsOfMs: server.source_as_of_ms,\n fetchedAtMs: server.fetched_at_ms,\n snapshotId: server.snapshot_id,\n };\n}\n\n/**\n * Maps author identity, relationship state, and optional qualification badge.\n * @param server - The service response.\n * @returns The mapped feed author.\n */\nexport function mapMobileSocialFeedAuthor(\n server: MobileServerSocialFeedAuthor,\n): MobileSocialFeedAuthor {\n return {\n ...mapMobileIdentitySummary(server),\n isFollowing: server.is_following,\n traderBadge:\n server.trader_badge === null\n ? null\n : mapMobileSocialFeedTraderBadge(server.trader_badge),\n traderDataStatus: server.trader_data_status,\n };\n}\n\n/**\n * Maps social market metadata.\n * @param server - The service response.\n * @returns The mapped feed market.\n */\nexport function mapMobileSocialFeedMarket(\n server: MobileServerSocialFeedMarket,\n): MobileSocialFeedMarket {\n return {\n productId: server.product_id,\n symbol: server.symbol,\n logoUrl: server.logo_url,\n category: server.category,\n sourceCategories: server.source_categories,\n };\n}\n\n/**\n * Maps position PnL while retaining x18 amount units and availability.\n * @param server - The service response.\n * @returns The mapped feed pnl.\n */\nexport function mapMobileSocialFeedPnl(\n server: MobileServerSocialFeedPnl,\n): MobileSocialFeedPnl {\n return {\n amount: server.amount_x18 === null ? null : toBigNumber(server.amount_x18),\n basis: server.basis,\n mode: server.mode,\n asOfMs: server.as_of_ms,\n quality: server.quality,\n };\n}\n\n/**\n * Maps complete position facts, converting entry price to decimal units.\n * @param server - The service response.\n * @returns The mapped feed position patch.\n */\nexport function mapMobileSocialFeedPositionPatch(\n server: MobileServerSocialFeedPositionPatch,\n): MobileSocialFeedPositionPatch {\n return {\n positionId: server.position_id,\n positionVersion: server.position_version,\n stateAsOfMs: server.state_as_of_ms,\n entryPrice: removeDecimals(server.entry_price_x18),\n displayBasis: server.display_basis,\n snapshotAtMs: server.snapshot_at_ms,\n quantity: toBigNumber(server.quantity_x18),\n notional: toBigNumber(server.notional_x18),\n state: server.state,\n historyQuality: server.history_quality,\n marginMode: server.margin_mode,\n leverage: server.leverage,\n leverageAtMs: server.leverage_at_ms,\n pnl: mapMobileSocialFeedPnl(server.pnl),\n };\n}\n\n/**\n * Maps a position card with its current or frozen financial state.\n * @param server - The service response.\n * @returns The mapped feed position card.\n */\nexport function mapMobileSocialFeedPositionCard(\n server: MobileServerSocialFeedPositionCard,\n): MobileSocialFeedPositionCard {\n return {\n ...mapMobileSocialFeedPositionPatch(server),\n productId: server.product_id,\n market: mapMobileSocialFeedMarket(server.market),\n direction: server.direction,\n };\n}\n\n/**\n * Maps interaction counters without inventing unavailable relationship state.\n * @param server - The service response.\n * @returns The mapped feed interaction.\n */\nexport function mapMobileSocialFeedInteraction(\n server: MobileServerSocialFeedInteraction,\n): MobileSocialFeedInteraction {\n return {\n likeCount: server.like_count,\n commentCount: server.comment_count,\n viewCount: server.view_count,\n likedByMe: server.liked_by_me,\n };\n}\n\n/**\n * Maps common item metadata and server capabilities.\n * @param server - The service response.\n * @returns The mapped social feed item base.\n */\nexport function mapMobileSocialFeedItemBase(\n server: MobileServerSocialFeedItemBase,\n): MobileSocialFeedItemBase {\n return {\n id: server.id,\n hasAnalysis: server.has_analysis,\n drawing: server.drawing,\n author: mapMobileSocialFeedAuthor(server.author),\n createdAtMs: server.created_at_ms,\n displayAtMs: server.display_at_ms,\n version: server.version,\n market: mapMobileSocialFeedMarket(server.market),\n capabilities: {\n canLike: server.capabilities.can_like,\n canComment: server.capabilities.can_comment,\n canRecordView: server.capabilities.can_record_view,\n },\n };\n}\n\n/**\n * Maps an automatic trade card and its position and interaction metadata.\n * @param server - The service response.\n * @returns The mapped social trade card.\n */\nexport function mapMobileSocialFeedTradeCard(\n server: MobileServerSocialFeedTradeCard,\n): MobileSocialFeedTradeCard {\n return {\n ...mapMobileSocialFeedItemBase(server),\n kind: server.kind,\n action: server.action,\n text: server.text,\n mentions: server.mentions,\n position: mapMobileSocialFeedPositionCard(server.position),\n interaction: mapMobileSocialFeedInteraction(server.interaction),\n commentPreview: {\n items: server.comment_preview.items,\n totalCount: server.comment_preview.total_count,\n nextCursor: server.comment_preview.next_cursor,\n },\n };\n}\n\n/**\n * Maps historical trade facts with decimal execution prices and x18 quantities.\n * @param server - The service response.\n * @returns The mapped social trade row base.\n */\nexport function mapMobileSocialFeedTradeRowBase(\n server: MobileServerSocialFeedTradeRowBase,\n): MobileSocialFeedTradeRowBase {\n return {\n ...mapMobileSocialFeedItemBase(server),\n kind: server.kind,\n positionId: server.position_id,\n direction: server.direction,\n marginMode: server.margin_mode,\n leverage: server.leverage,\n leverageAtMs: server.leverage_at_ms,\n tradeCount: server.trade_count,\n quantity: toBigNumber(server.quantity_x18),\n averagePrice: removeDecimals(server.average_price_x18),\n };\n}\n\n/**\n * Maps size changes and independently nullable liquidation facts.\n * @param server - The service response.\n * @returns The mapped social trade row.\n */\nexport function mapMobileSocialFeedTradeRow(\n server: MobileServerSocialFeedTradeRow,\n): MobileSocialFeedTradeRow {\n const base = mapMobileSocialFeedTradeRowBase(server);\n if (server.action === 'liquidated') {\n return {\n ...base,\n action: server.action,\n notional:\n server.notional_x18 === null ? null : toBigNumber(server.notional_x18),\n entryPrice: removeDecimals(server.entry_price_x18),\n liquidationOraclePrice: removeDecimals(\n server.liquidation_oracle_price_x18,\n ),\n liquidationExecutionPrice: removeDecimals(\n server.liquidation_execution_price_x18,\n ),\n realizedPnlDelta:\n server.realized_pnl_delta_x18 === null\n ? null\n : toBigNumber(server.realized_pnl_delta_x18),\n };\n }\n return {\n ...base,\n action: server.action,\n notional: toBigNumber(server.notional_x18),\n };\n}\n\n/**\n * Maps the item variant without mixing card and row fields.\n * @param server - The service response.\n * @returns The mapped social feed item.\n */\nexport function mapMobileSocialFeedItem(\n server: MobileServerSocialFeedItem,\n): MobileSocialFeedItem {\n return server.kind === 'trade_card'\n ? mapMobileSocialFeedTradeCard(server)\n : mapMobileSocialFeedTradeRow(server);\n}\n\n/**\n * Maps a fixed reading session, preserving opaque credentials and cursors.\n * @param server - The service response.\n * @returns The mapped feed read session.\n */\nexport function mapMobileSocialFeedReadSession(\n server: MobileServerSocialFeedReadSession,\n): MobileSocialFeedReadSession {\n return {\n sessionId: server.session_id,\n mode: server.mode,\n expiresAtMs: server.expires_at_ms,\n viewTracking: {\n minVisibleRatio: server.view_tracking.min_visible_ratio,\n minDurationMs: server.view_tracking.min_duration_ms,\n },\n updateCursor: server.update_cursor,\n viewerToken: server.viewer_token,\n };\n}\n\n/**\n * Maps a fixed feed page without changing item order or pagination.\n * @param server - The service response.\n * @returns The mapped social feed page.\n */\nexport function mapMobileSocialFeedPage(\n server: MobileServerSocialFeedResponse,\n): MobileSocialFeedPage {\n return {\n readSession: mapMobileSocialFeedReadSession(server.read_session),\n items: server.items.map(mapMobileSocialFeedItem),\n nextCursor: server.next_cursor,\n watermark: server.watermark,\n };\n}\n\n/**\n * Maps a main feed page and its ranking version.\n * @param server - The service response.\n * @returns The mapped ranked feed page.\n */\nexport function mapMobileSocialFeedRankedPage(\n server: MobileServerSocialFeedRankedResponse,\n): MobileSocialFeedRankedPage {\n return {\n ...mapMobileSocialFeedPage(server),\n rankingVersion: server.ranking_version,\n };\n}\n\n/**\n * Maps qualified trader items and their shared eligibility snapshot.\n * @param server - The service response.\n * @returns The mapped top traders feed page.\n */\nexport function mapMobileSocialFeedTopTradersPage(\n server: MobileServerSocialFeedTopTradersResponse,\n): MobileSocialFeedTopTradersPage {\n return {\n ...mapMobileSocialFeedRankedPage(server),\n cohort: {\n snapshotId: server.cohort.snapshot_id,\n status: server.cohort.status,\n coverage: {\n scope: server.cohort.coverage.scope,\n totalAuthors: server.cohort.coverage.total_authors,\n queriedAuthors: server.cohort.coverage.queried_authors,\n complete: server.cohort.coverage.complete,\n },\n },\n };\n}\n\n/**\n * Maps item details and the authorized reading session.\n * @param server - The service response.\n * @returns The mapped social feed item response.\n */\nexport function mapMobileSocialFeedItemResponse(\n server: MobileServerSocialFeedItemResponse,\n): MobileSocialFeedItemResponse {\n return {\n item: mapMobileSocialFeedItem(server.item),\n readSession: mapMobileSocialFeedReadSession(server.read_session),\n };\n}\n\n/**\n * Maps item deltas, preserving omitted fields and explicit null clears.\n * @param server - The service response.\n * @returns The mapped feed item patch.\n */\nexport function mapMobileSocialFeedItemPatch(\n server: MobileServerSocialFeedItemPatch,\n): MobileSocialFeedItemPatch {\n return {\n itemId: server.item_id,\n version: server.version,\n author: mapMobileSocialFeedAuthor(server.author),\n displayAtMs: server.display_at_ms,\n ...(server.interaction === undefined\n ? {}\n : { interaction: mapMobileSocialFeedInteraction(server.interaction) }),\n ...(server.trade_count === undefined\n ? {}\n : { tradeCount: server.trade_count }),\n ...(server.quantity_x18 === undefined\n ? {}\n : { quantity: toBigNumber(server.quantity_x18) }),\n ...(server.notional_x18 === undefined\n ? {}\n : {\n notional:\n server.notional_x18 === null\n ? null\n : toBigNumber(server.notional_x18),\n }),\n ...(server.average_price_x18 === undefined\n ? {}\n : {\n averagePrice: removeDecimals(server.average_price_x18),\n }),\n ...(server.entry_price_x18 === undefined\n ? {}\n : {\n entryPrice: removeDecimals(server.entry_price_x18),\n }),\n ...(server.liquidation_oracle_price_x18 === undefined\n ? {}\n : {\n liquidationOraclePrice: removeDecimals(\n server.liquidation_oracle_price_x18,\n ),\n }),\n ...(server.liquidation_execution_price_x18 === undefined\n ? {}\n : {\n liquidationExecutionPrice: removeDecimals(\n server.liquidation_execution_price_x18,\n ),\n }),\n ...(server.realized_pnl_delta_x18 === undefined\n ? {}\n : {\n realizedPnlDelta:\n server.realized_pnl_delta_x18 === null\n ? null\n : toBigNumber(server.realized_pnl_delta_x18),\n }),\n ...(server.leverage === undefined ? {} : { leverage: server.leverage }),\n ...(server.leverage_at_ms === undefined\n ? {}\n : { leverageAtMs: server.leverage_at_ms }),\n };\n}\n\n/**\n * Maps viewport changes while preserving the sequence and update baseline.\n * @param server - The service response.\n * @returns The mapped feed updates.\n */\nexport function mapMobileSocialFeedUpdates(\n server: MobileServerSocialFeedUpdatesResponse,\n): MobileSocialFeedUpdates {\n return {\n itemPatches: server.item_patches.map(mapMobileSocialFeedItemPatch),\n positionPatches: server.position_patches.map(\n mapMobileSocialFeedPositionPatch,\n ),\n unavailableTargets: server.unavailable_targets,\n newItemsCount: server.new_items_count,\n updateCursor: server.update_cursor,\n reset: server.reset,\n viewportRevision: server.viewport_revision,\n requestSeq: server.request_seq,\n };\n}\n\n/**\n * Maps common list parameters to the public query wire format without inserting defaults.\n * @param params - Client filters and session pagination.\n * @returns Wire fields; undefined options are omitted when serialized to JSON.\n */\nexport function mapMobileSocialFeedListParamsToServer(\n params: MobileSocialFeedListParams,\n): MobileServerSocialFeedListParams {\n return {\n feed_types: params.feedTypes,\n minimum_notional: params.minimumNotional,\n limit: params.limit,\n session_id: params.sessionId,\n cursor: params.cursor,\n };\n}\n\n/**\n * Maps the public viewing account and browser credential without inferring an identity.\n * @param params - Public relationship perspective and optional session credential.\n * @returns Wire fields for a public feed read.\n */\nexport function mapMobileSocialFeedReadParamsToServer(\n params: MobileSocialFeedReadParams,\n): MobileServerSocialFeedReadParams {\n return {\n view_as:\n params.viewAs === undefined ? undefined : subaccountToHex(params.viewAs),\n viewer_token: params.viewerToken,\n };\n}\n"],"mappings":"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"}