@explorins/pers-shared 2.1.80 → 2.1.82

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/cjs/index.d.ts +1 -1
  2. package/dist/cjs/index.d.ts.map +1 -1
  3. package/dist/cjs/index.js +1 -0
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/shared-lib/dto/analytics/base-analytics.dto.d.ts +38 -0
  6. package/dist/cjs/shared-lib/dto/analytics/base-analytics.dto.d.ts.map +1 -0
  7. package/dist/cjs/shared-lib/dto/analytics/base-analytics.dto.js +53 -0
  8. package/dist/cjs/shared-lib/dto/analytics/base-analytics.dto.js.map +1 -0
  9. package/dist/cjs/shared-lib/dto/{campaign → analytics}/campaign-claim-analytics.dto.d.ts +2 -2
  10. package/dist/cjs/shared-lib/dto/analytics/campaign-claim-analytics.dto.d.ts.map +1 -0
  11. package/dist/cjs/shared-lib/dto/{campaign → analytics}/campaign-claim-analytics.dto.js +2 -2
  12. package/dist/cjs/shared-lib/dto/analytics/campaign-claim-analytics.dto.js.map +1 -0
  13. package/dist/cjs/shared-lib/dto/{transaction → analytics}/transaction-analytics.request.dto.d.ts +4 -5
  14. package/dist/cjs/shared-lib/dto/analytics/transaction-analytics.request.dto.d.ts.map +1 -0
  15. package/dist/cjs/shared-lib/dto/{transaction → analytics}/transaction-analytics.request.dto.js +19 -10
  16. package/dist/cjs/shared-lib/dto/analytics/transaction-analytics.request.dto.js.map +1 -0
  17. package/dist/cjs/shared-lib/dto/{user-analytics.dto.d.ts → analytics/user-analytics.dto.d.ts} +16 -10
  18. package/dist/cjs/shared-lib/dto/analytics/user-analytics.dto.d.ts.map +1 -0
  19. package/dist/cjs/shared-lib/dto/{user-analytics.dto.js → analytics/user-analytics.dto.js} +56 -21
  20. package/dist/cjs/shared-lib/dto/analytics/user-analytics.dto.js.map +1 -0
  21. package/dist/cjs/shared-lib/dto/analytics/user-ranking-analytics.dto.d.ts +71 -0
  22. package/dist/cjs/shared-lib/dto/analytics/user-ranking-analytics.dto.d.ts.map +1 -0
  23. package/dist/cjs/shared-lib/dto/analytics/user-ranking-analytics.dto.js +242 -0
  24. package/dist/cjs/shared-lib/dto/analytics/user-ranking-analytics.dto.js.map +1 -0
  25. package/dist/cjs/shared-lib/dto/campaign/campaign-claim-analytics-request.dto.d.ts +3 -4
  26. package/dist/cjs/shared-lib/dto/campaign/campaign-claim-analytics-request.dto.d.ts.map +1 -1
  27. package/dist/cjs/shared-lib/dto/campaign/campaign-claim-analytics-request.dto.js +12 -4
  28. package/dist/cjs/shared-lib/dto/campaign/campaign-claim-analytics-request.dto.js.map +1 -1
  29. package/dist/cjs/shared-lib/dto/index.d.ts +4 -2
  30. package/dist/cjs/shared-lib/dto/index.d.ts.map +1 -1
  31. package/dist/cjs/shared-lib/dto/index.js +4 -2
  32. package/dist/cjs/shared-lib/dto/index.js.map +1 -1
  33. package/dist/cjs/shared-lib/dto/transaction/index.d.ts +1 -1
  34. package/dist/cjs/shared-lib/dto/transaction/index.d.ts.map +1 -1
  35. package/dist/cjs/shared-lib/dto/transaction/index.js +1 -1
  36. package/dist/cjs/shared-lib/dto/transaction/index.js.map +1 -1
  37. package/dist/cjs/shared-lib/interfaces/transaction-analytics-request.interface.d.ts +1 -1
  38. package/dist/cjs/shared-lib/interfaces/transaction-analytics-request.interface.d.ts.map +1 -1
  39. package/dist/esm/index.d.ts +1 -1
  40. package/dist/esm/index.d.ts.map +1 -1
  41. package/dist/esm/index.js +1 -0
  42. package/dist/esm/index.js.map +1 -1
  43. package/dist/esm/shared-lib/dto/analytics/base-analytics.dto.d.ts +38 -0
  44. package/dist/esm/shared-lib/dto/analytics/base-analytics.dto.d.ts.map +1 -0
  45. package/dist/esm/shared-lib/dto/analytics/base-analytics.dto.js +43 -0
  46. package/dist/esm/shared-lib/dto/analytics/base-analytics.dto.js.map +1 -0
  47. package/dist/esm/shared-lib/dto/{campaign → analytics}/campaign-claim-analytics.dto.d.ts +2 -2
  48. package/dist/esm/shared-lib/dto/analytics/campaign-claim-analytics.dto.d.ts.map +1 -0
  49. package/dist/esm/shared-lib/dto/{campaign → analytics}/campaign-claim-analytics.dto.js +2 -2
  50. package/dist/esm/shared-lib/dto/analytics/campaign-claim-analytics.dto.js.map +1 -0
  51. package/dist/esm/shared-lib/dto/{transaction → analytics}/transaction-analytics.request.dto.d.ts +4 -5
  52. package/dist/esm/shared-lib/dto/analytics/transaction-analytics.request.dto.d.ts.map +1 -0
  53. package/dist/esm/shared-lib/dto/{transaction → analytics}/transaction-analytics.request.dto.js +19 -10
  54. package/dist/esm/shared-lib/dto/analytics/transaction-analytics.request.dto.js.map +1 -0
  55. package/dist/esm/shared-lib/dto/{user-analytics.dto.d.ts → analytics/user-analytics.dto.d.ts} +16 -10
  56. package/dist/esm/shared-lib/dto/analytics/user-analytics.dto.d.ts.map +1 -0
  57. package/dist/esm/shared-lib/dto/{user-analytics.dto.js → analytics/user-analytics.dto.js} +54 -21
  58. package/dist/esm/shared-lib/dto/analytics/user-analytics.dto.js.map +1 -0
  59. package/dist/esm/shared-lib/dto/analytics/user-ranking-analytics.dto.d.ts +71 -0
  60. package/dist/esm/shared-lib/dto/analytics/user-ranking-analytics.dto.d.ts.map +1 -0
  61. package/dist/esm/shared-lib/dto/analytics/user-ranking-analytics.dto.js +215 -0
  62. package/dist/esm/shared-lib/dto/analytics/user-ranking-analytics.dto.js.map +1 -0
  63. package/dist/esm/shared-lib/dto/campaign/campaign-claim-analytics-request.dto.d.ts +3 -4
  64. package/dist/esm/shared-lib/dto/campaign/campaign-claim-analytics-request.dto.d.ts.map +1 -1
  65. package/dist/esm/shared-lib/dto/campaign/campaign-claim-analytics-request.dto.js +12 -4
  66. package/dist/esm/shared-lib/dto/campaign/campaign-claim-analytics-request.dto.js.map +1 -1
  67. package/dist/esm/shared-lib/dto/index.d.ts +4 -2
  68. package/dist/esm/shared-lib/dto/index.d.ts.map +1 -1
  69. package/dist/esm/shared-lib/dto/index.js +4 -2
  70. package/dist/esm/shared-lib/dto/index.js.map +1 -1
  71. package/dist/esm/shared-lib/dto/transaction/index.d.ts +1 -1
  72. package/dist/esm/shared-lib/dto/transaction/index.d.ts.map +1 -1
  73. package/dist/esm/shared-lib/dto/transaction/index.js +1 -1
  74. package/dist/esm/shared-lib/dto/transaction/index.js.map +1 -1
  75. package/dist/esm/shared-lib/interfaces/transaction-analytics-request.interface.d.ts +1 -1
  76. package/dist/esm/shared-lib/interfaces/transaction-analytics-request.interface.d.ts.map +1 -1
  77. package/package.json +1 -1
  78. package/dist/cjs/shared-lib/dto/campaign/campaign-claim-analytics.dto.d.ts.map +0 -1
  79. package/dist/cjs/shared-lib/dto/campaign/campaign-claim-analytics.dto.js.map +0 -1
  80. package/dist/cjs/shared-lib/dto/transaction/transaction-analytics.request.dto.d.ts.map +0 -1
  81. package/dist/cjs/shared-lib/dto/transaction/transaction-analytics.request.dto.js.map +0 -1
  82. package/dist/cjs/shared-lib/dto/user-analytics.dto.d.ts.map +0 -1
  83. package/dist/cjs/shared-lib/dto/user-analytics.dto.js.map +0 -1
  84. package/dist/esm/shared-lib/dto/campaign/campaign-claim-analytics.dto.d.ts.map +0 -1
  85. package/dist/esm/shared-lib/dto/campaign/campaign-claim-analytics.dto.js.map +0 -1
  86. package/dist/esm/shared-lib/dto/transaction/transaction-analytics.request.dto.d.ts.map +0 -1
  87. package/dist/esm/shared-lib/dto/transaction/transaction-analytics.request.dto.js.map +0 -1
  88. package/dist/esm/shared-lib/dto/user-analytics.dto.d.ts.map +0 -1
  89. package/dist/esm/shared-lib/dto/user-analytics.dto.js.map +0 -1
@@ -1,7 +1,8 @@
1
- import { TransactionDTO } from './transaction.dto';
1
+ import { TransactionDTO } from '../transaction/transaction.dto';
2
2
  import { SortOrder } from '../../enum';
3
3
  import { AnalyticsGroupByType, AnalyticsMetricType, AnalyticsResultItem } from '../../types/analytics.type';
4
- import { GroupByExpressionDTO } from '../analytics/group-by-expression.dto';
4
+ import { GroupByExpressionDTO } from './group-by-expression.dto';
5
+ import { BaseAnalyticsMetadata } from './base-analytics.dto';
5
6
  declare const TransactionAnalyticsFiltersDTO_base: import("@nestjs/common").Type<Partial<Omit<TransactionDTO, "createdAt" | "updatedAt">>>;
6
7
  /**
7
8
  * Type-safe filters for transaction analytics
@@ -35,9 +36,7 @@ export type TransactionAnalyticsGroupByType = AnalyticsGroupByType | keyof Omit<
35
36
  export declare class TransactionAnalyticsResponseDTO {
36
37
  results: TransactionAnalyticsResultItem[];
37
38
  totalGroups: number;
38
- metadata: {
39
- executionTime: string;
40
- };
39
+ metadata: BaseAnalyticsMetadata;
41
40
  }
42
41
  export type TransactionAnalyticsResultItem = AnalyticsResultItem & {
43
42
  [K in keyof Omit<TransactionDTO, 'id' | 'createdAt' | 'updatedAt' | 'transactionHash'>]?: TransactionDTO[K];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-analytics.request.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/analytics/transaction-analytics.request.dto.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAoB,MAAM,YAAY,CAAC;AACzD,OAAO,EAA0B,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACpI,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;;AAE7D;;;;GAIG;AACH,qBAAa,8BAA+B,SAAQ,mCAEnD;CAAG;AAEJ;;;GAGG;AACH,qBAAa,8BAA8B;IAkBzC,OAAO,CAAC,EAAE,8BAA8B,CAAC;IAUzC,OAAO,CAAC,EAAE,+BAA+B,EAAE,CAAC;IAkB5C,kBAAkB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAW5C,OAAO,EAAE,mBAAmB,EAAE,CAAa;IAU3C,MAAM,CAAC,EAAE,mBAAmB,GAAG,+BAA+B,GAAG,MAAM,CAAW;IASlF,SAAS,CAAC,EAAE,SAAS,CAAkB;IAcvC,KAAK,CAAC,EAAE,MAAM,CAAM;IASpB,SAAS,CAAC,EAAE,IAAI,CAAC;IAQjB,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,+BAA+B,GACzC,oBAAoB,GAClB,MAAM,IAAI,CAAC,cAAc,EACrB,WAAW,GAAG,WAAW,GACzB,IAAI,GACJ,iBAAiB,CACpB,CAAC;AAEN;;GAEG;AACH,qBAAa,+BAA+B;IAU1C,OAAO,EAAE,8BAA8B,EAAE,CAAM;IAM/C,WAAW,EAAE,MAAM,CAAK;IAWxB,QAAQ,EAAE,qBAAqB,CAK7B;CACH;AAED,MAAM,MAAM,8BAA8B,GAAG,mBAAmB,GAAG;KAEhE,CAAC,IAAI,MAAM,IAAI,CAAC,cAAc,EAC3B,IAAI,GACJ,WAAW,GAAG,WAAW,GACzB,iBAAiB,CACpB,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;CACvB,CAAC"}
@@ -7,10 +7,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { IsOptional, IsIn, IsNumber, IsString, IsObject, IsDateString, Min, Max, IsArray, ValidateNested, IsEnum } from 'class-validator';
8
8
  import { Transform, Type } from 'class-transformer';
9
9
  import { ApiProperty, ApiPropertyOptional, OmitType, PartialType } from '@nestjs/swagger';
10
- import { TransactionDTO } from './transaction.dto.js';
10
+ import { TransactionDTO } from '../transaction/transaction.dto.js';
11
11
  import { SortOrder, AccountOwnerType } from '../../enum/index.js';
12
12
  import { ANALYTICS_METRIC_TYPES } from '../../types/analytics.type.js';
13
- import { GroupByExpressionDTO } from '../analytics/group-by-expression.dto.js';
13
+ import { GroupByExpressionDTO } from './group-by-expression.dto.js';
14
+ import { NativeTokenTypes } from '../../types/native-token.type.js';
14
15
  /**
15
16
  * Type-safe filters for transaction analytics
16
17
  * All fields optional via PartialType
@@ -42,11 +43,11 @@ export class TransactionAnalyticsRequestDTO {
42
43
  }
43
44
  __decorate([
44
45
  ApiPropertyOptional({
45
- description: 'Dynamic filters based on TransactionDTO fields - all transaction fields available',
46
+ description: 'Dynamic filters based on TransactionDTO fields - all transaction fields available. Note: tokenType uses native blockchain types (ERC721, ERC20, ERC1155), not friendly names.',
46
47
  type: TransactionAnalyticsFiltersDTO,
47
48
  example: {
48
49
  status: 'SUCCEEDED',
49
- tokenType: 'STAMP',
50
+ tokenType: NativeTokenTypes.ERC721,
50
51
  triggerProcessType: 'MINT',
51
52
  tenantId: 'tenant-123',
52
53
  chainId: 1
@@ -59,7 +60,7 @@ __decorate([
59
60
  ], TransactionAnalyticsRequestDTO.prototype, "filters", void 0);
60
61
  __decorate([
61
62
  ApiPropertyOptional({
62
- description: 'Fields to group by - any TransactionDTO field plus computed time fields',
63
+ description: 'Fields to group by - any TransactionDTO field plus computed time fields. Note: tokenType values are ERC721/ERC20/ERC1155.',
63
64
  type: [String],
64
65
  example: ['tokenType', 'month', 'status', 'chainId']
65
66
  }),
@@ -147,17 +148,20 @@ export class TransactionAnalyticsResponseDTO {
147
148
  results = [];
148
149
  totalGroups = 0;
149
150
  metadata = {
150
- executionTime: '0ms'
151
+ dateRange: {
152
+ startDate: new Date(),
153
+ endDate: new Date()
154
+ }
151
155
  };
152
156
  }
153
157
  __decorate([
154
158
  ApiProperty({
155
- description: 'Analytics results array with dynamic fields and expression aliases',
159
+ description: 'Analytics results array with dynamic fields and expression aliases. Note: tokenType values are ERC721/ERC20/ERC1155, not friendly names.',
156
160
  type: 'array',
157
161
  example: [
158
162
  { userId: 'user-123', count: 45 },
159
163
  { userAddress: '0xabc...def', count: 32 },
160
- { tokenType: 'STAMP', count: 150, month: '2024-01-01T00:00:00.000Z' }
164
+ { tokenType: NativeTokenTypes.ERC721, count: 150, month: '2024-01-01T00:00:00.000Z' }
161
165
  ]
162
166
  })
163
167
  ], TransactionAnalyticsResponseDTO.prototype, "results", void 0);
@@ -169,8 +173,13 @@ __decorate([
169
173
  ], TransactionAnalyticsResponseDTO.prototype, "totalGroups", void 0);
170
174
  __decorate([
171
175
  ApiProperty({
172
- description: 'Query execution metadata',
173
- example: { executionTime: '45ms' }
176
+ description: 'Query metadata showing applied date range (always present)',
177
+ example: {
178
+ dateRange: {
179
+ startDate: '2024-01-01T00:00:00.000Z',
180
+ endDate: '2024-12-31T23:59:59.999Z'
181
+ }
182
+ }
174
183
  })
175
184
  ], TransactionAnalyticsResponseDTO.prototype, "metadata", void 0);
176
185
  //# sourceMappingURL=transaction-analytics.request.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-analytics.request.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/analytics/transaction-analytics.request.dto.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,25 @@
1
+ import { BaseAnalyticsMetadata } from './base-analytics.dto';
2
+ /**
3
+ * USER ANALYTICS FILTERS DTO
4
+ *
5
+ * Filters to scope user analytics aggregations.
6
+ * Determines which users/activity to include in calculations.
7
+ */
8
+ export declare class UserAnalyticsFiltersDTO {
9
+ businessId?: string;
10
+ }
1
11
  /**
2
12
  * USER ANALYTICS REQUEST DTO
3
13
  *
4
- * Filters for user analytics queries.
5
- * Supports date range filtering and business-specific analytics.
14
+ * Request structure for user engagement analytics.
15
+ * Supports date range filtering and business-specific scoping.
16
+ *
17
+ * Pattern matches TransactionAnalyticsRequestDTO and CampaignClaimAnalyticsRequestDTO for consistency.
6
18
  */
7
19
  export declare class UserAnalyticsRequestDTO {
20
+ filters?: UserAnalyticsFiltersDTO;
8
21
  startDate?: Date;
9
22
  endDate?: Date;
10
- businessId?: string;
11
23
  }
12
24
  /**
13
25
  * USER ANALYTICS RESPONSE DTO
@@ -35,12 +47,6 @@ export declare class UserAnalyticsResponseDTO {
35
47
  activeUsers: number;
36
48
  newUsers: number;
37
49
  }[];
38
- metadata: {
39
- executionTimeMs: number;
40
- dateRange?: {
41
- startDate: Date;
42
- endDate: Date;
43
- };
44
- };
50
+ metadata: BaseAnalyticsMetadata;
45
51
  }
46
52
  //# sourceMappingURL=user-analytics.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-analytics.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/analytics/user-analytics.dto.ts"],"names":[],"mappings":"AAEyC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACtG;;;;;GAKG;AACH,qBAAa,uBAAuB;IASlC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,qBAAa,uBAAuB;IAWlC,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAQlC,SAAS,CAAC,EAAE,IAAI,CAAC;IAQjB,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,qBAAa,wBAAwB;IAKnC,UAAU,EAAE,MAAM,CAAK;IAMvB,WAAW,EAAE,MAAM,CAAK;IAMxB,QAAQ,EAAE,MAAM,CAAK;IAMrB,0BAA0B,EAAE,MAAM,CAAK;IAMvC,wBAAwB,EAAE,MAAM,CAAK;IAMrC,sBAAsB,EAAE,MAAM,CAAK;IAMnC,oBAAoB,EAAE,MAAM,CAAK;IAMjC,yBAAyB,EAAE,MAAM,CAAK;IAMtC,gCAAgC,EAAE,MAAM,CAAK;IAM7C,0BAA0B,EAAE,MAAM,CAAK;IAMvC,+BAA+B,EAAE,MAAM,CAAK;IAO5C,cAAc,EAAE,MAAM,CAAK;IAc3B,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,EAAE,CAAC;IAgBJ,QAAQ,EAAE,qBAAqB,CAK7B;CACH"}
@@ -5,35 +5,68 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
8
+ import { IsOptional, IsString, IsDateString, ValidateNested } from 'class-validator';
9
+ import { Type } from 'class-transformer';
10
+ /**
11
+ * USER ANALYTICS FILTERS DTO
12
+ *
13
+ * Filters to scope user analytics aggregations.
14
+ * Determines which users/activity to include in calculations.
15
+ */
16
+ export class UserAnalyticsFiltersDTO {
17
+ businessId;
18
+ }
19
+ __decorate([
20
+ ApiPropertyOptional({
21
+ description: 'Filter analytics to specific business (filters transactions, claims, redemptions by businessId)',
22
+ type: String,
23
+ format: 'uuid',
24
+ example: 'biz-uuid-123'
25
+ }),
26
+ IsOptional(),
27
+ IsString()
28
+ ], UserAnalyticsFiltersDTO.prototype, "businessId", void 0);
8
29
  /**
9
30
  * USER ANALYTICS REQUEST DTO
10
31
  *
11
- * Filters for user analytics queries.
12
- * Supports date range filtering and business-specific analytics.
32
+ * Request structure for user engagement analytics.
33
+ * Supports date range filtering and business-specific scoping.
34
+ *
35
+ * Pattern matches TransactionAnalyticsRequestDTO and CampaignClaimAnalyticsRequestDTO for consistency.
13
36
  */
14
37
  export class UserAnalyticsRequestDTO {
38
+ filters;
15
39
  startDate;
16
40
  endDate;
17
- businessId;
18
41
  }
19
42
  __decorate([
20
43
  ApiPropertyOptional({
21
- description: 'Start date for filtering (ISO 8601)',
44
+ description: 'Filters to scope which users/activity to include in analytics',
45
+ type: UserAnalyticsFiltersDTO,
46
+ example: {
47
+ businessId: 'biz-uuid-123'
48
+ }
49
+ }),
50
+ IsOptional(),
51
+ ValidateNested(),
52
+ Type(() => UserAnalyticsFiltersDTO)
53
+ ], UserAnalyticsRequestDTO.prototype, "filters", void 0);
54
+ __decorate([
55
+ ApiPropertyOptional({
56
+ description: 'Start date for filtering activity and new users (ISO 8601 format). Filters transactions, claims, redemptions, and user creation dates.',
22
57
  example: '2024-01-01T00:00:00Z'
23
- })
58
+ }),
59
+ IsOptional(),
60
+ IsDateString()
24
61
  ], UserAnalyticsRequestDTO.prototype, "startDate", void 0);
25
62
  __decorate([
26
63
  ApiPropertyOptional({
27
- description: 'End date for filtering (ISO 8601)',
64
+ description: 'End date for filtering activity and new users (ISO 8601 format). Filters transactions, claims, redemptions, and user creation dates.',
28
65
  example: '2024-12-31T23:59:59Z'
29
- })
66
+ }),
67
+ IsOptional(),
68
+ IsDateString()
30
69
  ], UserAnalyticsRequestDTO.prototype, "endDate", void 0);
31
- __decorate([
32
- ApiPropertyOptional({
33
- description: 'Filter by specific business ID',
34
- example: 'biz-uuid-123'
35
- })
36
- ], UserAnalyticsRequestDTO.prototype, "businessId", void 0);
37
70
  /**
38
71
  * USER ANALYTICS RESPONSE DTO
39
72
  *
@@ -56,7 +89,12 @@ export class UserAnalyticsResponseDTO {
56
89
  averageRedemptionsPerActiveUser = 0;
57
90
  engagementRate = 0;
58
91
  periodBreakdown;
59
- metadata = { executionTimeMs: 0 };
92
+ metadata = {
93
+ dateRange: {
94
+ startDate: new Date(),
95
+ endDate: new Date()
96
+ }
97
+ };
60
98
  }
61
99
  __decorate([
62
100
  ApiProperty({
@@ -147,21 +185,16 @@ __decorate([
147
185
  ], UserAnalyticsResponseDTO.prototype, "periodBreakdown", void 0);
148
186
  __decorate([
149
187
  ApiProperty({
150
- description: 'Query execution metadata including timing and applied filters',
188
+ description: 'Query metadata showing applied date range (always present)',
151
189
  type: 'object',
152
190
  properties: {
153
- executionTimeMs: {
154
- type: 'number',
155
- example: 142,
156
- description: 'SQL query execution time in milliseconds (for performance monitoring)'
157
- },
158
191
  dateRange: {
159
192
  type: 'object',
160
193
  properties: {
161
194
  startDate: { type: 'string', format: 'date-time' },
162
195
  endDate: { type: 'string', format: 'date-time' }
163
196
  },
164
- description: 'Applied date range filter (only present if filters were used)'
197
+ description: 'Applied date range filter'
165
198
  }
166
199
  }
167
200
  })
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-analytics.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/analytics/user-analytics.dto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { SortOrder } from '../../enum';
2
+ import type { NativeTokenType } from '../../types/native-token.type';
3
+ import { BaseAnalyticsMetadata } from './base-analytics.dto';
4
+ /**
5
+ * USER RANKING FILTERS DTO
6
+ *
7
+ * Filters to scope user ranking calculations.
8
+ * Determines which transactions/users to include.
9
+ */
10
+ export declare class UserRankingFiltersDTO {
11
+ businessId?: string;
12
+ tokenType?: NativeTokenType;
13
+ }
14
+ /**
15
+ * USER RANKING REQUEST DTO
16
+ *
17
+ * Request structure for user transaction ranking analytics.
18
+ * Returns ranked list of users with transaction metrics and full user details.
19
+ *
20
+ * Use Cases:
21
+ * - Admin leaderboards showing top users by activity
22
+ * - User engagement analysis with full user context
23
+ * - Identifying power users for campaigns
24
+ */
25
+ export declare class UserRankingAnalyticsRequestDTO {
26
+ filters?: UserRankingFiltersDTO;
27
+ sortBy?: 'totalTransactions' | 'tokenSpent' | 'userId' | 'email';
28
+ sortOrder?: SortOrder;
29
+ limit?: number;
30
+ startDate?: Date;
31
+ endDate?: Date;
32
+ }
33
+ /**
34
+ * USER RANKING RESULT ITEM DTO
35
+ *
36
+ * Single user's ranking data with full user details and transaction metrics.
37
+ * Enriched with user data via SQL JOIN (not post-query enrichment).
38
+ */
39
+ export declare class UserRankingResultItemDTO {
40
+ userId: string | null;
41
+ email: string | null;
42
+ externalUserId: string | null;
43
+ totalTransactions: number;
44
+ tokenSpent: number;
45
+ hasLegacyTransactions?: boolean;
46
+ }
47
+ /**
48
+ * USER RANKING RESPONSE DTO
49
+ *
50
+ * Ranked list of users with transaction metrics and full user details.
51
+ * Results are pre-sorted by backend according to request.sortBy/sortOrder.
52
+ */
53
+ export declare class UserRankingAnalyticsResponseDTO {
54
+ results: UserRankingResultItemDTO[];
55
+ totalUsers: number;
56
+ metadata: BaseAnalyticsMetadata & {
57
+ /**
58
+ * Token type used for filtering sum (if provided in request)
59
+ * Native token type (ERC721, ERC20, ERC1155)
60
+ */
61
+ tokenType?: NativeTokenType;
62
+ /**
63
+ * Sort configuration applied
64
+ */
65
+ sorting?: {
66
+ sortBy: string;
67
+ sortOrder: SortOrder;
68
+ };
69
+ };
70
+ }
71
+ //# sourceMappingURL=user-ranking-analytics.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-ranking-analytics.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/analytics/user-ranking-analytics.dto.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D;;;;;GAKG;AACH,qBAAa,qBAAqB;IAShC,UAAU,CAAC,EAAE,MAAM,CAAC;IASpB,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,8BAA8B;IAYzC,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAUhC,MAAM,CAAC,EAAE,mBAAmB,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;IAUjE,SAAS,CAAC,EAAE,SAAS,CAAC;IAatB,KAAK,CAAC,EAAE,MAAM,CAAC;IAQf,SAAS,CAAC,EAAE,IAAI,CAAC;IAQjB,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;AAED;;;;;GAKG;AACH,qBAAa,wBAAwB;IAUnC,MAAM,EAAG,MAAM,GAAG,IAAI,CAAC;IASvB,KAAK,EAAG,MAAM,GAAG,IAAI,CAAC;IAQtB,cAAc,EAAG,MAAM,GAAG,IAAI,CAAC;IAQ/B,iBAAiB,EAAG,MAAM,CAAC;IAM3B,UAAU,EAAG,MAAM,CAAC;IAUpB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;;;;GAKG;AACH,qBAAa,+BAA+B;IAM1C,OAAO,EAAG,wBAAwB,EAAE,CAAC;IAMrC,UAAU,EAAG,MAAM,CAAC;IAMpB,QAAQ,EAAG,qBAAqB,GAAG;QACjC;;;WAGG;QACH,SAAS,CAAC,EAAE,eAAe,CAAC;QAE5B;;WAEG;QACH,OAAO,CAAC,EAAE;YACR,MAAM,EAAE,MAAM,CAAC;YACf,SAAS,EAAE,SAAS,CAAC;SACtB,CAAC;KACH,CAAC;CACH"}
@@ -0,0 +1,215 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
8
+ import { IsOptional, IsString, IsDateString, IsEnum, IsNumber, ValidateNested, Min, Max } from 'class-validator';
9
+ import { Type } from 'class-transformer';
10
+ import { SortOrder } from '../../enum/index.js';
11
+ import { NativeTokenTypes } from '../../types/native-token.type.js';
12
+ /**
13
+ * USER RANKING FILTERS DTO
14
+ *
15
+ * Filters to scope user ranking calculations.
16
+ * Determines which transactions/users to include.
17
+ */
18
+ export class UserRankingFiltersDTO {
19
+ businessId;
20
+ tokenType;
21
+ }
22
+ __decorate([
23
+ ApiPropertyOptional({
24
+ description: 'Filter to specific business (filters transactions by engagedBusinessId)',
25
+ type: String,
26
+ format: 'uuid',
27
+ example: 'biz-uuid-123'
28
+ }),
29
+ IsOptional(),
30
+ IsString()
31
+ ], UserRankingFiltersDTO.prototype, "businessId", void 0);
32
+ __decorate([
33
+ ApiPropertyOptional({
34
+ description: 'Filter token sum by specific native token type (ERC721 for stamps, ERC20 for credits, ERC1155 for multi-token). Transaction count includes ALL token types, but sum only includes this type. Frontend SDK should convert friendly names (STAMP → ERC721, CREDIT → ERC20).',
35
+ enum: NativeTokenTypes,
36
+ example: NativeTokenTypes.ERC721
37
+ }),
38
+ IsOptional(),
39
+ IsEnum(NativeTokenTypes)
40
+ ], UserRankingFiltersDTO.prototype, "tokenType", void 0);
41
+ /**
42
+ * USER RANKING REQUEST DTO
43
+ *
44
+ * Request structure for user transaction ranking analytics.
45
+ * Returns ranked list of users with transaction metrics and full user details.
46
+ *
47
+ * Use Cases:
48
+ * - Admin leaderboards showing top users by activity
49
+ * - User engagement analysis with full user context
50
+ * - Identifying power users for campaigns
51
+ */
52
+ export class UserRankingAnalyticsRequestDTO {
53
+ filters;
54
+ sortBy;
55
+ sortOrder;
56
+ limit;
57
+ startDate;
58
+ endDate;
59
+ }
60
+ __decorate([
61
+ ApiPropertyOptional({
62
+ description: 'Filters to scope which transactions/users to include',
63
+ type: UserRankingFiltersDTO,
64
+ example: {
65
+ businessId: 'biz-uuid-123',
66
+ tokenType: NativeTokenTypes.ERC721
67
+ }
68
+ }),
69
+ IsOptional(),
70
+ ValidateNested(),
71
+ Type(() => UserRankingFiltersDTO)
72
+ ], UserRankingAnalyticsRequestDTO.prototype, "filters", void 0);
73
+ __decorate([
74
+ ApiPropertyOptional({
75
+ description: 'Field to sort results by',
76
+ enum: ['totalTransactions', 'tokenSpent', 'userId', 'email'],
77
+ default: 'totalTransactions',
78
+ example: 'totalTransactions'
79
+ }),
80
+ IsOptional(),
81
+ IsString()
82
+ ], UserRankingAnalyticsRequestDTO.prototype, "sortBy", void 0);
83
+ __decorate([
84
+ ApiPropertyOptional({
85
+ description: 'Sort direction',
86
+ enum: SortOrder,
87
+ default: SortOrder.DESC,
88
+ example: SortOrder.DESC
89
+ }),
90
+ IsOptional(),
91
+ IsEnum(SortOrder)
92
+ ], UserRankingAnalyticsRequestDTO.prototype, "sortOrder", void 0);
93
+ __decorate([
94
+ ApiPropertyOptional({
95
+ description: 'Maximum number of results to return (top N users)',
96
+ minimum: 1,
97
+ maximum: 1000,
98
+ default: 50,
99
+ example: 50
100
+ }),
101
+ IsOptional(),
102
+ IsNumber(),
103
+ Min(1),
104
+ Max(1000)
105
+ ], UserRankingAnalyticsRequestDTO.prototype, "limit", void 0);
106
+ __decorate([
107
+ ApiPropertyOptional({
108
+ description: 'Start date for filtering transactions (ISO 8601 format). Only transactions within date range are counted.',
109
+ example: '2024-01-01T00:00:00Z'
110
+ }),
111
+ IsOptional(),
112
+ IsDateString()
113
+ ], UserRankingAnalyticsRequestDTO.prototype, "startDate", void 0);
114
+ __decorate([
115
+ ApiPropertyOptional({
116
+ description: 'End date for filtering transactions (ISO 8601 format). Only transactions within date range are counted.',
117
+ example: '2024-12-31T23:59:59Z'
118
+ }),
119
+ IsOptional(),
120
+ IsDateString()
121
+ ], UserRankingAnalyticsRequestDTO.prototype, "endDate", void 0);
122
+ /**
123
+ * USER RANKING RESULT ITEM DTO
124
+ *
125
+ * Single user's ranking data with full user details and transaction metrics.
126
+ * Enriched with user data via SQL JOIN (not post-query enrichment).
127
+ */
128
+ export class UserRankingResultItemDTO {
129
+ // ========== USER IDENTITY ==========
130
+ userId;
131
+ email;
132
+ externalUserId;
133
+ // ========== TRANSACTION METRICS ==========
134
+ totalTransactions;
135
+ tokenSpent;
136
+ // ========== METADATA ==========
137
+ hasLegacyTransactions;
138
+ }
139
+ __decorate([
140
+ ApiProperty({
141
+ description: 'User UUID. NULL for system/business senders (filtered out in most cases).',
142
+ type: String,
143
+ format: 'uuid',
144
+ nullable: true,
145
+ example: 'user-uuid-123'
146
+ })
147
+ ], UserRankingResultItemDTO.prototype, "userId", void 0);
148
+ __decorate([
149
+ ApiPropertyOptional({
150
+ description: 'User email address. NULL if user privacy settings hide email or user is system/business.',
151
+ type: String,
152
+ format: 'email',
153
+ nullable: true,
154
+ example: 'user@example.com'
155
+ })
156
+ ], UserRankingResultItemDTO.prototype, "email", void 0);
157
+ __decorate([
158
+ ApiPropertyOptional({
159
+ description: 'External user identifier from external system (CRM, auth provider, etc.). NULL if not set.',
160
+ type: String,
161
+ nullable: true,
162
+ example: 'ext-user-123'
163
+ })
164
+ ], UserRankingResultItemDTO.prototype, "externalUserId", void 0);
165
+ __decorate([
166
+ ApiProperty({
167
+ description: 'Total number of successful transactions (status=succeeded) for this user across ALL token types. Counts both sent and received transactions.',
168
+ example: 42
169
+ })
170
+ ], UserRankingResultItemDTO.prototype, "totalTransactions", void 0);
171
+ __decorate([
172
+ ApiProperty({
173
+ description: 'Total amount spent/transferred in the filtered token type (filters.tokenType). If no tokenType filter specified, sums ALL token types. Only counts successful transactions (status=succeeded).',
174
+ example: 1250.50
175
+ })
176
+ ], UserRankingResultItemDTO.prototype, "tokenSpent", void 0);
177
+ __decorate([
178
+ ApiPropertyOptional({
179
+ description: 'Indicates if this user has transactions without senderId (legacy transactions). User may still have full details if resolved via wallet or accountAddress. Post-migration, this will always be false.',
180
+ type: Boolean,
181
+ default: false,
182
+ example: false
183
+ })
184
+ ], UserRankingResultItemDTO.prototype, "hasLegacyTransactions", void 0);
185
+ /**
186
+ * USER RANKING RESPONSE DTO
187
+ *
188
+ * Ranked list of users with transaction metrics and full user details.
189
+ * Results are pre-sorted by backend according to request.sortBy/sortOrder.
190
+ */
191
+ export class UserRankingAnalyticsResponseDTO {
192
+ results;
193
+ totalUsers;
194
+ metadata;
195
+ }
196
+ __decorate([
197
+ ApiProperty({
198
+ description: 'Ranked list of users with transaction metrics and full user details. Pre-sorted by backend.',
199
+ type: [UserRankingResultItemDTO],
200
+ isArray: true
201
+ })
202
+ ], UserRankingAnalyticsResponseDTO.prototype, "results", void 0);
203
+ __decorate([
204
+ ApiProperty({
205
+ description: 'Total number of users returned (≤ request.limit)',
206
+ example: 50
207
+ })
208
+ ], UserRankingAnalyticsResponseDTO.prototype, "totalUsers", void 0);
209
+ __decorate([
210
+ ApiProperty({
211
+ description: 'Metadata about the query execution',
212
+ type: 'object'
213
+ })
214
+ ], UserRankingAnalyticsResponseDTO.prototype, "metadata", void 0);
215
+ //# sourceMappingURL=user-ranking-analytics.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-ranking-analytics.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/analytics/user-ranking-analytics.dto.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
- import { CampaignClaimAnalyticsDTO } from './campaign-claim-analytics.dto';
1
+ import { CampaignClaimAnalyticsDTO } from '../analytics/campaign-claim-analytics.dto';
2
2
  import { SortOrder } from '../../enum';
3
3
  import { AnalyticsGroupByType, AnalyticsMetricType, AnalyticsResultItem } from '../../types/analytics.type';
4
4
  import { GroupByExpressionDTO } from '../analytics/group-by-expression.dto';
5
+ import { BaseAnalyticsMetadata } from '../analytics/base-analytics.dto';
5
6
  declare const CampaignClaimAnalyticsFiltersDTO_base: import("@nestjs/common").Type<Partial<Omit<CampaignClaimAnalyticsDTO, "user" | "business" | "campaign" | "triggerSource" | "createdAt">>>;
6
7
  /**
7
8
  * SCALABLE ANALYTICS REQUEST PATTERN
@@ -56,9 +57,7 @@ export type CampaignClaimAnalyticsGroupByType = AnalyticsGroupByType | keyof Omi
56
57
  export declare class CampaignClaimAnalyticsResponseDTO {
57
58
  results: CampaignClaimAnalyticsResultItem[];
58
59
  totalGroups: number;
59
- metadata: {
60
- executionTime: string;
61
- };
60
+ metadata: BaseAnalyticsMetadata;
62
61
  }
63
62
  export type CampaignClaimAnalyticsResultItem = AnalyticsResultItem & {
64
63
  [K in keyof Omit<CampaignClaimAnalyticsDTO, 'id' | 'createdAt' | 'user' | 'campaign' | 'business' | 'triggerSource' | 'message'>]?: CampaignClaimAnalyticsDTO[K];
@@ -1 +1 @@
1
- {"version":3,"file":"campaign-claim-analytics-request.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/campaign/campaign-claim-analytics-request.dto.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAA0B,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACpI,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;;AAE5E;;;;;;;;;;;GAWG;AAEH;;;GAGG;AACH,qBAAa,gCAAiC,SAAQ,qCAQrD;IASC,MAAM,CAAC,EAAE,MAAM,CAAC;IAShB,UAAU,CAAC,EAAE,MAAM,CAAC;IASpB,UAAU,CAAC,EAAE,MAAM,CAAC;IASpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,qBAAa,gCAAgC;IAe3C,OAAO,CAAC,EAAE,gCAAgC,CAAC;IAU3C,OAAO,CAAC,EAAE,iCAAiC,EAAE,CAAC;IAe9C,kBAAkB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAW5C,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAa;IAS5C,MAAM,CAAC,EAAE,mBAAmB,GAAG,iCAAiC,GAAG,MAAM,CAAW;IASpF,SAAS,CAAC,EAAE,SAAS,CAAkB;IAcvC,KAAK,CAAC,EAAE,MAAM,CAAM;IASpB,SAAS,CAAC,EAAE,IAAI,CAAC;IAQjB,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,iCAAiC,GAC3C,oBAAoB,GAClB,MAAM,IAAI,CAAC,yBAAyB,EAChC,WAAW,GACX,IAAI,GACJ,MAAM,GACN,UAAU,GACV,UAAU,GACV,eAAe,CAClB,CAAC;AAEN;;;;GAIG;AACH,qBAAa,iCAAiC;IAU5C,OAAO,EAAE,gCAAgC,EAAE,CAAM;IAMjD,WAAW,EAAE,MAAM,CAAK;IAMxB,QAAQ,EAAE;QACR,aAAa,EAAE,MAAM,CAAC;KACvB,CAEC;CACH;AAED,MAAM,MAAM,gCAAgC,GAAG,mBAAmB,GAAG;KAElE,CAAC,IAAI,MAAM,IAAI,CAAC,yBAAyB,EACtC,IAAI,GACJ,WAAW,GACX,MAAM,GACN,UAAU,GACV,UAAU,GACV,eAAe,GACf,SAAS,CACZ,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC,CAAC;CAClC,CAAC"}
1
+ {"version":3,"file":"campaign-claim-analytics-request.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/campaign/campaign-claim-analytics-request.dto.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAA0B,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACpI,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;;AAExE;;;;;;;;;;;GAWG;AAEH;;;GAGG;AACH,qBAAa,gCAAiC,SAAQ,qCAQrD;IASC,MAAM,CAAC,EAAE,MAAM,CAAC;IAShB,UAAU,CAAC,EAAE,MAAM,CAAC;IASpB,UAAU,CAAC,EAAE,MAAM,CAAC;IASpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,qBAAa,gCAAgC;IAe3C,OAAO,CAAC,EAAE,gCAAgC,CAAC;IAU3C,OAAO,CAAC,EAAE,iCAAiC,EAAE,CAAC;IAe9C,kBAAkB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAW5C,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAa;IAS5C,MAAM,CAAC,EAAE,mBAAmB,GAAG,iCAAiC,GAAG,MAAM,CAAW;IASpF,SAAS,CAAC,EAAE,SAAS,CAAkB;IAcvC,KAAK,CAAC,EAAE,MAAM,CAAM;IASpB,SAAS,CAAC,EAAE,IAAI,CAAC;IAQjB,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,iCAAiC,GAC3C,oBAAoB,GAClB,MAAM,IAAI,CAAC,yBAAyB,EAChC,WAAW,GACX,IAAI,GACJ,MAAM,GACN,UAAU,GACV,UAAU,GACV,eAAe,CAClB,CAAC;AAEN;;;;GAIG;AACH,qBAAa,iCAAiC;IAU5C,OAAO,EAAE,gCAAgC,EAAE,CAAM;IAMjD,WAAW,EAAE,MAAM,CAAK;IAWxB,QAAQ,EAAE,qBAAqB,CAK7B;CACH;AAED,MAAM,MAAM,gCAAgC,GAAG,mBAAmB,GAAG;KAElE,CAAC,IAAI,MAAM,IAAI,CAAC,yBAAyB,EACtC,IAAI,GACJ,WAAW,GACX,MAAM,GACN,UAAU,GACV,UAAU,GACV,eAAe,GACf,SAAS,CACZ,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC,CAAC;CAClC,CAAC"}
@@ -7,7 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { IsOptional, IsNumber, Min, Max, IsArray, IsString, ValidateNested, IsEnum, IsIn, IsDateString } from 'class-validator';
8
8
  import { Transform, Type } from 'class-transformer';
9
9
  import { ApiProperty, ApiPropertyOptional, OmitType, PartialType } from '@nestjs/swagger';
10
- import { CampaignClaimAnalyticsDTO } from './campaign-claim-analytics.dto.js';
10
+ import { CampaignClaimAnalyticsDTO } from '../analytics/campaign-claim-analytics.dto.js';
11
11
  import { SortOrder } from '../../enum/index.js';
12
12
  import { ANALYTICS_METRIC_TYPES } from '../../types/analytics.type.js';
13
13
  import { GroupByExpressionDTO } from '../analytics/group-by-expression.dto.js';
@@ -204,7 +204,10 @@ export class CampaignClaimAnalyticsResponseDTO {
204
204
  results = [];
205
205
  totalGroups = 0;
206
206
  metadata = {
207
- executionTime: '0ms'
207
+ dateRange: {
208
+ startDate: new Date(),
209
+ endDate: new Date()
210
+ }
208
211
  };
209
212
  }
210
213
  __decorate([
@@ -226,8 +229,13 @@ __decorate([
226
229
  ], CampaignClaimAnalyticsResponseDTO.prototype, "totalGroups", void 0);
227
230
  __decorate([
228
231
  ApiProperty({
229
- description: 'Query execution metadata',
230
- example: { executionTime: '15ms' }
232
+ description: 'Query metadata showing applied date range (always present)',
233
+ example: {
234
+ dateRange: {
235
+ startDate: '2024-01-01T00:00:00.000Z',
236
+ endDate: '2024-12-31T23:59:59.999Z'
237
+ }
238
+ }
231
239
  })
232
240
  ], CampaignClaimAnalyticsResponseDTO.prototype, "metadata", void 0);
233
241
  //# sourceMappingURL=campaign-claim-analytics-request.dto.js.map