@smartico/public-api 0.0.338 → 0.0.340
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/dist/{PointsHistory/PointsHistoryLog.d.ts → ActivityLog/ActivityLogEntry.d.ts} +1 -1
- package/dist/{PointsHistory/GetPointsHistoryRequest.d.ts → ActivityLog/GetActivityLogRequest.d.ts} +3 -1
- package/dist/ActivityLog/GetActivityLogResponse.d.ts +7 -0
- package/dist/ActivityLog/index.d.ts +5 -0
- package/dist/Analytics/AnalyticStoreData.d.ts +1 -1
- package/dist/SmarticoAPI.d.ts +4 -4
- package/dist/WSAPI/WSAPI.d.ts +15 -9
- package/dist/WSAPI/WSAPITypes.d.ts +4 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.js +37 -21
- package/dist/index.js.map +1 -1
- package/dist/index.modern.mjs +29 -19
- package/dist/index.modern.mjs.map +1 -1
- package/docs/README.md +3 -3
- package/docs/classes/WSAPI.md +11 -7
- package/docs/interfaces/{TPointsHistoryLog.md → TActivityLog.md} +2 -2
- package/package.json +1 -1
- package/src/{PointsHistory/PointsHistoryLog.ts → ActivityLog/ActivityLogEntry.ts} +2 -1
- package/src/{PointsHistory/GetPointsHistoryRequest.ts → ActivityLog/GetActivityLogRequest.ts} +4 -1
- package/src/{PointsHistory/GetPointsHistoryResponse.ts → ActivityLog/GetActivityLogResponse.ts} +9 -8
- package/src/{PointsHistory → ActivityLog}/PointChangeSourceType.ts +1 -0
- package/src/{PointsHistory → ActivityLog}/UserBalanceType.ts +1 -0
- package/src/ActivityLog/index.ts +7 -0
- package/src/Analytics/AnalyticStoreData.ts +1 -1
- package/src/SmarticoAPI.ts +19 -10
- package/src/WSAPI/WSAPI.ts +24 -16
- package/src/WSAPI/WSAPITypes.ts +5 -4
- package/src/index.ts +1 -1
- package/dist/PointsHistory/GetPointsHistoryResponse.d.ts +0 -7
- package/dist/PointsHistory/index.d.ts +0 -5
- package/src/PointsHistory/index.ts +0 -6
- /package/dist/{PointsHistory → ActivityLog}/PointChangeSourceType.d.ts +0 -0
- /package/dist/{PointsHistory → ActivityLog}/UserBalanceType.d.ts +0 -0
package/docs/README.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
## Enumerations
|
|
4
4
|
|
|
5
|
+
- [PointChangeSourceType](enums/PointChangeSourceType.md)
|
|
6
|
+
- [UserBalanceType](enums/UserBalanceType.md)
|
|
5
7
|
- [BonusStatus](enums/BonusStatus.md)
|
|
6
8
|
- [AchCustomSectionType](enums/AchCustomSectionType.md)
|
|
7
9
|
- [AchCustomLayoutTheme](enums/AchCustomLayoutTheme.md)
|
|
@@ -32,8 +34,6 @@
|
|
|
32
34
|
- [SAWWheelLayout](enums/SAWWheelLayout.md)
|
|
33
35
|
- [SAWWinSoundType](enums/SAWWinSoundType.md)
|
|
34
36
|
- [AchievementAvailabilityStatus](enums/AchievementAvailabilityStatus.md)
|
|
35
|
-
- [PointChangeSourceType](enums/PointChangeSourceType.md)
|
|
36
|
-
- [UserBalanceType](enums/UserBalanceType.md)
|
|
37
37
|
- [RaffleDrawInstanceState](enums/RaffleDrawInstanceState.md)
|
|
38
38
|
- [RaffleDrawTypeExecution](enums/RaffleDrawTypeExecution.md)
|
|
39
39
|
- [BuyStoreItemErrorCode](enums/BuyStoreItemErrorCode.md)
|
|
@@ -150,7 +150,7 @@
|
|
|
150
150
|
- [TRaffleDraw](interfaces/TRaffleDraw.md)
|
|
151
151
|
- [TRaffleDrawRun](interfaces/TRaffleDrawRun.md)
|
|
152
152
|
- [TransformedRaffleClaimPrizeResponse](interfaces/TransformedRaffleClaimPrizeResponse.md)
|
|
153
|
-
- [
|
|
153
|
+
- [TActivityLog](interfaces/TActivityLog.md)
|
|
154
154
|
- [TRaffleOptinResponse](interfaces/TRaffleOptinResponse.md)
|
|
155
155
|
|
|
156
156
|
## General API
|
package/docs/classes/WSAPI.md
CHANGED
|
@@ -986,24 +986,26 @@ _smartico.api.reportClickEvent({
|
|
|
986
986
|
|
|
987
987
|
___
|
|
988
988
|
|
|
989
|
-
###
|
|
989
|
+
### getActivityLog
|
|
990
990
|
|
|
991
|
-
▸ **
|
|
991
|
+
▸ **getActivityLog**(`«destructured»`): `Promise`\<[`TActivityLog`](../interfaces/TActivityLog.md)[]\>
|
|
992
992
|
|
|
993
|
-
Returns the
|
|
993
|
+
Returns the activity log for a user within a specified time range.
|
|
994
994
|
The response includes both points changes and gems/diamonds changes.
|
|
995
995
|
Each log entry contains information about the change amount, balance, and source.
|
|
996
996
|
The returned list is cached for 30 seconds.
|
|
997
|
-
You can pass the onUpdate callback as a parameter, it will be called every time the
|
|
997
|
+
You can pass the onUpdate callback as a parameter, it will be called every time the activity log is updated and will provide the updated list of activity logs for the last 10 minutes.
|
|
998
998
|
|
|
999
999
|
**Example**:
|
|
1000
1000
|
```
|
|
1001
1001
|
const startTime = Math.floor(Date.now() / 1000) - 86400 * 30; // 30 days ago
|
|
1002
1002
|
const endTime = Math.floor(Date.now() / 1000); // now
|
|
1003
1003
|
|
|
1004
|
-
_smartico.api.
|
|
1004
|
+
_smartico.api.getActivityLog({
|
|
1005
1005
|
startTimeSeconds: startTime,
|
|
1006
1006
|
endTimeSeconds: endTime,
|
|
1007
|
+
from: 0,
|
|
1008
|
+
to: 50,
|
|
1007
1009
|
onUpdate: (data) => console.log('Updated:', data)
|
|
1008
1010
|
}).then((result) => {
|
|
1009
1011
|
console.log(result);
|
|
@@ -1019,11 +1021,13 @@ _smartico.api.getPointsHistory({
|
|
|
1019
1021
|
| `«destructured»` | `Object` |
|
|
1020
1022
|
| › `startTimeSeconds` | `number` |
|
|
1021
1023
|
| › `endTimeSeconds` | `number` |
|
|
1022
|
-
| › `
|
|
1024
|
+
| › `from` | `number` |
|
|
1025
|
+
| › `to` | `number` |
|
|
1026
|
+
| › `onUpdate?` | (`data`: [`TActivityLog`](../interfaces/TActivityLog.md)[]) => `void` |
|
|
1023
1027
|
|
|
1024
1028
|
#### Returns
|
|
1025
1029
|
|
|
1026
|
-
`Promise`\<[`
|
|
1030
|
+
`Promise`\<[`TActivityLog`](../interfaces/TActivityLog.md)[]\>
|
|
1027
1031
|
|
|
1028
1032
|
___
|
|
1029
1033
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Interface:
|
|
1
|
+
# Interface: TActivityLog
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
TActivityLog describes a unified history log entry for points, gems, or diamonds changes.
|
|
4
4
|
The structure is the same regardless of balance type, making it easy to iterate and display.
|
|
5
5
|
|
|
6
6
|
## Properties
|
package/package.json
CHANGED
package/src/{PointsHistory/GetPointsHistoryRequest.ts → ActivityLog/GetActivityLogRequest.ts}
RENAMED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { ProtocolMessage } from '../Base/ProtocolMessage';
|
|
2
2
|
|
|
3
|
-
export interface
|
|
3
|
+
export interface GetActivityLogRequest extends ProtocolMessage {
|
|
4
4
|
userId: number;
|
|
5
5
|
startTimeSeconds: number;
|
|
6
6
|
endTimeSeconds: number;
|
|
7
|
+
limit: number;
|
|
8
|
+
offset: number;
|
|
7
9
|
}
|
|
8
10
|
|
|
11
|
+
|
package/src/{PointsHistory/GetPointsHistoryResponse.ts → ActivityLog/GetActivityLogResponse.ts}
RENAMED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { ProtocolResponse } from '../Base/ProtocolResponse';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { ActivityLogEntry } from './ActivityLogEntry';
|
|
3
|
+
import { TActivityLog } from '../WSAPI/WSAPITypes';
|
|
4
4
|
import { UserBalanceType } from './UserBalanceType';
|
|
5
5
|
|
|
6
|
-
export interface
|
|
7
|
-
logHistory:
|
|
6
|
+
export interface GetActivityLogResponse extends ProtocolResponse {
|
|
7
|
+
logHistory: ActivityLogEntry[];
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export const
|
|
10
|
+
export const ActivityLogTransform = (items: ActivityLogEntry[]): TActivityLog[] => {
|
|
11
11
|
if (!items) {
|
|
12
12
|
return [];
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
return items.map((item: any):
|
|
16
|
-
const itemTransformed: Partial<
|
|
15
|
+
return items.map((item: any): TActivityLog => {
|
|
16
|
+
const itemTransformed: Partial<TActivityLog> = {
|
|
17
17
|
create_date: item.create_date,
|
|
18
18
|
user_ext_id: item.user_ext_id,
|
|
19
19
|
crm_brand_id: item.crm_brand_id,
|
|
@@ -33,7 +33,8 @@ export const PointsHistoryTransform = (items: PointsHistoryLog[]): TPointsHistor
|
|
|
33
33
|
itemTransformed.total_ever = item.user_points_ever;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
return itemTransformed as
|
|
36
|
+
return itemTransformed as TActivityLog;
|
|
37
37
|
});
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
+
|
package/src/SmarticoAPI.ts
CHANGED
|
@@ -98,7 +98,7 @@ import {
|
|
|
98
98
|
TBonus,
|
|
99
99
|
TRaffle,
|
|
100
100
|
TLevelCurrent,
|
|
101
|
-
|
|
101
|
+
TActivityLog,
|
|
102
102
|
} from './WSAPI/WSAPITypes';
|
|
103
103
|
import { getLeaderBoardTransform } from './Leaderboard/LeaderBoards';
|
|
104
104
|
import { GetAchievementsUserInfoResponse } from './Core/GetAchievementsUserInfoResponse';
|
|
@@ -125,7 +125,7 @@ import { GetRelatedAchTourRequest } from './Missions/GetRelatedAchTourRequest';
|
|
|
125
125
|
import { GetRelatedAchTourResponse } from './Missions/GetRelatedAchTourResponse';
|
|
126
126
|
import { GetRafflesResponse, raffleTransform } from './Raffle/GetRafflesResponse';
|
|
127
127
|
import { GetRafflesRequest } from './Raffle/GetRafflesRequest';
|
|
128
|
-
import {
|
|
128
|
+
import { GetActivityLogRequest, GetActivityLogResponse, ActivityLogTransform } from './ActivityLog';
|
|
129
129
|
import { InboxCategories } from './Inbox/InboxCategories';
|
|
130
130
|
import { GetDrawRunRequest, GetDrawRunResponse, GetRaffleDrawRunsHistoryRequest, GetRaffleDrawRunsHistoryResponse, RaffleClaimPrizeRequest, RaffleClaimPrizeResponse, RaffleOptinRequest, RaffleOptinResponse } from './Raffle';
|
|
131
131
|
import { GetJackpotWinnersResponse, GetJackpotWinnersResponseTransform, JackpotWinnerHistory } from './Jackpots/GetJackpotWinnersResponse';
|
|
@@ -1337,30 +1337,39 @@ class SmarticoAPI {
|
|
|
1337
1337
|
|
|
1338
1338
|
}
|
|
1339
1339
|
|
|
1340
|
-
public async
|
|
1340
|
+
public async getActivityLog(
|
|
1341
1341
|
user_ext_id: string,
|
|
1342
1342
|
startTimeSeconds: number,
|
|
1343
1343
|
endTimeSeconds: number,
|
|
1344
|
-
|
|
1345
|
-
|
|
1344
|
+
limit: number,
|
|
1345
|
+
offset: number,
|
|
1346
|
+
): Promise<GetActivityLogResponse> {
|
|
1347
|
+
const message = this.buildMessage<GetActivityLogRequest, GetActivityLogResponse>(
|
|
1346
1348
|
user_ext_id,
|
|
1347
1349
|
ClassId.GET_POINT_HISTORY_REQUEST,
|
|
1348
1350
|
{
|
|
1349
1351
|
startTimeSeconds: Math.floor(startTimeSeconds),
|
|
1350
1352
|
endTimeSeconds: Math.floor(endTimeSeconds),
|
|
1353
|
+
limit,
|
|
1354
|
+
offset,
|
|
1351
1355
|
},
|
|
1352
1356
|
);
|
|
1353
1357
|
|
|
1354
|
-
return await this.send<
|
|
1358
|
+
return await this.send<GetActivityLogResponse>(message, ClassId.GET_POINT_HISTORY_RESPONSE);
|
|
1355
1359
|
}
|
|
1356
1360
|
|
|
1357
|
-
public async
|
|
1361
|
+
public async getActivityLogT(
|
|
1358
1362
|
user_ext_id: string,
|
|
1359
1363
|
startTimeSeconds: number,
|
|
1360
1364
|
endTimeSeconds: number,
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1365
|
+
from: number = 0,
|
|
1366
|
+
to: number = 50,
|
|
1367
|
+
): Promise<TActivityLog[]> {
|
|
1368
|
+
const limit = to - from > 50 ? 50 : to - from;
|
|
1369
|
+
const offset = from;
|
|
1370
|
+
|
|
1371
|
+
return ActivityLogTransform(
|
|
1372
|
+
(await this.getActivityLog(user_ext_id, startTimeSeconds, endTimeSeconds, limit, offset)).logHistory,
|
|
1364
1373
|
);
|
|
1365
1374
|
}
|
|
1366
1375
|
}
|
package/src/WSAPI/WSAPI.ts
CHANGED
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
TRaffleDrawRun,
|
|
38
38
|
TransformedRaffleClaimPrizeResponse,
|
|
39
39
|
TLevelCurrent,
|
|
40
|
-
|
|
40
|
+
TActivityLog,
|
|
41
41
|
TRaffleOptinResponse,
|
|
42
42
|
} from './WSAPITypes';
|
|
43
43
|
import { LeaderBoardPeriodType } from '../Leaderboard';
|
|
@@ -96,7 +96,7 @@ enum onUpdateContextKey {
|
|
|
96
96
|
JackpotEligibleGames = 'jackpotEligibleGames',
|
|
97
97
|
CurrentLevel = 'currentLevel',
|
|
98
98
|
InboxUnreadCount = 'inboxUnreadCount',
|
|
99
|
-
|
|
99
|
+
ActivityLog = 'activityLog',
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
/** @group General API */
|
|
@@ -150,7 +150,7 @@ export class WSAPI {
|
|
|
150
150
|
this.updateInboxUnreadCount(data.props.core_inbox_unread_count);
|
|
151
151
|
}
|
|
152
152
|
if (data?.props?.ach_points_balance !== undefined || data?.props?.ach_gems_balance !== undefined || data?.props?.ach_diamonds_balance !== undefined) {
|
|
153
|
-
this.
|
|
153
|
+
this.notifyActivityLogUpdate();
|
|
154
154
|
}
|
|
155
155
|
});
|
|
156
156
|
on(ClassId.RAF_OPTIN_RESPONSE, () => this.updateRaffles());
|
|
@@ -1013,20 +1013,22 @@ export class WSAPI {
|
|
|
1013
1013
|
}
|
|
1014
1014
|
|
|
1015
1015
|
/**
|
|
1016
|
-
* Returns the
|
|
1016
|
+
* Returns the activity log for a user within a specified time range.
|
|
1017
1017
|
* The response includes both points changes and gems/diamonds changes.
|
|
1018
1018
|
* Each log entry contains information about the change amount, balance, and source.
|
|
1019
1019
|
* The returned list is cached for 30 seconds.
|
|
1020
|
-
* You can pass the onUpdate callback as a parameter, it will be called every time the
|
|
1020
|
+
* You can pass the onUpdate callback as a parameter, it will be called every time the activity log is updated and will provide the updated list of activity logs for the last 10 minutes.
|
|
1021
1021
|
*
|
|
1022
1022
|
* **Example**:
|
|
1023
1023
|
* ```
|
|
1024
1024
|
* const startTime = Math.floor(Date.now() / 1000) - 86400 * 30; // 30 days ago
|
|
1025
1025
|
* const endTime = Math.floor(Date.now() / 1000); // now
|
|
1026
1026
|
*
|
|
1027
|
-
* _smartico.api.
|
|
1027
|
+
* _smartico.api.getActivityLog({
|
|
1028
1028
|
* startTimeSeconds: startTime,
|
|
1029
1029
|
* endTimeSeconds: endTime,
|
|
1030
|
+
* from: 0,
|
|
1031
|
+
* to: 50,
|
|
1030
1032
|
* onUpdate: (data) => console.log('Updated:', data)
|
|
1031
1033
|
* }).then((result) => {
|
|
1032
1034
|
* console.log(result);
|
|
@@ -1037,26 +1039,32 @@ export class WSAPI {
|
|
|
1037
1039
|
*
|
|
1038
1040
|
* @param params.startTimeSeconds - Start time in seconds (epoch timestamp)
|
|
1039
1041
|
* @param params.endTimeSeconds - End time in seconds (epoch timestamp)
|
|
1040
|
-
* @param params.
|
|
1042
|
+
* @param params.from - Start index of records to return
|
|
1043
|
+
* @param params.to - End index of records to return
|
|
1044
|
+
* @param params.onUpdate - Optional callback function that will be called when the activity log is updated
|
|
1041
1045
|
*/
|
|
1042
|
-
public async
|
|
1046
|
+
public async getActivityLog({
|
|
1043
1047
|
startTimeSeconds,
|
|
1044
1048
|
endTimeSeconds,
|
|
1049
|
+
from,
|
|
1050
|
+
to,
|
|
1045
1051
|
onUpdate,
|
|
1046
1052
|
}: {
|
|
1047
1053
|
startTimeSeconds: number;
|
|
1048
1054
|
endTimeSeconds: number;
|
|
1049
|
-
|
|
1050
|
-
|
|
1055
|
+
from: number;
|
|
1056
|
+
to: number;
|
|
1057
|
+
onUpdate?: (data: TActivityLog[]) => void;
|
|
1058
|
+
}): Promise<TActivityLog[]> {
|
|
1051
1059
|
|
|
1052
1060
|
if (onUpdate) {
|
|
1053
|
-
this.onUpdateCallback.set(onUpdateContextKey.
|
|
1061
|
+
this.onUpdateCallback.set(onUpdateContextKey.ActivityLog, onUpdate);
|
|
1054
1062
|
}
|
|
1055
1063
|
|
|
1056
1064
|
return await OCache.use(
|
|
1057
|
-
onUpdateContextKey.
|
|
1065
|
+
onUpdateContextKey.ActivityLog,
|
|
1058
1066
|
ECacheContext.WSAPI,
|
|
1059
|
-
() => this.api.
|
|
1067
|
+
() => this.api.getActivityLogT(null, startTimeSeconds, endTimeSeconds, from, to),
|
|
1060
1068
|
CACHE_DATA_SEC,
|
|
1061
1069
|
);
|
|
1062
1070
|
}
|
|
@@ -1117,12 +1125,12 @@ export class WSAPI {
|
|
|
1117
1125
|
this.updateEntity(onUpdateContextKey.Raffles, payload);
|
|
1118
1126
|
}
|
|
1119
1127
|
|
|
1120
|
-
private async
|
|
1128
|
+
private async notifyActivityLogUpdate() {
|
|
1121
1129
|
const startSeconds = Date.now() / 1000 - 600;
|
|
1122
1130
|
const endSeconds = Date.now() / 1000;
|
|
1123
|
-
const payload = await this.api.
|
|
1131
|
+
const payload = await this.api.getActivityLogT(null, startSeconds, endSeconds, 0, 50);
|
|
1124
1132
|
|
|
1125
|
-
this.updateEntity(onUpdateContextKey.
|
|
1133
|
+
this.updateEntity(onUpdateContextKey.ActivityLog, payload);
|
|
1126
1134
|
}
|
|
1127
1135
|
|
|
1128
1136
|
private async updateEntity(contextKey: onUpdateContextKey, payload: any) {
|
package/src/WSAPI/WSAPITypes.ts
CHANGED
|
@@ -7,8 +7,8 @@ import { AchCustomLayoutTheme, AchCustomSectionType, AchMissionsTabsOptions, Ach
|
|
|
7
7
|
import { PrizeModifiers } from '../MiniGames/PrizeModifiers';
|
|
8
8
|
import { InboxCategories } from '../Inbox/InboxCategories';
|
|
9
9
|
import { RaffleDrawInstanceState, RaffleDrawTypeExecution } from '../Raffle';
|
|
10
|
-
import { PointChangeSourceType } from '../
|
|
11
|
-
import { UserBalanceType } from '../
|
|
10
|
+
import { PointChangeSourceType } from '../ActivityLog/PointChangeSourceType';
|
|
11
|
+
import { UserBalanceType } from '../ActivityLog/UserBalanceType';
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
type TRibbon = 'sale' | 'hot' | 'new' | 'vip' | string;
|
|
@@ -1339,10 +1339,10 @@ export interface TransformedRaffleClaimPrizeResponse {
|
|
|
1339
1339
|
errorMessage?: string
|
|
1340
1340
|
}
|
|
1341
1341
|
/**
|
|
1342
|
-
*
|
|
1342
|
+
* TActivityLog describes a unified history log entry for points, gems, or diamonds changes.
|
|
1343
1343
|
* The structure is the same regardless of balance type, making it easy to iterate and display.
|
|
1344
1344
|
*/
|
|
1345
|
-
export interface
|
|
1345
|
+
export interface TActivityLog {
|
|
1346
1346
|
/** Date when the change was created (epoch timestamp in seconds) */
|
|
1347
1347
|
create_date: number;
|
|
1348
1348
|
/** External user ID */
|
|
@@ -1361,6 +1361,7 @@ export interface TPointsHistoryLog {
|
|
|
1361
1361
|
source_type_id: PointChangeSourceType;
|
|
1362
1362
|
}
|
|
1363
1363
|
|
|
1364
|
+
|
|
1364
1365
|
export interface TRaffleOptinResponse {
|
|
1365
1366
|
/** Error code that represents outcome of the opt-in attempt. Opt-in succeed in case err_code is 0 */
|
|
1366
1367
|
err_code: number;
|
package/src/index.ts
CHANGED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { ProtocolResponse } from '../Base/ProtocolResponse';
|
|
2
|
-
import { PointsHistoryLog } from './PointsHistoryLog';
|
|
3
|
-
import { TPointsHistoryLog } from '../WSAPI/WSAPITypes';
|
|
4
|
-
export interface GetPointsHistoryResponse extends ProtocolResponse {
|
|
5
|
-
logHistory: PointsHistoryLog[];
|
|
6
|
-
}
|
|
7
|
-
export declare const PointsHistoryTransform: (items: PointsHistoryLog[]) => TPointsHistoryLog[];
|
|
File without changes
|
|
File without changes
|