@spottoai/types-package 1.0.2-dev1138.1 → 1.0.2-dev1138.3

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 (131) hide show
  1. package/dist/azure/financialAnalytics.d.ts +80 -8
  2. package/dist/azure/financialAnalytics.d.ts.map +1 -1
  3. package/dist/azure/financialAnalyticsDelivery.d.ts +72 -3
  4. package/dist/azure/financialAnalyticsDelivery.d.ts.map +1 -1
  5. package/dist/azure/financialAnalyticsDelivery.js +7 -1
  6. package/dist/azure/financialAnalyticsDelivery.js.map +1 -1
  7. package/dist/azure/financialAnalyticsDeliveryValidation.d.ts +9 -1
  8. package/dist/azure/financialAnalyticsDeliveryValidation.d.ts.map +1 -1
  9. package/dist/azure/financialAnalyticsDeliveryValidation.js +190 -10
  10. package/dist/azure/financialAnalyticsDeliveryValidation.js.map +1 -1
  11. package/dist/azure/financialAnalyticsDisplayKernel.d.ts +12 -0
  12. package/dist/azure/financialAnalyticsDisplayKernel.d.ts.map +1 -0
  13. package/dist/azure/financialAnalyticsDisplayKernel.js +144 -0
  14. package/dist/azure/financialAnalyticsDisplayKernel.js.map +1 -0
  15. package/dist/azure/financialAnalyticsValidation.d.ts.map +1 -1
  16. package/dist/azure/financialAnalyticsValidation.js +101 -19
  17. package/dist/azure/financialAnalyticsValidation.js.map +1 -1
  18. package/dist/azure/financialAuthorityView.d.ts +4 -0
  19. package/dist/azure/financialAuthorityView.d.ts.map +1 -1
  20. package/dist/azure/financialAuthorityView.js.map +1 -1
  21. package/dist/azure/financialAuthorityViewValidation.d.ts.map +1 -1
  22. package/dist/azure/financialAuthorityViewValidation.js +39 -0
  23. package/dist/azure/financialAuthorityViewValidation.js.map +1 -1
  24. package/dist/azure/financialChargeComposition.d.ts +81 -0
  25. package/dist/azure/financialChargeComposition.d.ts.map +1 -0
  26. package/dist/azure/financialChargeComposition.js +41 -0
  27. package/dist/azure/financialChargeComposition.js.map +1 -0
  28. package/dist/azure/financialChargeCompositionKernel.d.ts +3 -0
  29. package/dist/azure/financialChargeCompositionKernel.d.ts.map +1 -0
  30. package/dist/azure/financialChargeCompositionKernel.js +49 -0
  31. package/dist/azure/financialChargeCompositionKernel.js.map +1 -0
  32. package/dist/azure/financialChargeCompositionValidation.d.ts +8 -0
  33. package/dist/azure/financialChargeCompositionValidation.d.ts.map +1 -0
  34. package/dist/azure/financialChargeCompositionValidation.js +164 -0
  35. package/dist/azure/financialChargeCompositionValidation.js.map +1 -0
  36. package/dist/azure/financialDataflow.d.ts +45 -2
  37. package/dist/azure/financialDataflow.d.ts.map +1 -1
  38. package/dist/azure/financialDataflow.js.map +1 -1
  39. package/dist/azure/financialDataflowKernel.d.ts +31 -0
  40. package/dist/azure/financialDataflowKernel.d.ts.map +1 -0
  41. package/dist/azure/financialDataflowKernel.js +169 -0
  42. package/dist/azure/financialDataflowKernel.js.map +1 -0
  43. package/dist/azure/financialDataflowValidation.d.ts +5 -2
  44. package/dist/azure/financialDataflowValidation.d.ts.map +1 -1
  45. package/dist/azure/financialDataflowValidation.js +203 -30
  46. package/dist/azure/financialDataflowValidation.js.map +1 -1
  47. package/dist/azure/financialEvidenceAssessmentValidation.d.ts.map +1 -1
  48. package/dist/azure/financialEvidenceAssessmentValidation.js +7 -0
  49. package/dist/azure/financialEvidenceAssessmentValidation.js.map +1 -1
  50. package/dist/azure/financialPolicy.d.ts +19 -3
  51. package/dist/azure/financialPolicy.d.ts.map +1 -1
  52. package/dist/azure/financialPolicy.js.map +1 -1
  53. package/dist/azure/financialPolicyDelivery.d.ts +75 -1
  54. package/dist/azure/financialPolicyDelivery.d.ts.map +1 -1
  55. package/dist/azure/financialPolicyDelivery.js +5 -1
  56. package/dist/azure/financialPolicyDelivery.js.map +1 -1
  57. package/dist/azure/financialPolicyDeliveryValidation.d.ts +16 -2
  58. package/dist/azure/financialPolicyDeliveryValidation.d.ts.map +1 -1
  59. package/dist/azure/financialPolicyDeliveryValidation.js +238 -5
  60. package/dist/azure/financialPolicyDeliveryValidation.js.map +1 -1
  61. package/dist/azure/financialPolicyKernel.d.ts +38 -0
  62. package/dist/azure/financialPolicyKernel.d.ts.map +1 -0
  63. package/dist/azure/financialPolicyKernel.js +232 -0
  64. package/dist/azure/financialPolicyKernel.js.map +1 -0
  65. package/dist/azure/financialPolicyValidation.d.ts +1 -0
  66. package/dist/azure/financialPolicyValidation.d.ts.map +1 -1
  67. package/dist/azure/financialPolicyValidation.js +111 -16
  68. package/dist/azure/financialPolicyValidation.js.map +1 -1
  69. package/dist/azure/financialSavingsAuthority.d.ts +29 -0
  70. package/dist/azure/financialSavingsAuthority.d.ts.map +1 -1
  71. package/dist/azure/financialSavingsAuthority.js +2 -1
  72. package/dist/azure/financialSavingsAuthority.js.map +1 -1
  73. package/dist/azure/financialSavingsAuthorityValidation.d.ts.map +1 -1
  74. package/dist/azure/financialSavingsAuthorityValidation.js +3 -0
  75. package/dist/azure/financialSavingsAuthorityValidation.js.map +1 -1
  76. package/dist/azure/financialSavingsCoordinateValidation.d.ts.map +1 -1
  77. package/dist/azure/financialSavingsCoordinateValidation.js +36 -0
  78. package/dist/azure/financialSavingsCoordinateValidation.js.map +1 -1
  79. package/dist/azure/financialScope.d.ts +6 -0
  80. package/dist/azure/financialScope.d.ts.map +1 -1
  81. package/dist/azure/financialScope.js +6 -0
  82. package/dist/azure/financialScope.js.map +1 -1
  83. package/dist/azure/financialScopeBaseline.d.ts +8 -2
  84. package/dist/azure/financialScopeBaseline.d.ts.map +1 -1
  85. package/dist/azure/financialScopeBaseline.js +14 -1
  86. package/dist/azure/financialScopeBaseline.js.map +1 -1
  87. package/dist/azure/financialScopeBaselineValidation.d.ts.map +1 -1
  88. package/dist/azure/financialScopeBaselineValidation.js +15 -1
  89. package/dist/azure/financialScopeBaselineValidation.js.map +1 -1
  90. package/dist/azure/financialScopeEvidence.d.ts +1 -1
  91. package/dist/azure/financialScopeEvidence.d.ts.map +1 -1
  92. package/dist/azure/metrics.d.ts +2 -2
  93. package/dist/azure/metrics.d.ts.map +1 -1
  94. package/dist/azure/prices.d.ts +16 -3
  95. package/dist/azure/prices.d.ts.map +1 -1
  96. package/dist/azure/recommendations.d.ts +12 -4
  97. package/dist/azure/recommendations.d.ts.map +1 -1
  98. package/dist/azure/reports.d.ts +3 -2
  99. package/dist/azure/reports.d.ts.map +1 -1
  100. package/dist/azure/reports.js.map +1 -1
  101. package/dist/azure/resources.d.ts +12 -0
  102. package/dist/azure/resources.d.ts.map +1 -1
  103. package/dist/azure/subscriptions.d.ts +4 -2
  104. package/dist/azure/subscriptions.d.ts.map +1 -1
  105. package/dist/azure/views.d.ts +21 -5
  106. package/dist/azure/views.d.ts.map +1 -1
  107. package/dist/azure/views.js.map +1 -1
  108. package/dist/esm/azure/financialAnalyticsDelivery.js +5 -0
  109. package/dist/esm/azure/financialAnalyticsDeliveryValidation.js +184 -11
  110. package/dist/esm/azure/financialAnalyticsDisplayKernel.js +139 -0
  111. package/dist/esm/azure/financialAnalyticsValidation.js +101 -19
  112. package/dist/esm/azure/financialAuthorityViewValidation.js +39 -0
  113. package/dist/esm/azure/financialChargeComposition.js +36 -0
  114. package/dist/esm/azure/financialChargeCompositionKernel.js +44 -0
  115. package/dist/esm/azure/financialChargeCompositionValidation.js +155 -0
  116. package/dist/esm/azure/financialDataflowKernel.js +163 -0
  117. package/dist/esm/azure/financialDataflowValidation.js +199 -29
  118. package/dist/esm/azure/financialEvidenceAssessmentValidation.js +7 -0
  119. package/dist/esm/azure/financialPolicyDelivery.js +4 -0
  120. package/dist/esm/azure/financialPolicyDeliveryValidation.js +227 -7
  121. package/dist/esm/azure/financialPolicyKernel.js +225 -0
  122. package/dist/esm/azure/financialPolicyValidation.js +110 -16
  123. package/dist/esm/azure/financialSavingsAuthority.js +1 -0
  124. package/dist/esm/azure/financialSavingsAuthorityValidation.js +3 -0
  125. package/dist/esm/azure/financialSavingsCoordinateValidation.js +36 -0
  126. package/dist/esm/azure/financialScope.js +6 -0
  127. package/dist/esm/azure/financialScopeBaseline.js +12 -0
  128. package/dist/esm/azure/financialScopeBaselineValidation.js +15 -1
  129. package/dist/events/cost.d.ts +4 -0
  130. package/dist/events/cost.d.ts.map +1 -1
  131. package/package.json +3 -2
@@ -1,8 +1,18 @@
1
1
  import type { CanonicalExactMoney } from './financialValidationPrimitives';
2
- import type { FinancialDataflowCoordinateV1 } from './financialDataflow';
2
+ import type { CurrentSpendCompositionV1, FinancialDataflowCoordinateV1 } from './financialDataflow';
3
3
  export declare const FINANCIAL_ANALYTICS_INPUT_CONTRACT_VERSION_V1: "financial-analytics-input/v1";
4
4
  export declare const FINANCIAL_ANALYTICS_PROJECTION_CONTRACT_VERSION_V1: "financial-analytics-projection/v1";
5
- export type FinancialAnalyticsDailyPointV1 = {
5
+ interface FinancialAnalyticsDailyForecastSliceV1 {
6
+ /** Exact recurring and usage-based amount eligible for future-day modeling. */
7
+ forecastEligibleAmount: string;
8
+ /** Exact observed one-time amount retained in history but never repeated into future days. */
9
+ oneTimeAmount: string;
10
+ /** Exact included amount whose recurrence is unresolved. */
11
+ unknownRecurrenceAmount: string;
12
+ forecastStatus: 'available' | 'partial';
13
+ forecastReasonCodes?: [string, ...string[]];
14
+ }
15
+ export type FinancialAnalyticsDailyPointV1 = FinancialAnalyticsDailyForecastSliceV1 & ({
6
16
  date: string;
7
17
  compositionId: string;
8
18
  status: 'available';
@@ -16,7 +26,7 @@ export type FinancialAnalyticsDailyPointV1 = {
16
26
  knownAmount: string;
17
27
  reasonCodes: [string, ...string[]];
18
28
  amount?: never;
19
- };
29
+ });
20
30
  export interface FinancialAnalyticsGapV1 {
21
31
  startDate: string;
22
32
  endDateExclusive: string;
@@ -27,21 +37,83 @@ export interface FinancialAnalyticsCoverageV1 {
27
37
  partialDayCount: number;
28
38
  unavailableDayCount: number;
29
39
  }
40
+ export type FinancialAnalyticsInputCoordinateV1 = FinancialDataflowCoordinateV1 & {
41
+ periodRole: 'analytics-input';
42
+ period: FinancialDataflowCoordinateV1['period'] & {
43
+ windowKind: 'analytics-history';
44
+ };
45
+ };
30
46
  export interface FinancialAnalyticsInputSeriesV1 {
31
47
  schemaVersion: 1;
32
48
  contractVersion: typeof FINANCIAL_ANALYTICS_INPUT_CONTRACT_VERSION_V1;
33
49
  analyticsInputId: string;
34
- coordinate: FinancialDataflowCoordinateV1 & {
35
- periodRole: 'analytics-input';
36
- };
50
+ coordinate: FinancialAnalyticsInputCoordinateV1;
37
51
  granularity: 'daily';
38
52
  producerGenerationId: string;
53
+ /** Content-addressed current/comparison compositions required by requested projections. */
54
+ referenceCompositions: CurrentSpendCompositionV1[];
39
55
  points: FinancialAnalyticsDailyPointV1[];
40
56
  gaps: FinancialAnalyticsGapV1[];
41
57
  coverage: FinancialAnalyticsCoverageV1;
42
58
  algorithmVersion: string;
43
59
  }
44
60
  export type FinancialAnalyticsInputIdentityPreimageV1 = Omit<FinancialAnalyticsInputSeriesV1, 'analyticsInputId'>;
61
+ export type FinancialAnalyticsDisplayPeriodKeyV1 = 'last-7-days' | 'rolling-30-days' | 'rolling-90-days' | 'trailing-12-calendar-months';
62
+ export type FinancialAnalyticsDisplayBucketV1 = {
63
+ bucketKey: string;
64
+ startDate: string;
65
+ endDateExclusive: string;
66
+ status: 'available';
67
+ amount: string;
68
+ averageKnownPerDay: string;
69
+ knownAmount?: never;
70
+ reasonCodes?: never;
71
+ } | {
72
+ bucketKey: string;
73
+ startDate: string;
74
+ endDateExclusive: string;
75
+ status: 'partial';
76
+ knownAmount: string;
77
+ averageKnownPerDay: string;
78
+ reasonCodes: [string, ...string[]];
79
+ amount?: never;
80
+ } | {
81
+ bucketKey: string;
82
+ startDate: string;
83
+ endDateExclusive: string;
84
+ status: 'unavailable';
85
+ reasonCodes: [string, ...string[]];
86
+ amount?: never;
87
+ knownAmount?: never;
88
+ };
89
+ interface FinancialAnalyticsDisplayProjectionCommonV1 {
90
+ analyticsInputId: string;
91
+ currentSpendCompositionId: string;
92
+ chargeInclusionPolicyRef: FinancialDataflowCoordinateV1['chargeInclusionPolicyRef'];
93
+ periodKey: FinancialAnalyticsDisplayPeriodKeyV1;
94
+ requested: FinancialDataflowCoordinateV1['period']['requested'];
95
+ bucketGranularity: 'daily' | 'calendar-month';
96
+ currencyCode: string;
97
+ buckets: FinancialAnalyticsDisplayBucketV1[];
98
+ }
99
+ export type FinancialAnalyticsDisplayProjectionV1 = (FinancialAnalyticsDisplayProjectionCommonV1 & {
100
+ status: 'available';
101
+ amount: string;
102
+ averageKnownPerDay: string;
103
+ knownAmount?: never;
104
+ reasonCodes?: never;
105
+ }) | (FinancialAnalyticsDisplayProjectionCommonV1 & {
106
+ status: 'partial';
107
+ knownAmount: string;
108
+ averageKnownPerDay: string;
109
+ reasonCodes: [string, ...string[]];
110
+ amount?: never;
111
+ }) | (FinancialAnalyticsDisplayProjectionCommonV1 & {
112
+ status: 'unavailable';
113
+ reasonCodes: [string, ...string[]];
114
+ amount?: never;
115
+ knownAmount?: never;
116
+ });
45
117
  export interface FinancialForecastResultV1 {
46
118
  kind: 'forecast';
47
119
  projectedTotal: CanonicalExactMoney;
@@ -64,7 +136,7 @@ export interface FinancialAnomalyEventV1 {
64
136
  }
65
137
  export interface FinancialAnomalyResultV1 {
66
138
  kind: 'anomaly';
67
- events: [FinancialAnomalyEventV1, ...FinancialAnomalyEventV1[]];
139
+ events: FinancialAnomalyEventV1[];
68
140
  }
69
141
  export type FinancialAnalyticsResultV1 = FinancialForecastResultV1 | FinancialTrendResultV1 | FinancialAnomalyResultV1;
70
142
  interface FinancialAnalyticsProjectionCommonV1 {
@@ -89,7 +161,7 @@ type FinancialAnalyticsAvailableInputBindingV1 = {
89
161
  result: FinancialTrendResultV1;
90
162
  } | {
91
163
  analyticsInputId: string;
92
- currentSpendCompositionId?: string;
164
+ currentSpendCompositionId: string;
93
165
  result: FinancialAnomalyResultV1;
94
166
  };
95
167
  export type AvailableFinancialAnalyticsProjectionV1 = FinancialAnalyticsProjectionCommonV1 & FinancialAnalyticsAvailableInputBindingV1 & {
@@ -1 +1 @@
1
- {"version":3,"file":"financialAnalytics.d.ts","sourceRoot":"","sources":["../../src/azure/financialAnalytics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"financialAnalytics.d.ts","sourceRoot":"","sources":["../../src/azure/financialAnalytics.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,36 @@
1
1
  import type { FinancialAnalyticsResultV1 } from './financialAnalytics';
2
+ import type { FinancialDataflowCoordinateV1, FinancialDataflowJsonGzipArtifactDescriptorV1 } from './financialDataflow';
2
3
  export declare const FINANCIAL_ANALYTICS_JOB_REQUEST_CONTRACT_VERSION_V1: "financial-analytics-job-request/v1";
3
4
  export declare const FINANCIAL_ANALYTICS_CURRENT_POINTER_CONTRACT_VERSION_V1: "financial-analytics-current-pointer/v1";
4
5
  export declare const FINANCIAL_ANALYTICS_INPUT_LOGICAL_NAME_V1: "financial-analytics-input.json.gz";
6
+ export declare const FINANCIAL_ANALYTICS_INPUT_BY_ID_ROOT_V1: "financial-analytics/inputs-by-id";
5
7
  export declare const FINANCIAL_ANALYTICS_PROJECTION_LOGICAL_NAME_V1: "financial-analytics-projection.json.gz";
8
+ export declare const FINANCIAL_ANALYTICS_BATCH_QUERY_CONTRACT_VERSION_V1: "financial-analytics-batch-query/v1";
9
+ export declare const FINANCIAL_ANALYTICS_BATCH_RESPONSE_CONTRACT_VERSION_V1: "financial-analytics-batch-response/v1";
10
+ export declare const FINANCIAL_ANALYTICS_OUTPUT_MANIFEST_CONTRACT_VERSION_V1: "financial-analytics-output-manifest/v1";
11
+ export declare const financialAnalyticsInputByIdPathV1: (analyticsInputId: string) => string;
12
+ export type FinancialAnalyticsRequestedOutputV1 = {
13
+ resultKind: 'forecast';
14
+ targetCoordinate: FinancialDataflowCoordinateV1 & {
15
+ periodRole: 'projection-target';
16
+ };
17
+ currentSpendCompositionId: string;
18
+ comparisonSpendCompositionId?: never;
19
+ } | {
20
+ resultKind: 'trend';
21
+ targetCoordinate: FinancialDataflowCoordinateV1 & {
22
+ periodRole: 'projection-target';
23
+ };
24
+ currentSpendCompositionId: string;
25
+ comparisonSpendCompositionId: string;
26
+ } | {
27
+ resultKind: 'anomaly';
28
+ targetCoordinate: FinancialDataflowCoordinateV1 & {
29
+ periodRole: 'projection-target';
30
+ };
31
+ currentSpendCompositionId: string;
32
+ comparisonSpendCompositionId?: never;
33
+ };
6
34
  export interface FinancialAnalyticsJobRequestV1 {
7
35
  schemaVersion: 1;
8
36
  contractVersion: typeof FINANCIAL_ANALYTICS_JOB_REQUEST_CONTRACT_VERSION_V1;
@@ -13,17 +41,21 @@ export interface FinancialAnalyticsJobRequestV1 {
13
41
  inputGenerationId: string;
14
42
  inputArtifactDigest: string;
15
43
  /** Identity-only queue request. Customer money and billing rows must never be embedded here. */
16
- requestedResultKinds: FinancialAnalyticsResultV1['kind'][];
44
+ requestedOutputs: FinancialAnalyticsRequestedOutputV1[];
17
45
  requestedAt: string;
18
46
  }
19
- /** Stable across delivery retries; enqueue time is audit metadata, not request identity. */
20
- export type FinancialAnalyticsJobRequestIdentityPreimageV1 = Omit<FinancialAnalyticsJobRequestV1, 'requestId' | 'requestedAt'>;
47
+ /** Stable across delivery retries because the fixed evaluation instant is part of the queued payload identity. */
48
+ export type FinancialAnalyticsJobRequestIdentityPreimageV1 = Omit<FinancialAnalyticsJobRequestV1, 'requestId'>;
21
49
  /** CAS-friendly current pointer; immutable output generations remain the source of truth. */
22
50
  export interface FinancialAnalyticsCurrentPointerV1 {
23
51
  schemaVersion: 1;
24
52
  contractVersion: typeof FINANCIAL_ANALYTICS_CURRENT_POINTER_CONTRACT_VERSION_V1;
25
53
  pointerDigest: string;
26
54
  coordinateId: string;
55
+ resultKind: FinancialAnalyticsResultV1['kind'];
56
+ sourceRequestId: string;
57
+ sourceRequestedAt: string;
58
+ analyticsInputId: string;
27
59
  pointerRevision: number;
28
60
  outputGenerationId: string;
29
61
  analyticsProjectionId: string;
@@ -31,4 +63,41 @@ export interface FinancialAnalyticsCurrentPointerV1 {
31
63
  promotedAt: string;
32
64
  }
33
65
  export type FinancialAnalyticsCurrentPointerIdentityPreimageV1 = Omit<FinancialAnalyticsCurrentPointerV1, 'pointerDigest'>;
66
+ export interface FinancialAnalyticsOutputManifestV1 {
67
+ schemaVersion: 1;
68
+ contractVersion: typeof FINANCIAL_ANALYTICS_OUTPUT_MANIFEST_CONTRACT_VERSION_V1;
69
+ coordinateId: string;
70
+ resultKind: FinancialAnalyticsResultV1['kind'];
71
+ outputGenerationId: string;
72
+ analyticsProjectionId: string;
73
+ sourceRequestId: string;
74
+ analyticsInputId: string;
75
+ inputArtifactDigest: string;
76
+ projection: FinancialDataflowJsonGzipArtifactDescriptorV1;
77
+ publishedAt: string;
78
+ manifestDigest: string;
79
+ }
80
+ export type FinancialAnalyticsOutputManifestIdentityPreimageV1 = Omit<FinancialAnalyticsOutputManifestV1, 'manifestDigest'>;
81
+ export interface FinancialAnalyticsBatchQueryItemV1 {
82
+ coordinateId: string;
83
+ resultKind: FinancialAnalyticsResultV1['kind'];
84
+ }
85
+ /** Bounded read-only transport query. It contains no customer money or calculation inputs. */
86
+ export interface FinancialAnalyticsBatchQueryV1 {
87
+ schemaVersion: 1;
88
+ contractVersion: typeof FINANCIAL_ANALYTICS_BATCH_QUERY_CONTRACT_VERSION_V1;
89
+ items: FinancialAnalyticsBatchQueryItemV1[];
90
+ }
91
+ export type FinancialAnalyticsBatchResultV1 = (FinancialAnalyticsBatchQueryItemV1 & {
92
+ status: 'available';
93
+ projection: import('./financialAnalytics').FinancialAnalyticsProjectionV1;
94
+ }) | (FinancialAnalyticsBatchQueryItemV1 & {
95
+ status: 'unavailable';
96
+ reasonCode: 'not-produced';
97
+ });
98
+ export interface FinancialAnalyticsBatchResponseV1 {
99
+ schemaVersion: 1;
100
+ contractVersion: typeof FINANCIAL_ANALYTICS_BATCH_RESPONSE_CONTRACT_VERSION_V1;
101
+ results: FinancialAnalyticsBatchResultV1[];
102
+ }
34
103
  //# sourceMappingURL=financialAnalyticsDelivery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"financialAnalyticsDelivery.d.ts","sourceRoot":"","sources":["../../src/azure/financialAnalyticsDelivery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAEvE,eAAO,MAAM,mDAAmD,EAAG,oCAA6C,CAAC;AACjH,eAAO,MAAM,uDAAuD,EAAG,wCAAiD,CAAC;AACzH,eAAO,MAAM,yCAAyC,EAAG,mCAA4C,CAAC;AACtG,eAAO,MAAM,8CAA8C,EAAG,wCAAiD,CAAC;AAEhH,MAAM,WAAW,8BAA8B;IAC7C,aAAa,EAAE,CAAC,CAAC;IACjB,eAAe,EAAE,OAAO,mDAAmD,CAAC;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gGAAgG;IAChG,oBAAoB,EAAE,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC;IAC3D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,4FAA4F;AAC5F,MAAM,MAAM,8CAA8C,GAAG,IAAI,CAAC,8BAA8B,EAAE,WAAW,GAAG,aAAa,CAAC,CAAC;AAE/H,6FAA6F;AAC7F,MAAM,WAAW,kCAAkC;IACjD,aAAa,EAAE,CAAC,CAAC;IACjB,eAAe,EAAE,OAAO,uDAAuD,CAAC;IAChF,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,kDAAkD,GAAG,IAAI,CAAC,kCAAkC,EAAE,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"financialAnalyticsDelivery.d.ts","sourceRoot":"","sources":["../../src/azure/financialAnalyticsDelivery.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FINANCIAL_ANALYTICS_PROJECTION_LOGICAL_NAME_V1 = exports.FINANCIAL_ANALYTICS_INPUT_LOGICAL_NAME_V1 = exports.FINANCIAL_ANALYTICS_CURRENT_POINTER_CONTRACT_VERSION_V1 = exports.FINANCIAL_ANALYTICS_JOB_REQUEST_CONTRACT_VERSION_V1 = void 0;
3
+ exports.financialAnalyticsInputByIdPathV1 = exports.FINANCIAL_ANALYTICS_OUTPUT_MANIFEST_CONTRACT_VERSION_V1 = exports.FINANCIAL_ANALYTICS_BATCH_RESPONSE_CONTRACT_VERSION_V1 = exports.FINANCIAL_ANALYTICS_BATCH_QUERY_CONTRACT_VERSION_V1 = exports.FINANCIAL_ANALYTICS_PROJECTION_LOGICAL_NAME_V1 = exports.FINANCIAL_ANALYTICS_INPUT_BY_ID_ROOT_V1 = exports.FINANCIAL_ANALYTICS_INPUT_LOGICAL_NAME_V1 = exports.FINANCIAL_ANALYTICS_CURRENT_POINTER_CONTRACT_VERSION_V1 = exports.FINANCIAL_ANALYTICS_JOB_REQUEST_CONTRACT_VERSION_V1 = void 0;
4
4
  exports.FINANCIAL_ANALYTICS_JOB_REQUEST_CONTRACT_VERSION_V1 = 'financial-analytics-job-request/v1';
5
5
  exports.FINANCIAL_ANALYTICS_CURRENT_POINTER_CONTRACT_VERSION_V1 = 'financial-analytics-current-pointer/v1';
6
6
  exports.FINANCIAL_ANALYTICS_INPUT_LOGICAL_NAME_V1 = 'financial-analytics-input.json.gz';
7
+ exports.FINANCIAL_ANALYTICS_INPUT_BY_ID_ROOT_V1 = 'financial-analytics/inputs-by-id';
7
8
  exports.FINANCIAL_ANALYTICS_PROJECTION_LOGICAL_NAME_V1 = 'financial-analytics-projection.json.gz';
9
+ exports.FINANCIAL_ANALYTICS_BATCH_QUERY_CONTRACT_VERSION_V1 = 'financial-analytics-batch-query/v1';
10
+ exports.FINANCIAL_ANALYTICS_BATCH_RESPONSE_CONTRACT_VERSION_V1 = 'financial-analytics-batch-response/v1';
11
+ exports.FINANCIAL_ANALYTICS_OUTPUT_MANIFEST_CONTRACT_VERSION_V1 = 'financial-analytics-output-manifest/v1';
12
+ const financialAnalyticsInputByIdPathV1 = (analyticsInputId) => `${exports.FINANCIAL_ANALYTICS_INPUT_BY_ID_ROOT_V1}/${analyticsInputId}/${exports.FINANCIAL_ANALYTICS_INPUT_LOGICAL_NAME_V1}`;
13
+ exports.financialAnalyticsInputByIdPathV1 = financialAnalyticsInputByIdPathV1;
8
14
  //# sourceMappingURL=financialAnalyticsDelivery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"financialAnalyticsDelivery.js","sourceRoot":"","sources":["../../src/azure/financialAnalyticsDelivery.ts"],"names":[],"mappings":";;;AAEa,QAAA,mDAAmD,GAAG,oCAA6C,CAAC;AACpG,QAAA,uDAAuD,GAAG,wCAAiD,CAAC;AAC5G,QAAA,yCAAyC,GAAG,mCAA4C,CAAC;AACzF,QAAA,8CAA8C,GAAG,wCAAiD,CAAC"}
1
+ {"version":3,"file":"financialAnalyticsDelivery.js","sourceRoot":"","sources":["../../src/azure/financialAnalyticsDelivery.ts"],"names":[],"mappings":";;;AAGa,QAAA,mDAAmD,GAAG,oCAA6C,CAAC;AACpG,QAAA,uDAAuD,GAAG,wCAAiD,CAAC;AAC5G,QAAA,yCAAyC,GAAG,mCAA4C,CAAC;AACzF,QAAA,uCAAuC,GAAG,kCAA2C,CAAC;AACtF,QAAA,8CAA8C,GAAG,wCAAiD,CAAC;AACnG,QAAA,mDAAmD,GAAG,oCAA6C,CAAC;AACpG,QAAA,sDAAsD,GAAG,uCAAgD,CAAC;AAC1G,QAAA,uDAAuD,GAAG,wCAAiD,CAAC;AAElH,MAAM,iCAAiC,GAAG,CAAC,gBAAwB,EAAU,EAAE,CACpF,GAAG,+CAAuC,IAAI,gBAAgB,IAAI,iDAAyC,EAAE,CAAC;AADnG,QAAA,iCAAiC,qCACkE"}
@@ -1,6 +1,8 @@
1
- import { type FinancialAnalyticsCurrentPointerIdentityPreimageV1, type FinancialAnalyticsCurrentPointerV1, type FinancialAnalyticsJobRequestIdentityPreimageV1, type FinancialAnalyticsJobRequestV1 } from './financialAnalyticsDelivery';
1
+ import { type FinancialAnalyticsBatchQueryV1, type FinancialAnalyticsBatchResponseV1, type FinancialAnalyticsCurrentPointerIdentityPreimageV1, type FinancialAnalyticsCurrentPointerV1, type FinancialAnalyticsJobRequestIdentityPreimageV1, type FinancialAnalyticsJobRequestV1, type FinancialAnalyticsOutputManifestIdentityPreimageV1, type FinancialAnalyticsOutputManifestV1, type FinancialAnalyticsRequestedOutputV1 } from './financialAnalyticsDelivery';
2
2
  export declare const canonicalizeFinancialAnalyticsJobRequestIdentityV1: (value: FinancialAnalyticsJobRequestIdentityPreimageV1) => string;
3
3
  export declare const createFinancialAnalyticsJobRequestIdV1: (value: FinancialAnalyticsJobRequestIdentityPreimageV1) => string;
4
+ /** Stable immutable output generation selected by one exact job output. */
5
+ export declare const createFinancialAnalyticsOutputGenerationIdV1: (requestId: string, output: FinancialAnalyticsRequestedOutputV1) => string;
4
6
  export declare const isFinancialAnalyticsJobRequestV1: (value: unknown) => value is FinancialAnalyticsJobRequestV1;
5
7
  /** Binds an identity-only queue request to already-verified immutable input bytes. */
6
8
  export declare const isFinancialAnalyticsJobRequestCompatibleV1: (request: unknown, input: unknown, verifiedInputArtifactDigest: unknown) => boolean;
@@ -9,4 +11,10 @@ export declare const createFinancialAnalyticsCurrentPointerDigestV1: (value: Fin
9
11
  export declare const isFinancialAnalyticsCurrentPointerV1: (value: unknown) => value is FinancialAnalyticsCurrentPointerV1;
10
12
  /** Binds a promoted pointer to already-verified immutable projection bytes. */
11
13
  export declare const isFinancialAnalyticsCurrentPointerCompatibleV1: (pointer: unknown, projection: unknown, verifiedProjectionArtifactDigest: unknown) => boolean;
14
+ export declare const createFinancialAnalyticsOutputManifestDigestV1: (value: FinancialAnalyticsOutputManifestIdentityPreimageV1) => string;
15
+ export declare const isFinancialAnalyticsOutputManifestV1: (value: unknown) => value is FinancialAnalyticsOutputManifestV1;
16
+ export declare const isFinancialAnalyticsOutputManifestCompatibleV1: (manifest: unknown, projection: unknown, verifiedProjectionArtifactDigest: unknown) => boolean;
17
+ export declare const isFinancialAnalyticsBatchQueryV1: (value: unknown) => value is FinancialAnalyticsBatchQueryV1;
18
+ export declare const isFinancialAnalyticsBatchResponseV1: (value: unknown) => value is FinancialAnalyticsBatchResponseV1;
19
+ export declare const isFinancialAnalyticsBatchResponseCompatibleV1: (query: unknown, response: unknown) => boolean;
12
20
  //# sourceMappingURL=financialAnalyticsDeliveryValidation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"financialAnalyticsDeliveryValidation.d.ts","sourceRoot":"","sources":["../../src/azure/financialAnalyticsDeliveryValidation.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,kDAAkD,EACvD,KAAK,kCAAkC,EACvC,KAAK,8CAA8C,EACnD,KAAK,8BAA8B,EACpC,MAAM,8BAA8B,CAAC;AAqCtC,eAAO,MAAM,kDAAkD,GAAI,OAAO,8CAA8C,KAAG,MAG1H,CAAC;AAEF,eAAO,MAAM,sCAAsC,GAAI,OAAO,8CAA8C,KAAG,MAC5B,CAAC;AAEpF,eAAO,MAAM,gCAAgC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,8BAwB1E,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,0CAA0C,GAAI,SAAS,OAAO,EAAE,OAAO,OAAO,EAAE,6BAA6B,OAAO,KAAG,OAQvE,CAAC;AAwB9D,eAAO,MAAM,sDAAsD,GAAI,OAAO,kDAAkD,KAAG,MAGlI,CAAC;AAEF,eAAO,MAAM,8CAA8C,GAAI,OAAO,kDAAkD,KAAG,MACpC,CAAC;AAExF,eAAO,MAAM,oCAAoC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,kCAQ9E,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,8CAA8C,GACzD,SAAS,OAAO,EAChB,YAAY,OAAO,EACnB,kCAAkC,OAAO,KACxC,OAOoE,CAAC"}
1
+ {"version":3,"file":"financialAnalyticsDeliveryValidation.d.ts","sourceRoot":"","sources":["../../src/azure/financialAnalyticsDeliveryValidation.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,8BAA8B,EACnC,KAAK,iCAAiC,EACtC,KAAK,kDAAkD,EACvD,KAAK,kCAAkC,EACvC,KAAK,8CAA8C,EACnD,KAAK,8BAA8B,EACnC,KAAK,kDAAkD,EACvD,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EACzC,MAAM,8BAA8B,CAAC;AAiFtC,eAAO,MAAM,kDAAkD,GAAI,OAAO,8CAA8C,KAAG,MAM1H,CAAC;AAEF,eAAO,MAAM,sCAAsC,GAAI,OAAO,8CAA8C,KAAG,MAC5B,CAAC;AAEpF,2EAA2E;AAC3E,eAAO,MAAM,4CAA4C,GACvD,WAAW,MAAM,EACjB,QAAQ,mCAAmC,KAC1C,MAWF,CAAC;AAEF,eAAO,MAAM,gCAAgC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,8BAuB1E,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,0CAA0C,GAAI,SAAS,OAAO,EAAE,OAAO,OAAO,EAAE,6BAA6B,OAAO,KAAG,OAqChI,CAAC;AAiCL,eAAO,MAAM,sDAAsD,GAAI,OAAO,kDAAkD,KAAG,MAGlI,CAAC;AAEF,eAAO,MAAM,8CAA8C,GAAI,OAAO,kDAAkD,KAAG,MACpC,CAAC;AAExF,eAAO,MAAM,oCAAoC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,kCAQ9E,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,8CAA8C,GACzD,SAAS,OAAO,EAChB,YAAY,OAAO,EACnB,kCAAkC,OAAO,KACxC,OASoE,CAAC;AA8BxE,eAAO,MAAM,8CAA8C,GACzD,OAAO,kDAAkD,KACxD,MAGF,CAAC;AAEF,eAAO,MAAM,oCAAoC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,kCAa9E,CAAC;AAEF,eAAO,MAAM,8CAA8C,GACzD,UAAU,OAAO,EACjB,YAAY,OAAO,EACnB,kCAAkC,OAAO,KACxC,OAU8D,CAAC;AAYlE,eAAO,MAAM,gCAAgC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,8BAS4D,CAAC;AAExI,eAAO,MAAM,mCAAmC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,iCAoBiE,CAAC;AAEhJ,eAAO,MAAM,6CAA6C,GAAI,OAAO,OAAO,EAAE,UAAU,OAAO,KAAG,OAO9F,CAAC"}
@@ -1,11 +1,35 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isFinancialAnalyticsCurrentPointerCompatibleV1 = exports.isFinancialAnalyticsCurrentPointerV1 = exports.createFinancialAnalyticsCurrentPointerDigestV1 = exports.canonicalizeFinancialAnalyticsCurrentPointerIdentityV1 = exports.isFinancialAnalyticsJobRequestCompatibleV1 = exports.isFinancialAnalyticsJobRequestV1 = exports.createFinancialAnalyticsJobRequestIdV1 = exports.canonicalizeFinancialAnalyticsJobRequestIdentityV1 = void 0;
3
+ exports.isFinancialAnalyticsBatchResponseCompatibleV1 = exports.isFinancialAnalyticsBatchResponseV1 = exports.isFinancialAnalyticsBatchQueryV1 = exports.isFinancialAnalyticsOutputManifestCompatibleV1 = exports.isFinancialAnalyticsOutputManifestV1 = exports.createFinancialAnalyticsOutputManifestDigestV1 = exports.isFinancialAnalyticsCurrentPointerCompatibleV1 = exports.isFinancialAnalyticsCurrentPointerV1 = exports.createFinancialAnalyticsCurrentPointerDigestV1 = exports.canonicalizeFinancialAnalyticsCurrentPointerIdentityV1 = exports.isFinancialAnalyticsJobRequestCompatibleV1 = exports.isFinancialAnalyticsJobRequestV1 = exports.createFinancialAnalyticsOutputGenerationIdV1 = exports.createFinancialAnalyticsJobRequestIdV1 = exports.canonicalizeFinancialAnalyticsJobRequestIdentityV1 = void 0;
4
4
  const sha256_1 = require("../common/sha256");
5
5
  const financialAnalyticsValidation_1 = require("./financialAnalyticsValidation");
6
6
  const financialAnalyticsDelivery_1 = require("./financialAnalyticsDelivery");
7
7
  const financialDataflowValidation_1 = require("./financialDataflowValidation");
8
8
  const RESULT_KINDS = new Set(['forecast', 'trend', 'anomaly']);
9
+ const MAX_REQUESTED_OUTPUTS = 16;
10
+ const MAX_BATCH_QUERY_ITEMS = 200;
11
+ const isRequestedOutput = (value) => {
12
+ if (!(0, financialDataflowValidation_1.isFinancialDataflowRecordV1)(value) ||
13
+ !(0, financialDataflowValidation_1.hasFinancialDataflowExactFieldsV1)(value, ['resultKind', 'targetCoordinate'], ['currentSpendCompositionId', 'comparisonSpendCompositionId']) ||
14
+ !RESULT_KINDS.has(String(value.resultKind)) ||
15
+ !(0, financialDataflowValidation_1.isFinancialDataflowCoordinateV1)(value.targetCoordinate) ||
16
+ value.targetCoordinate.periodRole !== 'projection-target' ||
17
+ (value.currentSpendCompositionId !== undefined && !(0, financialDataflowValidation_1.isFinancialDataflowHashV1)(value.currentSpendCompositionId)) ||
18
+ (value.comparisonSpendCompositionId !== undefined && !(0, financialDataflowValidation_1.isFinancialDataflowHashV1)(value.comparisonSpendCompositionId))) {
19
+ return false;
20
+ }
21
+ if (value.resultKind === 'forecast')
22
+ return value.currentSpendCompositionId !== undefined && value.comparisonSpendCompositionId === undefined;
23
+ if (value.resultKind === 'trend')
24
+ return value.currentSpendCompositionId !== undefined && value.comparisonSpendCompositionId !== undefined;
25
+ return value.currentSpendCompositionId !== undefined && value.comparisonSpendCompositionId === undefined;
26
+ };
27
+ const requestedOutputKey = (value) => `${value.resultKind}\u0000${(0, financialDataflowValidation_1.createFinancialDataflowCoordinateIdV1)(value.targetCoordinate)}`;
28
+ const sameCoordinateWithRole = (target, source, sourceRole) => (0, financialDataflowValidation_1.canonicalizeFinancialDataflowJsonV1)({ ...target, periodRole: sourceRole }) === (0, financialDataflowValidation_1.canonicalizeFinancialDataflowJsonV1)(source);
29
+ const periodContains = (container, target) => container.period.requested.dateBasis === target.period.requested.dateBasis &&
30
+ container.period.requested.timeZone === target.period.requested.timeZone &&
31
+ container.period.requested.startDate <= target.period.requested.startDate &&
32
+ container.period.requested.endDateExclusive >= target.period.requested.endDateExclusive;
9
33
  const isJobRequestIdentity = (value) => (0, financialDataflowValidation_1.isFinancialDataflowRecordV1)(value) &&
10
34
  (0, financialDataflowValidation_1.hasFinancialDataflowExactFieldsV1)(value, [
11
35
  'schemaVersion',
@@ -15,7 +39,8 @@ const isJobRequestIdentity = (value) => (0, financialDataflowValidation_1.isFina
15
39
  'analyticsInputId',
16
40
  'inputGenerationId',
17
41
  'inputArtifactDigest',
18
- 'requestedResultKinds',
42
+ 'requestedOutputs',
43
+ 'requestedAt',
19
44
  ]) &&
20
45
  value.schemaVersion === 1 &&
21
46
  value.contractVersion === financialAnalyticsDelivery_1.FINANCIAL_ANALYTICS_JOB_REQUEST_CONTRACT_VERSION_V1 &&
@@ -24,17 +49,35 @@ const isJobRequestIdentity = (value) => (0, financialDataflowValidation_1.isFina
24
49
  (0, financialDataflowValidation_1.isFinancialDataflowHashV1)(value.analyticsInputId) &&
25
50
  (0, financialDataflowValidation_1.isFinancialDataflowIdentityV1)(value.inputGenerationId) &&
26
51
  (0, financialDataflowValidation_1.isFinancialDataflowHashV1)(value.inputArtifactDigest) &&
27
- (0, financialDataflowValidation_1.isFinancialDataflowSortedUniqueStringsV1)(value.requestedResultKinds, RESULT_KINDS.size) &&
28
- value.requestedResultKinds.length > 0 &&
29
- value.requestedResultKinds.every(kind => RESULT_KINDS.has(kind));
52
+ (0, financialDataflowValidation_1.isFinancialDataflowIsoInstantV1)(value.requestedAt) &&
53
+ Array.isArray(value.requestedOutputs) &&
54
+ value.requestedOutputs.length > 0 &&
55
+ value.requestedOutputs.length <= MAX_REQUESTED_OUTPUTS &&
56
+ value.requestedOutputs.every(isRequestedOutput) &&
57
+ new Set(value.requestedOutputs.map(requestedOutputKey)).size === value.requestedOutputs.length;
30
58
  const canonicalizeFinancialAnalyticsJobRequestIdentityV1 = (value) => {
31
59
  if (!isJobRequestIdentity(value))
32
60
  throw new TypeError('Invalid FinancialAnalyticsJobRequestIdentityPreimageV1.');
33
- return (0, financialDataflowValidation_1.canonicalizeFinancialDataflowJsonV1)({ ...value, requestedResultKinds: [...value.requestedResultKinds].sort() });
61
+ return (0, financialDataflowValidation_1.canonicalizeFinancialDataflowJsonV1)({
62
+ ...value,
63
+ requestedOutputs: [...value.requestedOutputs].sort((left, right) => requestedOutputKey(left).localeCompare(requestedOutputKey(right))),
64
+ });
34
65
  };
35
66
  exports.canonicalizeFinancialAnalyticsJobRequestIdentityV1 = canonicalizeFinancialAnalyticsJobRequestIdentityV1;
36
67
  const createFinancialAnalyticsJobRequestIdV1 = (value) => `sha256:${(0, sha256_1.sha256Utf8)((0, exports.canonicalizeFinancialAnalyticsJobRequestIdentityV1)(value))}`;
37
68
  exports.createFinancialAnalyticsJobRequestIdV1 = createFinancialAnalyticsJobRequestIdV1;
69
+ /** Stable immutable output generation selected by one exact job output. */
70
+ const createFinancialAnalyticsOutputGenerationIdV1 = (requestId, output) => {
71
+ if (!(0, financialDataflowValidation_1.isFinancialDataflowHashV1)(requestId) || !isRequestedOutput(output)) {
72
+ throw new TypeError('Invalid financial analytics output generation identity.');
73
+ }
74
+ return `financial-analytics-${(0, sha256_1.sha256Utf8)((0, financialDataflowValidation_1.canonicalizeFinancialDataflowJsonV1)({
75
+ requestId,
76
+ resultKind: output.resultKind,
77
+ targetCoordinate: output.targetCoordinate,
78
+ }))}`;
79
+ };
80
+ exports.createFinancialAnalyticsOutputGenerationIdV1 = createFinancialAnalyticsOutputGenerationIdV1;
38
81
  const isFinancialAnalyticsJobRequestV1 = (value) => {
39
82
  if (!(0, financialDataflowValidation_1.isFinancialDataflowRecordV1)(value) ||
40
83
  !(0, financialDataflowValidation_1.hasFinancialDataflowExactFieldsV1)(value, [
@@ -46,13 +89,12 @@ const isFinancialAnalyticsJobRequestV1 = (value) => {
46
89
  'analyticsInputId',
47
90
  'inputGenerationId',
48
91
  'inputArtifactDigest',
49
- 'requestedResultKinds',
92
+ 'requestedOutputs',
50
93
  'requestedAt',
51
94
  ]))
52
95
  return false;
53
- const { requestId, requestedAt, ...identity } = value;
96
+ const { requestId, ...identity } = value;
54
97
  return ((0, financialDataflowValidation_1.isFinancialDataflowHashV1)(requestId) &&
55
- (0, financialDataflowValidation_1.isFinancialDataflowIsoInstantV1)(requestedAt) &&
56
98
  isJobRequestIdentity(identity) &&
57
99
  requestId === (0, exports.createFinancialAnalyticsJobRequestIdV1)(identity));
58
100
  };
@@ -65,13 +107,42 @@ const isFinancialAnalyticsJobRequestCompatibleV1 = (request, input, verifiedInpu
65
107
  request.coordinateId === (0, financialDataflowValidation_1.createFinancialDataflowCoordinateIdV1)(input.coordinate) &&
66
108
  request.analyticsInputId === input.analyticsInputId &&
67
109
  request.inputGenerationId === input.producerGenerationId &&
68
- request.inputArtifactDigest === verifiedInputArtifactDigest;
110
+ request.inputArtifactDigest === verifiedInputArtifactDigest &&
111
+ request.requestedOutputs.every(output => {
112
+ const current = output.currentSpendCompositionId === undefined
113
+ ? undefined
114
+ : input.referenceCompositions.find(composition => composition.compositionId === output.currentSpendCompositionId);
115
+ const comparison = output.comparisonSpendCompositionId === undefined
116
+ ? undefined
117
+ : input.referenceCompositions.find(composition => composition.compositionId === output.comparisonSpendCompositionId);
118
+ return (output.targetCoordinate.companyId === input.coordinate.companyId &&
119
+ output.targetCoordinate.provider === input.coordinate.provider &&
120
+ (0, financialDataflowValidation_1.canonicalizeFinancialDataflowJsonV1)(output.targetCoordinate.providerAccountRefs) ===
121
+ (0, financialDataflowValidation_1.canonicalizeFinancialDataflowJsonV1)(input.coordinate.providerAccountRefs) &&
122
+ (0, financialDataflowValidation_1.canonicalizeFinancialDataflowJsonV1)(output.targetCoordinate.scope) === (0, financialDataflowValidation_1.canonicalizeFinancialDataflowJsonV1)(input.coordinate.scope) &&
123
+ output.targetCoordinate.costBasis === input.coordinate.costBasis &&
124
+ output.targetCoordinate.estimateLens === input.coordinate.estimateLens &&
125
+ output.targetCoordinate.requestedCurrencyCode === input.coordinate.requestedCurrencyCode &&
126
+ (0, financialDataflowValidation_1.canonicalizeFinancialDataflowJsonV1)(output.targetCoordinate.accountingCurrency) ===
127
+ (0, financialDataflowValidation_1.canonicalizeFinancialDataflowJsonV1)(input.coordinate.accountingCurrency) &&
128
+ (current === undefined || current.coordinate.periodRole === 'current-spend') &&
129
+ (comparison === undefined || comparison.coordinate.periodRole === 'comparison') &&
130
+ (output.currentSpendCompositionId === undefined || current !== undefined) &&
131
+ (output.comparisonSpendCompositionId === undefined || comparison !== undefined) &&
132
+ current !== undefined &&
133
+ sameCoordinateWithRole(output.targetCoordinate, current.coordinate, 'current-spend') &&
134
+ (output.resultKind !== 'anomaly' || periodContains(input.coordinate, output.targetCoordinate)));
135
+ });
69
136
  exports.isFinancialAnalyticsJobRequestCompatibleV1 = isFinancialAnalyticsJobRequestCompatibleV1;
70
137
  const isCurrentPointerIdentity = (value) => (0, financialDataflowValidation_1.isFinancialDataflowRecordV1)(value) &&
71
138
  (0, financialDataflowValidation_1.hasFinancialDataflowExactFieldsV1)(value, [
72
139
  'schemaVersion',
73
140
  'contractVersion',
74
141
  'coordinateId',
142
+ 'resultKind',
143
+ 'sourceRequestId',
144
+ 'sourceRequestedAt',
145
+ 'analyticsInputId',
75
146
  'pointerRevision',
76
147
  'outputGenerationId',
77
148
  'analyticsProjectionId',
@@ -81,6 +152,11 @@ const isCurrentPointerIdentity = (value) => (0, financialDataflowValidation_1.is
81
152
  value.schemaVersion === 1 &&
82
153
  value.contractVersion === financialAnalyticsDelivery_1.FINANCIAL_ANALYTICS_CURRENT_POINTER_CONTRACT_VERSION_V1 &&
83
154
  (0, financialDataflowValidation_1.isFinancialDataflowHashV1)(value.coordinateId) &&
155
+ typeof value.resultKind === 'string' &&
156
+ RESULT_KINDS.has(value.resultKind) &&
157
+ (0, financialDataflowValidation_1.isFinancialDataflowHashV1)(value.sourceRequestId) &&
158
+ (0, financialDataflowValidation_1.isFinancialDataflowIsoInstantV1)(value.sourceRequestedAt) &&
159
+ (0, financialDataflowValidation_1.isFinancialDataflowHashV1)(value.analyticsInputId) &&
84
160
  Number.isSafeInteger(value.pointerRevision) &&
85
161
  Number(value.pointerRevision) > 0 &&
86
162
  (0, financialDataflowValidation_1.isFinancialDataflowIdentityV1)(value.outputGenerationId) &&
@@ -109,8 +185,112 @@ const isFinancialAnalyticsCurrentPointerCompatibleV1 = (pointer, projection, ver
109
185
  (0, financialAnalyticsValidation_1.isFinancialAnalyticsProjectionV1)(projection) &&
110
186
  (0, financialDataflowValidation_1.isFinancialDataflowHashV1)(verifiedProjectionArtifactDigest) &&
111
187
  pointer.coordinateId === (0, financialDataflowValidation_1.createFinancialDataflowCoordinateIdV1)(projection.coordinate) &&
188
+ pointer.resultKind === (projection.status === 'unavailable' ? projection.resultKind : projection.result.kind) &&
189
+ pointer.analyticsInputId === projection.analyticsInputId &&
112
190
  pointer.outputGenerationId === projection.outputGenerationId &&
113
191
  pointer.analyticsProjectionId === projection.analyticsProjectionId &&
114
192
  pointer.projectionArtifactDigest === verifiedProjectionArtifactDigest;
115
193
  exports.isFinancialAnalyticsCurrentPointerCompatibleV1 = isFinancialAnalyticsCurrentPointerCompatibleV1;
194
+ const isOutputManifestIdentity = (value) => (0, financialDataflowValidation_1.isFinancialDataflowRecordV1)(value) &&
195
+ (0, financialDataflowValidation_1.hasFinancialDataflowExactFieldsV1)(value, [
196
+ 'schemaVersion',
197
+ 'contractVersion',
198
+ 'coordinateId',
199
+ 'resultKind',
200
+ 'outputGenerationId',
201
+ 'analyticsProjectionId',
202
+ 'sourceRequestId',
203
+ 'analyticsInputId',
204
+ 'inputArtifactDigest',
205
+ 'projection',
206
+ 'publishedAt',
207
+ ]) &&
208
+ value.schemaVersion === 1 &&
209
+ value.contractVersion === financialAnalyticsDelivery_1.FINANCIAL_ANALYTICS_OUTPUT_MANIFEST_CONTRACT_VERSION_V1 &&
210
+ (0, financialDataflowValidation_1.isFinancialDataflowHashV1)(value.coordinateId) &&
211
+ typeof value.resultKind === 'string' &&
212
+ RESULT_KINDS.has(value.resultKind) &&
213
+ (0, financialDataflowValidation_1.isFinancialDataflowIdentityV1)(value.outputGenerationId) &&
214
+ (0, financialDataflowValidation_1.isFinancialDataflowHashV1)(value.analyticsProjectionId) &&
215
+ (0, financialDataflowValidation_1.isFinancialDataflowHashV1)(value.sourceRequestId) &&
216
+ (0, financialDataflowValidation_1.isFinancialDataflowHashV1)(value.analyticsInputId) &&
217
+ (0, financialDataflowValidation_1.isFinancialDataflowHashV1)(value.inputArtifactDigest) &&
218
+ (0, financialDataflowValidation_1.isFinancialDataflowJsonGzipArtifactDescriptorV1)(value.projection) &&
219
+ (0, financialDataflowValidation_1.isFinancialDataflowIsoInstantV1)(value.publishedAt);
220
+ const createFinancialAnalyticsOutputManifestDigestV1 = (value) => {
221
+ if (!isOutputManifestIdentity(value))
222
+ throw new TypeError('Invalid FinancialAnalyticsOutputManifestIdentityPreimageV1.');
223
+ return `sha256:${(0, sha256_1.sha256Utf8)((0, financialDataflowValidation_1.canonicalizeFinancialDataflowJsonV1)(value))}`;
224
+ };
225
+ exports.createFinancialAnalyticsOutputManifestDigestV1 = createFinancialAnalyticsOutputManifestDigestV1;
226
+ const isFinancialAnalyticsOutputManifestV1 = (value) => {
227
+ if (!(0, financialDataflowValidation_1.isFinancialDataflowRecordV1)(value) || !Object.prototype.hasOwnProperty.call(value, 'manifestDigest'))
228
+ return false;
229
+ const { manifestDigest, ...identity } = value;
230
+ try {
231
+ return ((0, financialDataflowValidation_1.isFinancialDataflowHashV1)(manifestDigest) &&
232
+ manifestDigest === (0, exports.createFinancialAnalyticsOutputManifestDigestV1)(identity));
233
+ }
234
+ catch {
235
+ return false;
236
+ }
237
+ };
238
+ exports.isFinancialAnalyticsOutputManifestV1 = isFinancialAnalyticsOutputManifestV1;
239
+ const isFinancialAnalyticsOutputManifestCompatibleV1 = (manifest, projection, verifiedProjectionArtifactDigest) => (0, exports.isFinancialAnalyticsOutputManifestV1)(manifest) &&
240
+ (0, financialAnalyticsValidation_1.isFinancialAnalyticsProjectionV1)(projection) &&
241
+ (0, financialDataflowValidation_1.isFinancialDataflowHashV1)(verifiedProjectionArtifactDigest) &&
242
+ manifest.coordinateId === (0, financialDataflowValidation_1.createFinancialDataflowCoordinateIdV1)(projection.coordinate) &&
243
+ manifest.resultKind === (projection.status === 'unavailable' ? projection.resultKind : projection.result.kind) &&
244
+ manifest.outputGenerationId === projection.outputGenerationId &&
245
+ manifest.analyticsProjectionId === projection.analyticsProjectionId &&
246
+ manifest.analyticsInputId === projection.analyticsInputId &&
247
+ manifest.publishedAt === projection.producedAt &&
248
+ manifest.projection.sha256 === verifiedProjectionArtifactDigest;
249
+ exports.isFinancialAnalyticsOutputManifestCompatibleV1 = isFinancialAnalyticsOutputManifestCompatibleV1;
250
+ const isBatchQueryItem = (value) => (0, financialDataflowValidation_1.isFinancialDataflowRecordV1)(value) &&
251
+ (0, financialDataflowValidation_1.hasFinancialDataflowExactFieldsV1)(value, ['coordinateId', 'resultKind']) &&
252
+ (0, financialDataflowValidation_1.isFinancialDataflowHashV1)(value.coordinateId) &&
253
+ typeof value.resultKind === 'string' &&
254
+ RESULT_KINDS.has(value.resultKind);
255
+ const batchQueryItemKey = (value) => `${value.coordinateId}\u0000${value.resultKind}`;
256
+ const isFinancialAnalyticsBatchQueryV1 = (value) => (0, financialDataflowValidation_1.isFinancialDataflowRecordV1)(value) &&
257
+ (0, financialDataflowValidation_1.hasFinancialDataflowExactFieldsV1)(value, ['schemaVersion', 'contractVersion', 'items']) &&
258
+ value.schemaVersion === 1 &&
259
+ value.contractVersion === financialAnalyticsDelivery_1.FINANCIAL_ANALYTICS_BATCH_QUERY_CONTRACT_VERSION_V1 &&
260
+ Array.isArray(value.items) &&
261
+ value.items.length > 0 &&
262
+ value.items.length <= MAX_BATCH_QUERY_ITEMS &&
263
+ value.items.every(isBatchQueryItem) &&
264
+ new Set(value.items.map(item => batchQueryItemKey(item))).size === value.items.length;
265
+ exports.isFinancialAnalyticsBatchQueryV1 = isFinancialAnalyticsBatchQueryV1;
266
+ const isFinancialAnalyticsBatchResponseV1 = (value) => (0, financialDataflowValidation_1.isFinancialDataflowRecordV1)(value) &&
267
+ (0, financialDataflowValidation_1.hasFinancialDataflowExactFieldsV1)(value, ['schemaVersion', 'contractVersion', 'results']) &&
268
+ value.schemaVersion === 1 &&
269
+ value.contractVersion === financialAnalyticsDelivery_1.FINANCIAL_ANALYTICS_BATCH_RESPONSE_CONTRACT_VERSION_V1 &&
270
+ Array.isArray(value.results) &&
271
+ value.results.length > 0 &&
272
+ value.results.length <= MAX_BATCH_QUERY_ITEMS &&
273
+ value.results.every(result => {
274
+ if (!(0, financialDataflowValidation_1.isFinancialDataflowRecordV1)(result) || !isBatchQueryItem(result))
275
+ return false;
276
+ if (result.status === 'unavailable') {
277
+ return (0, financialDataflowValidation_1.hasFinancialDataflowExactFieldsV1)(result, ['coordinateId', 'resultKind', 'status', 'reasonCode']) &&
278
+ result.reasonCode === 'not-produced';
279
+ }
280
+ return result.status === 'available' &&
281
+ (0, financialDataflowValidation_1.hasFinancialDataflowExactFieldsV1)(result, ['coordinateId', 'resultKind', 'status', 'projection']) &&
282
+ (0, financialAnalyticsValidation_1.isFinancialAnalyticsProjectionV1)(result.projection) &&
283
+ (0, financialDataflowValidation_1.createFinancialDataflowCoordinateIdV1)(result.projection.coordinate) === result.coordinateId &&
284
+ (result.projection.status === 'unavailable' ? result.projection.resultKind : result.projection.result.kind) === result.resultKind;
285
+ }) &&
286
+ new Set(value.results.map(result => batchQueryItemKey(result))).size === value.results.length;
287
+ exports.isFinancialAnalyticsBatchResponseV1 = isFinancialAnalyticsBatchResponseV1;
288
+ const isFinancialAnalyticsBatchResponseCompatibleV1 = (query, response) => (0, exports.isFinancialAnalyticsBatchQueryV1)(query) &&
289
+ (0, exports.isFinancialAnalyticsBatchResponseV1)(response) &&
290
+ query.items.length === response.results.length &&
291
+ query.items.every((item, index) => {
292
+ const result = response.results[index];
293
+ return result !== undefined && batchQueryItemKey(item) === batchQueryItemKey(result);
294
+ });
295
+ exports.isFinancialAnalyticsBatchResponseCompatibleV1 = isFinancialAnalyticsBatchResponseCompatibleV1;
116
296
  //# sourceMappingURL=financialAnalyticsDeliveryValidation.js.map