@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.
- package/README.md +6 -1
- package/dist/{MobileClient-DjNpN7Dw.cjs → MobileClient-aDxiM_Kf.cjs} +47 -1
- package/dist/MobileClient-aDxiM_Kf.cjs.map +1 -0
- package/dist/MobileClient.cjs +1 -1
- package/dist/MobileClient.d.cts +40 -6
- package/dist/MobileClient.d.cts.map +1 -1
- package/dist/MobileClient.d.ts +40 -6
- package/dist/MobileClient.d.ts.map +1 -1
- package/dist/MobileClient.js +47 -1
- package/dist/MobileClient.js.map +1 -1
- package/dist/{MobileServerFailureError-kbMi1Ntc.d.cts → MobileServerFailureError-Bpa_WA9f.d.cts} +3 -3
- package/dist/{MobileServerFailureError-kbMi1Ntc.d.cts.map → MobileServerFailureError-Bpa_WA9f.d.cts.map} +1 -1
- package/dist/{MobileServerFailureError-DvtkMAVX.d.ts → MobileServerFailureError-Dd3c6P_Z.d.ts} +3 -3
- package/dist/{MobileServerFailureError-DvtkMAVX.d.ts.map → MobileServerFailureError-Dd3c6P_Z.d.ts.map} +1 -1
- package/dist/{buildSignedMobileRequest-lSIJmG6D.d.ts → buildSignedMobileRequest-Cb1T74xV.d.ts} +2 -2
- package/dist/{buildSignedMobileRequest-lSIJmG6D.d.ts.map → buildSignedMobileRequest-Cb1T74xV.d.ts.map} +1 -1
- package/dist/{buildSignedMobileRequest-DBWN0z0u.d.cts → buildSignedMobileRequest-NHbMAPzd.d.cts} +2 -2
- package/dist/{buildSignedMobileRequest-DBWN0z0u.d.cts.map → buildSignedMobileRequest-NHbMAPzd.d.cts.map} +1 -1
- package/dist/{canonicalize-Cx3lCVpm.d.ts → canonicalize-BBYGh17w.d.ts} +2 -2
- package/dist/canonicalize-BBYGh17w.d.ts.map +1 -0
- package/dist/{canonicalize-DNgB8Jsm.d.cts → canonicalize-BF_SiNvO.d.cts} +2 -2
- package/dist/canonicalize-BF_SiNvO.d.cts.map +1 -0
- package/dist/{clientTypes-DnPE1zZO.d.cts → clientTypes-BWFKo9oE.d.cts} +63 -2
- package/dist/clientTypes-BWFKo9oE.d.cts.map +1 -0
- package/dist/{clientTypes-ws9CDHw4.d.ts → clientTypes-DCTiUV0H.d.ts} +63 -2
- package/dist/clientTypes-DCTiUV0H.d.ts.map +1 -0
- package/dist/dataMappers.cjs +34 -0
- package/dist/dataMappers.cjs.map +1 -1
- package/dist/dataMappers.d.cts +18 -5
- package/dist/dataMappers.d.cts.map +1 -1
- package/dist/dataMappers.d.ts +18 -5
- package/dist/dataMappers.d.ts.map +1 -1
- package/dist/dataMappers.js +32 -1
- package/dist/dataMappers.js.map +1 -1
- package/dist/{eip712MethodByType-T7dfjmC_.d.cts → eip712MethodByType-BSx11xG-.d.cts} +2 -2
- package/dist/eip712MethodByType-BSx11xG-.d.cts.map +1 -0
- package/dist/{eip712MethodByType-Bmu9PYx6.d.ts → eip712MethodByType-DkiAjCLs.d.ts} +2 -2
- package/dist/eip712MethodByType-DkiAjCLs.d.ts.map +1 -0
- package/dist/{follow-D6Mg8GHx.d.ts → follow-B3CZ04c0.d.cts} +7 -2
- package/dist/{follow-D6Mg8GHx.d.cts.map → follow-B3CZ04c0.d.cts.map} +1 -1
- package/dist/{follow-D6Mg8GHx.d.cts → follow-B3CZ04c0.d.ts} +7 -2
- package/dist/{follow-D6Mg8GHx.d.ts.map → follow-B3CZ04c0.d.ts.map} +1 -1
- package/dist/index.cjs +6 -1
- package/dist/index.d.cts +17 -16
- package/dist/index.d.ts +17 -16
- package/dist/index.js +4 -3
- package/dist/{mobileErrorCodes-B3kTLit_.d.ts → mobileErrorCodes-3LtreeZM.d.cts} +14 -3
- package/dist/mobileErrorCodes-3LtreeZM.d.cts.map +1 -0
- package/dist/{mobileErrorCodes-B3kTLit_.d.cts → mobileErrorCodes-3LtreeZM.d.ts} +14 -3
- package/dist/mobileErrorCodes-3LtreeZM.d.ts.map +1 -0
- package/dist/patterns-3UKIG5IS.d.cts +13 -0
- package/dist/patterns-3UKIG5IS.d.cts.map +1 -0
- package/dist/patterns-3UKIG5IS.d.ts +13 -0
- package/dist/patterns-3UKIG5IS.d.ts.map +1 -0
- package/dist/{payloadHash-Brc5ceFq.d.cts → payloadHash-BOWGjqdb.d.cts} +2 -2
- package/dist/payloadHash-BOWGjqdb.d.cts.map +1 -0
- package/dist/{payloadHash-cZgv7NSo.d.ts → payloadHash-Bzf4CtjV.d.ts} +2 -2
- package/dist/payloadHash-Bzf4CtjV.d.ts.map +1 -0
- package/dist/profileSearch-DCuB-IKD.d.cts +14 -0
- package/dist/profileSearch-DCuB-IKD.d.cts.map +1 -0
- package/dist/profileSearch-DCuB-IKD.d.ts +14 -0
- package/dist/profileSearch-DCuB-IKD.d.ts.map +1 -0
- package/dist/{serverBaseTypes-CWBdZomv.d.ts → serverBaseTypes-DWf3iGWy.d.ts} +2 -2
- package/dist/{serverBaseTypes-CWBdZomv.d.ts.map → serverBaseTypes-DWf3iGWy.d.ts.map} +1 -1
- package/dist/{serverBaseTypes-CcWT_ZBe.d.cts → serverBaseTypes-KREDe2M9.d.cts} +2 -2
- package/dist/{serverBaseTypes-CcWT_ZBe.d.cts.map → serverBaseTypes-KREDe2M9.d.cts.map} +1 -1
- package/dist/{serverExecuteTypes-CgjzwBaA.d.cts → serverExecuteTypes-DVRa6ifu.d.cts} +26 -6
- package/dist/serverExecuteTypes-DVRa6ifu.d.cts.map +1 -0
- package/dist/{serverExecuteTypes-jyr5aO5q.d.ts → serverExecuteTypes-DlYZCp1f.d.ts} +26 -6
- package/dist/serverExecuteTypes-DlYZCp1f.d.ts.map +1 -0
- package/dist/{serverQueryTypes-DPRP61yA.d.ts → serverQueryTypes-BFdwq0Z2.d.ts} +14 -4
- package/dist/serverQueryTypes-BFdwq0Z2.d.ts.map +1 -0
- package/dist/{serverQueryTypes-H_mI6fPl.d.cts → serverQueryTypes-DNdMpmDr.d.cts} +14 -4
- package/dist/serverQueryTypes-DNdMpmDr.d.cts.map +1 -0
- package/dist/{serverRequestTypes-BY0f5woc.d.ts → serverRequestTypes-BNA7FCY6.d.ts} +20 -3
- package/dist/serverRequestTypes-BNA7FCY6.d.ts.map +1 -0
- package/dist/{serverRequestTypes-DGGqQMK3.d.cts → serverRequestTypes-CxDRFKfv.d.cts} +20 -3
- package/dist/serverRequestTypes-CxDRFKfv.d.cts.map +1 -0
- package/dist/{serverResponseGuards-BGHTBbtz.d.ts → serverResponseGuards-BU1Xv_tG.d.ts} +2 -2
- package/dist/{serverResponseGuards-BGHTBbtz.d.ts.map → serverResponseGuards-BU1Xv_tG.d.ts.map} +1 -1
- package/dist/{serverResponseGuards-DGhrUL_c.d.cts → serverResponseGuards-Dkdok0Sm.d.cts} +2 -2
- package/dist/{serverResponseGuards-DGhrUL_c.d.cts.map → serverResponseGuards-Dkdok0Sm.d.cts.map} +1 -1
- package/dist/signing/buildSignedMobileRequest.d.cts +1 -1
- package/dist/signing/buildSignedMobileRequest.d.ts +1 -1
- package/dist/signing/canonicalize.cjs +5 -0
- package/dist/signing/canonicalize.cjs.map +1 -1
- package/dist/signing/canonicalize.d.cts +1 -1
- package/dist/signing/canonicalize.d.ts +1 -1
- package/dist/signing/canonicalize.js +5 -0
- package/dist/signing/canonicalize.js.map +1 -1
- package/dist/signing/eip712MethodByType.cjs +2 -1
- package/dist/signing/eip712MethodByType.cjs.map +1 -1
- package/dist/signing/eip712MethodByType.d.cts +1 -1
- package/dist/signing/eip712MethodByType.d.ts +1 -1
- package/dist/signing/eip712MethodByType.js +2 -1
- package/dist/signing/eip712MethodByType.js.map +1 -1
- package/dist/signing/index.d.cts +5 -5
- package/dist/signing/index.d.ts +5 -5
- package/dist/signing/payloadHash.d.cts +1 -1
- package/dist/signing/payloadHash.d.ts +1 -1
- package/dist/signing/types.d.cts +1 -1
- package/dist/signing/types.d.ts +1 -1
- package/dist/types/MobileServerFailureError.d.cts +1 -1
- package/dist/types/MobileServerFailureError.d.ts +1 -1
- package/dist/types/clientTypes.d.cts +2 -2
- package/dist/types/clientTypes.d.ts +2 -2
- package/dist/types/index.d.cts +8 -8
- package/dist/types/index.d.ts +8 -8
- package/dist/types/mobileErrorCodes.cjs +12 -0
- package/dist/types/mobileErrorCodes.cjs.map +1 -1
- package/dist/types/mobileErrorCodes.d.cts +1 -1
- package/dist/types/mobileErrorCodes.d.ts +1 -1
- package/dist/types/mobileErrorCodes.js +12 -0
- package/dist/types/mobileErrorCodes.js.map +1 -1
- package/dist/types/serverBaseTypes.d.cts +1 -1
- package/dist/types/serverBaseTypes.d.ts +1 -1
- package/dist/types/serverExecuteTypes.d.cts +2 -2
- package/dist/types/serverExecuteTypes.d.ts +2 -2
- package/dist/types/serverQueryTypes.d.cts +2 -2
- package/dist/types/serverQueryTypes.d.ts +2 -2
- package/dist/types/serverRequestTypes.d.cts +2 -2
- package/dist/types/serverRequestTypes.d.ts +2 -2
- package/dist/{types-l47aSWtA.d.cts → types-BCr2G5gS.d.cts} +6 -2
- package/dist/types-BCr2G5gS.d.cts.map +1 -0
- package/dist/{types-B021odcS.d.ts → types-C18k-9Vy.d.ts} +6 -2
- package/dist/types-C18k-9Vy.d.ts.map +1 -0
- package/dist/utils/follow.cjs +6 -0
- package/dist/utils/follow.cjs.map +1 -1
- package/dist/utils/follow.d.cts +2 -2
- package/dist/utils/follow.d.ts +2 -2
- package/dist/utils/follow.js +6 -1
- package/dist/utils/follow.js.map +1 -1
- package/dist/utils/index.cjs +5 -0
- package/dist/utils/index.d.cts +5 -4
- package/dist/utils/index.d.ts +5 -4
- package/dist/utils/index.js +4 -3
- package/dist/utils/patterns.cjs +6 -0
- package/dist/utils/patterns.cjs.map +1 -1
- package/dist/utils/patterns.d.cts +2 -2
- package/dist/utils/patterns.d.ts +2 -2
- package/dist/utils/patterns.js +6 -1
- package/dist/utils/patterns.js.map +1 -1
- package/dist/utils/profileSearch.cjs +17 -0
- package/dist/utils/profileSearch.cjs.map +1 -0
- package/dist/utils/profileSearch.d.cts +2 -0
- package/dist/utils/profileSearch.d.ts +2 -0
- package/dist/utils/profileSearch.js +15 -0
- package/dist/utils/profileSearch.js.map +1 -0
- package/dist/utils/serverResponseGuards.d.cts +1 -1
- package/dist/utils/serverResponseGuards.d.ts +1 -1
- package/package.json +3 -3
- package/src/MobileClient.ts +65 -0
- package/src/dataMappers.ts +48 -0
- package/src/signing/canonicalize.ts +6 -0
- package/src/signing/eip712MethodByType.ts +1 -0
- package/src/signing/signing.test.ts +34 -0
- package/src/signing/types.ts +7 -0
- package/src/types/clientTypes.ts +65 -0
- package/src/types/mobileErrorCodes.ts +12 -0
- package/src/types/serverExecuteTypes.ts +24 -2
- package/src/types/serverQueryTypes.ts +11 -0
- package/src/types/serverRequestTypes.ts +18 -0
- package/src/utils/follow.ts +6 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/patterns.ts +7 -0
- package/src/utils/profileSearch.ts +11 -0
- package/dist/MobileClient-DjNpN7Dw.cjs.map +0 -1
- package/dist/canonicalize-Cx3lCVpm.d.ts.map +0 -1
- package/dist/canonicalize-DNgB8Jsm.d.cts.map +0 -1
- package/dist/clientTypes-DnPE1zZO.d.cts.map +0 -1
- package/dist/clientTypes-ws9CDHw4.d.ts.map +0 -1
- package/dist/eip712MethodByType-Bmu9PYx6.d.ts.map +0 -1
- package/dist/eip712MethodByType-T7dfjmC_.d.cts.map +0 -1
- package/dist/mobileErrorCodes-B3kTLit_.d.cts.map +0 -1
- package/dist/mobileErrorCodes-B3kTLit_.d.ts.map +0 -1
- package/dist/patterns-BE0Audp5.d.cts +0 -8
- package/dist/patterns-BE0Audp5.d.cts.map +0 -1
- package/dist/patterns-BE0Audp5.d.ts +0 -8
- package/dist/patterns-BE0Audp5.d.ts.map +0 -1
- package/dist/payloadHash-Brc5ceFq.d.cts.map +0 -1
- package/dist/payloadHash-cZgv7NSo.d.ts.map +0 -1
- package/dist/serverExecuteTypes-CgjzwBaA.d.cts.map +0 -1
- package/dist/serverExecuteTypes-jyr5aO5q.d.ts.map +0 -1
- package/dist/serverQueryTypes-DPRP61yA.d.ts.map +0 -1
- package/dist/serverQueryTypes-H_mI6fPl.d.cts.map +0 -1
- package/dist/serverRequestTypes-BY0f5woc.d.ts.map +0 -1
- package/dist/serverRequestTypes-DGGqQMK3.d.cts.map +0 -1
- package/dist/types-B021odcS.d.ts.map +0 -1
- package/dist/types-l47aSWtA.d.cts.map +0 -1
package/dist/dataMappers.cjs
CHANGED
|
@@ -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;
|
package/dist/dataMappers.cjs.map
CHANGED
|
@@ -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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"}
|
package/dist/dataMappers.d.cts
CHANGED
|
@@ -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
|
|
3
|
-
import { d as MobileServerSocialFeedReadParams,
|
|
4
|
-
import {
|
|
5
|
-
import { d as
|
|
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":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"dataMappers.d.cts","names":[],"sources":["../src/src/dataMappers.ts"],"mappings":"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"}
|
package/dist/dataMappers.d.ts
CHANGED
|
@@ -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
|
|
3
|
-
import { d as MobileServerSocialFeedReadParams,
|
|
4
|
-
import {
|
|
5
|
-
import { d as
|
|
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":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"dataMappers.d.ts","names":[],"sources":["../src/src/dataMappers.ts"],"mappings":"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"}
|
package/dist/dataMappers.js
CHANGED
|
@@ -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
|
package/dist/dataMappers.js.map
CHANGED
|
@@ -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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"}
|