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

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 (206) hide show
  1. package/README.md +9 -0
  2. package/dist/accounts/accounts.d.ts +77 -4
  3. package/dist/accounts/accounts.d.ts.map +1 -1
  4. package/dist/accounts/accounts.js +2 -1
  5. package/dist/accounts/accounts.js.map +1 -1
  6. package/dist/accounts/azureManualOnboarding.d.ts +114 -0
  7. package/dist/accounts/azureManualOnboarding.d.ts.map +1 -0
  8. package/dist/accounts/azureManualOnboarding.js +12 -0
  9. package/dist/accounts/azureManualOnboarding.js.map +1 -0
  10. package/dist/accounts/azureSpSetup.d.ts +128 -31
  11. package/dist/accounts/azureSpSetup.d.ts.map +1 -1
  12. package/dist/accounts/azureSpSetup.js +15 -0
  13. package/dist/accounts/azureSpSetup.js.map +1 -1
  14. package/dist/accounts/azureSpSetupDurable.d.ts +8 -0
  15. package/dist/accounts/azureSpSetupDurable.d.ts.map +1 -1
  16. package/dist/accounts/azureSpSetupDurable.js +28 -0
  17. package/dist/accounts/azureSpSetupDurable.js.map +1 -1
  18. package/dist/accounts/index.d.ts +1 -0
  19. package/dist/accounts/index.d.ts.map +1 -1
  20. package/dist/accounts/index.js +1 -0
  21. package/dist/accounts/index.js.map +1 -1
  22. package/dist/accounts/readPermissions.d.ts +1 -1
  23. package/dist/accounts/readPermissions.d.ts.map +1 -1
  24. package/dist/accounts/readPermissions.js.map +1 -1
  25. package/dist/accounts/validation.d.ts +24 -0
  26. package/dist/accounts/validation.d.ts.map +1 -1
  27. package/dist/ai/index.d.ts +14 -1
  28. package/dist/ai/index.d.ts.map +1 -1
  29. package/dist/ai/index.js +12 -0
  30. package/dist/ai/index.js.map +1 -1
  31. package/dist/aws/commitments-planning.d.ts +5 -0
  32. package/dist/aws/commitments-planning.d.ts.map +1 -1
  33. package/dist/aws/commitments-planning.js +19 -0
  34. package/dist/aws/commitments-planning.js.map +1 -1
  35. package/dist/aws/estates.d.ts +1 -1
  36. package/dist/aws/estates.d.ts.map +1 -1
  37. package/dist/aws/estates.js +7 -1
  38. package/dist/aws/estates.js.map +1 -1
  39. package/dist/aws/index.d.ts +5 -0
  40. package/dist/aws/index.d.ts.map +1 -1
  41. package/dist/aws/index.js +5 -0
  42. package/dist/aws/index.js.map +1 -1
  43. package/dist/aws/onboarding.d.ts +3 -0
  44. package/dist/aws/onboarding.d.ts.map +1 -1
  45. package/dist/aws/organizationCommitments.d.ts +260 -0
  46. package/dist/aws/organizationCommitments.d.ts.map +1 -0
  47. package/dist/aws/organizationCommitments.js +53 -0
  48. package/dist/aws/organizationCommitments.js.map +1 -0
  49. package/dist/aws/organizationCommitmentsApiValidation.d.ts +21 -0
  50. package/dist/aws/organizationCommitmentsApiValidation.d.ts.map +1 -0
  51. package/dist/aws/organizationCommitmentsApiValidation.js +226 -0
  52. package/dist/aws/organizationCommitmentsApiValidation.js.map +1 -0
  53. package/dist/aws/organizationCommitmentsValidation.d.ts +12 -0
  54. package/dist/aws/organizationCommitmentsValidation.d.ts.map +1 -0
  55. package/dist/aws/organizationCommitmentsValidation.js +228 -0
  56. package/dist/aws/organizationCommitmentsValidation.js.map +1 -0
  57. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.d.ts +9 -0
  58. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.d.ts.map +1 -0
  59. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js +407 -0
  60. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js.map +1 -0
  61. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.d.ts +17 -0
  62. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.d.ts.map +1 -0
  63. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js +6 -0
  64. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js.map +1 -0
  65. package/dist/aws/requests.d.ts +13 -2
  66. package/dist/aws/requests.d.ts.map +1 -1
  67. package/dist/aws/requests.js +1 -1
  68. package/dist/aws/requests.js.map +1 -1
  69. package/dist/azure/commitmentsPlanning.d.ts +2 -2
  70. package/dist/azure/commitmentsPlanning.d.ts.map +1 -1
  71. package/dist/azure/financialAuthorityProjectionKernel.d.ts +7 -0
  72. package/dist/azure/financialAuthorityProjectionKernel.d.ts.map +1 -0
  73. package/dist/azure/financialAuthorityProjectionKernel.js +165 -0
  74. package/dist/azure/financialAuthorityProjectionKernel.js.map +1 -0
  75. package/dist/azure/financialAuthorityViewValidation.d.ts +3 -1
  76. package/dist/azure/financialAuthorityViewValidation.d.ts.map +1 -1
  77. package/dist/azure/financialAuthorityViewValidation.js +167 -2
  78. package/dist/azure/financialAuthorityViewValidation.js.map +1 -1
  79. package/dist/azure/financialChargeCompositionKernel.d.ts.map +1 -1
  80. package/dist/azure/financialChargeCompositionKernel.js +5 -1
  81. package/dist/azure/financialChargeCompositionKernel.js.map +1 -1
  82. package/dist/azure/financialDataflowKernel.d.ts.map +1 -1
  83. package/dist/azure/financialDataflowKernel.js +2 -1
  84. package/dist/azure/financialDataflowKernel.js.map +1 -1
  85. package/dist/azure/financialProjection.d.ts +11 -1
  86. package/dist/azure/financialProjection.d.ts.map +1 -1
  87. package/dist/azure/financialProjection.js.map +1 -1
  88. package/dist/azure/financialProjectionValidation.d.ts.map +1 -1
  89. package/dist/azure/financialProjectionValidation.js +43 -3
  90. package/dist/azure/financialProjectionValidation.js.map +1 -1
  91. package/dist/azure/financialSavingsAuthority.d.ts +25 -4
  92. package/dist/azure/financialSavingsAuthority.d.ts.map +1 -1
  93. package/dist/azure/financialSavingsAuthorityValidation.d.ts +6 -2
  94. package/dist/azure/financialSavingsAuthorityValidation.d.ts.map +1 -1
  95. package/dist/azure/financialSavingsAuthorityValidation.js +126 -2
  96. package/dist/azure/financialSavingsAuthorityValidation.js.map +1 -1
  97. package/dist/azure/financialSavingsCoordinateValidation.d.ts.map +1 -1
  98. package/dist/azure/financialSavingsCoordinateValidation.js +62 -19
  99. package/dist/azure/financialSavingsCoordinateValidation.js.map +1 -1
  100. package/dist/azure/financialSavingsSurfaceProjection.d.ts +58 -3
  101. package/dist/azure/financialSavingsSurfaceProjection.d.ts.map +1 -1
  102. package/dist/azure/financialSavingsSurfaceProjection.js +3 -1
  103. package/dist/azure/financialSavingsSurfaceProjection.js.map +1 -1
  104. package/dist/azure/financialSavingsSurfaceProjectionKernel.d.ts +14 -0
  105. package/dist/azure/financialSavingsSurfaceProjectionKernel.d.ts.map +1 -0
  106. package/dist/azure/financialSavingsSurfaceProjectionKernel.js +326 -0
  107. package/dist/azure/financialSavingsSurfaceProjectionKernel.js.map +1 -0
  108. package/dist/azure/financialSavingsSurfaceProjectionValidation.d.ts.map +1 -1
  109. package/dist/azure/financialSavingsSurfaceProjectionValidation.js +126 -12
  110. package/dist/azure/financialSavingsSurfaceProjectionValidation.js.map +1 -1
  111. package/dist/azure/financialScope.d.ts +2 -0
  112. package/dist/azure/financialScope.d.ts.map +1 -1
  113. package/dist/azure/financialScope.js +2 -0
  114. package/dist/azure/financialScope.js.map +1 -1
  115. package/dist/azure/governance.d.ts +145 -0
  116. package/dist/azure/governance.d.ts.map +1 -1
  117. package/dist/azure/governance.js +2 -1
  118. package/dist/azure/governance.js.map +1 -1
  119. package/dist/azure/payloads.d.ts +19 -0
  120. package/dist/azure/payloads.d.ts.map +1 -1
  121. package/dist/azure/recommendationState.d.ts +1 -1
  122. package/dist/azure/recommendationState.d.ts.map +1 -1
  123. package/dist/azure/recommendations.d.ts +3 -1
  124. package/dist/azure/recommendations.d.ts.map +1 -1
  125. package/dist/azure/serviceRetirement.d.ts +33 -2
  126. package/dist/azure/serviceRetirement.d.ts.map +1 -1
  127. package/dist/azure/subscriptions.d.ts +9 -0
  128. package/dist/azure/subscriptions.d.ts.map +1 -1
  129. package/dist/azure/views.d.ts +19 -1
  130. package/dist/azure/views.d.ts.map +1 -1
  131. package/dist/azure/views.js.map +1 -1
  132. package/dist/azure/vmPatchManagement.d.ts +109 -0
  133. package/dist/azure/vmPatchManagement.d.ts.map +1 -0
  134. package/dist/azure/vmPatchManagement.js +7 -0
  135. package/dist/azure/vmPatchManagement.js.map +1 -0
  136. package/dist/common/provider.d.ts +53 -0
  137. package/dist/common/provider.d.ts.map +1 -1
  138. package/dist/common/provider.js.map +1 -1
  139. package/dist/environment/canonicalization.d.ts +12 -0
  140. package/dist/environment/canonicalization.d.ts.map +1 -0
  141. package/dist/environment/canonicalization.js +40 -0
  142. package/dist/environment/canonicalization.js.map +1 -0
  143. package/dist/environment/contracts.d.ts +196 -0
  144. package/dist/environment/contracts.d.ts.map +1 -0
  145. package/dist/environment/contracts.js +21 -0
  146. package/dist/environment/contracts.js.map +1 -0
  147. package/dist/environment/index.d.ts +5 -0
  148. package/dist/environment/index.d.ts.map +1 -0
  149. package/dist/environment/index.js +21 -0
  150. package/dist/environment/index.js.map +1 -0
  151. package/dist/environment/internal.d.ts +21 -0
  152. package/dist/environment/internal.d.ts.map +1 -0
  153. package/dist/environment/internal.js +113 -0
  154. package/dist/environment/internal.js.map +1 -0
  155. package/dist/environment/references.d.ts +18 -0
  156. package/dist/environment/references.d.ts.map +1 -0
  157. package/dist/environment/references.js +206 -0
  158. package/dist/environment/references.js.map +1 -0
  159. package/dist/environment/validation.d.ts +28 -0
  160. package/dist/environment/validation.d.ts.map +1 -0
  161. package/dist/environment/validation.js +320 -0
  162. package/dist/environment/validation.js.map +1 -0
  163. package/dist/esm/accounts/accounts.js +1 -0
  164. package/dist/esm/accounts/azureManualOnboarding.js +8 -0
  165. package/dist/esm/accounts/azureSpSetup.js +14 -1
  166. package/dist/esm/accounts/azureSpSetupDurable.js +27 -1
  167. package/dist/esm/accounts/index.js +1 -0
  168. package/dist/esm/ai/index.js +10 -1
  169. package/dist/esm/aws/commitments-planning.js +5 -0
  170. package/dist/esm/aws/estates.js +7 -1
  171. package/dist/esm/aws/index.js +5 -0
  172. package/dist/esm/aws/organizationCommitments.js +48 -0
  173. package/dist/esm/aws/organizationCommitmentsApiValidation.js +220 -0
  174. package/dist/esm/aws/organizationCommitmentsValidation.js +224 -0
  175. package/dist/esm/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js +402 -0
  176. package/dist/esm/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js +2 -0
  177. package/dist/esm/aws/requests.js +1 -1
  178. package/dist/esm/azure/financialAuthorityProjectionKernel.js +159 -0
  179. package/dist/esm/azure/financialAuthorityViewValidation.js +165 -1
  180. package/dist/esm/azure/financialChargeCompositionKernel.js +5 -1
  181. package/dist/esm/azure/financialDataflowKernel.js +2 -1
  182. package/dist/esm/azure/financialProjectionValidation.js +43 -3
  183. package/dist/esm/azure/financialSavingsAuthorityValidation.js +124 -2
  184. package/dist/esm/azure/financialSavingsCoordinateValidation.js +62 -19
  185. package/dist/esm/azure/financialSavingsSurfaceProjection.js +2 -0
  186. package/dist/esm/azure/financialSavingsSurfaceProjectionKernel.js +318 -0
  187. package/dist/esm/azure/financialSavingsSurfaceProjectionValidation.js +126 -12
  188. package/dist/esm/azure/financialScope.js +2 -0
  189. package/dist/esm/azure/governance.js +1 -0
  190. package/dist/esm/azure/vmPatchManagement.js +3 -0
  191. package/dist/esm/entries/commitments-planning.js +2 -2
  192. package/dist/esm/entries/environment.js +3 -0
  193. package/dist/esm/environment/canonicalization.js +34 -0
  194. package/dist/esm/environment/contracts.js +17 -0
  195. package/dist/esm/environment/index.js +4 -0
  196. package/dist/esm/environment/internal.js +97 -0
  197. package/dist/esm/environment/references.js +194 -0
  198. package/dist/esm/environment/validation.js +303 -0
  199. package/dist/esm/index.js +2 -0
  200. package/dist/index.d.ts +2 -0
  201. package/dist/index.d.ts.map +1 -1
  202. package/dist/index.js +2 -0
  203. package/dist/index.js.map +1 -1
  204. package/dist/portfolio/portfolioOperations.d.ts +1 -1
  205. package/dist/portfolio/portfolioOperations.d.ts.map +1 -1
  206. package/package.json +14 -3
@@ -1,10 +1,29 @@
1
1
  import type { ArtifactGeneration } from '../common/artifactGeneration';
2
2
  import type { CostBasis, EstimateLens } from './costComposition';
3
- import type { FinancialBaselinePeriodV2 } from './financialScopeBaseline';
3
+ import type { FinancialBaselinePeriodV2, FinancialChargeInclusionPolicyRefV2 } from './financialScopeBaseline';
4
4
  import type { FinancialSavingsUnavailableReasonV1 } from './financialSavingsAuthority';
5
5
  export declare const FINANCIAL_SAVINGS_SURFACE_PROJECTION_SCHEMA_VERSION_V1: 1;
6
6
  export declare const FINANCIAL_SAVINGS_SURFACE_PROJECTION_CONTRACT_VERSION_V1: "financial-savings-surface-projection/v1";
7
- export type FinancialSavingsSurfaceV1 = 'recommendations' | 'dashboard';
7
+ export type FinancialSavingsSurfaceV1 = 'recommendations' | 'resources' | 'dashboard';
8
+ export declare const FINANCIAL_SAVINGS_QUERY_SELECTION_CONTRACT_VERSION_V1: "financial-savings-query-selection/v1";
9
+ /**
10
+ * Non-monetary query membership selected by an authorized transport. The UI
11
+ * Financial Domain applies this membership to a producer-owned full projection
12
+ * through the shared Kernel; the API never composes financial totals.
13
+ */
14
+ export interface FinancialSavingsQuerySelectionV1 {
15
+ contractVersion: typeof FINANCIAL_SAVINGS_QUERY_SELECTION_CONTRACT_VERSION_V1;
16
+ filterFingerprint: string;
17
+ recommendationIds: string[];
18
+ }
19
+ export declare const FINANCIAL_SAVINGS_RESOURCE_QUERY_SELECTION_CONTRACT_VERSION_V1: "financial-savings-resource-query-selection/v1";
20
+ /** Non-monetary canonical allocation membership selected by a resource query. */
21
+ export interface FinancialSavingsResourceQuerySelectionV1 {
22
+ contractVersion: typeof FINANCIAL_SAVINGS_RESOURCE_QUERY_SELECTION_CONTRACT_VERSION_V1;
23
+ filterFingerprint: string;
24
+ allocationIds: string[];
25
+ recommendationIds: string[];
26
+ }
8
27
  export type FinancialSavingsSurfaceScopeV1 = {
9
28
  kind: 'subscription-full';
10
29
  } | {
@@ -12,11 +31,38 @@ export type FinancialSavingsSurfaceScopeV1 = {
12
31
  filterFingerprint: string;
13
32
  /** Complete matched recommendation set before sorting and pagination. */
14
33
  recommendationIds: string[];
34
+ } | {
35
+ kind: 'resource-query';
36
+ filterFingerprint: string;
37
+ /** Complete canonical allocation set owned by matched resources before pagination. */
38
+ allocationIds: string[];
39
+ recommendationIds: string[];
15
40
  };
41
+ export interface FinancialSavingsAllocationContributionV1 {
42
+ allocationId: string;
43
+ savingsMinorUnits: number;
44
+ }
16
45
  export interface FinancialSavingsRecommendationContributionV1 {
17
46
  recommendationId: string;
18
47
  allocationIds: [string, ...string[]];
19
48
  savingsMinorUnits: number;
49
+ /**
50
+ * Exact allocation amounts retained so resource membership can be composed
51
+ * without approximation. Optional only for V1 projections produced before
52
+ * resource-query composition was introduced; resource-query projection
53
+ * fails closed when this evidence is absent.
54
+ */
55
+ allocations?: [FinancialSavingsAllocationContributionV1, ...FinancialSavingsAllocationContributionV1[]];
56
+ }
57
+ /**
58
+ * Non-monetary lifecycle membership retained with a full savings surface.
59
+ * It lets a reader invalidate an immutable projection when a resource-scoped
60
+ * recommendation changes state without reading or recomputing financial data.
61
+ */
62
+ export interface FinancialSavingsLifecycleBindingV1 {
63
+ resourceId: string;
64
+ recommendationId: string;
65
+ allocationIds: [string, ...string[]];
20
66
  }
21
67
  interface FinancialSavingsSurfaceCoordinateCommonV1 {
22
68
  /** Identity of the exact source Financial Authority coordinate. */
@@ -25,6 +71,8 @@ interface FinancialSavingsSurfaceCoordinateCommonV1 {
25
71
  period: FinancialBaselinePeriodV2;
26
72
  costBasis: CostBasis;
27
73
  estimateLens: EstimateLens;
74
+ /** Exact charge scope inherited from the current Financial Authority baseline. */
75
+ chargeInclusionPolicyRef: FinancialChargeInclusionPolicyRefV2;
28
76
  requestedCurrencyCode?: string;
29
77
  currentAggregateBaselineId?: string;
30
78
  }
@@ -44,11 +92,16 @@ export interface AvailableFinancialSavingsSurfaceCoordinateV1 extends FinancialS
44
92
  savingsMinorUnits: number;
45
93
  };
46
94
  }
95
+ /** Proven contributions retained while one or more in-scope scenarios lack target evidence. */
96
+ export interface PartialFinancialSavingsSurfaceCoordinateV1 extends Omit<AvailableFinancialSavingsSurfaceCoordinateV1, 'status'> {
97
+ status: 'partial';
98
+ unavailableRecommendationIds: [string, ...string[]];
99
+ }
47
100
  export interface UnavailableFinancialSavingsSurfaceCoordinateV1 extends FinancialSavingsSurfaceCoordinateCommonV1 {
48
101
  status: 'unavailable';
49
102
  unavailableReason: FinancialSavingsUnavailableReasonV1;
50
103
  }
51
- export type FinancialSavingsSurfaceCoordinateEnvelopeV1 = AvailableFinancialSavingsSurfaceCoordinateV1 | UnavailableFinancialSavingsSurfaceCoordinateV1;
104
+ export type FinancialSavingsSurfaceCoordinateEnvelopeV1 = AvailableFinancialSavingsSurfaceCoordinateV1 | PartialFinancialSavingsSurfaceCoordinateV1 | UnavailableFinancialSavingsSurfaceCoordinateV1;
52
105
  export interface FinancialSavingsSurfaceProjectionV1 {
53
106
  schemaVersion: typeof FINANCIAL_SAVINGS_SURFACE_PROJECTION_SCHEMA_VERSION_V1;
54
107
  contractVersion: typeof FINANCIAL_SAVINGS_SURFACE_PROJECTION_CONTRACT_VERSION_V1;
@@ -60,6 +113,8 @@ export interface FinancialSavingsSurfaceProjectionV1 {
60
113
  artifactGeneration: ArtifactGeneration;
61
114
  financialAuthorityId: string;
62
115
  savingsAuthorityId: string;
116
+ /** Optional for pre-binding V1 artifacts; readers fail savings closed when required evidence is absent. */
117
+ lifecycleBindings?: [FinancialSavingsLifecycleBindingV1, ...FinancialSavingsLifecycleBindingV1[]];
63
118
  coordinates: [FinancialSavingsSurfaceCoordinateEnvelopeV1, ...FinancialSavingsSurfaceCoordinateEnvelopeV1[]];
64
119
  }
65
120
  export type FinancialSavingsSurfaceProjectionIdentityPreimageV1 = Omit<FinancialSavingsSurfaceProjectionV1, 'projectionId'>;
@@ -1 +1 @@
1
- {"version":3,"file":"financialSavingsSurfaceProjection.d.ts","sourceRoot":"","sources":["../../src/azure/financialSavingsSurfaceProjection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,6BAA6B,CAAC;AAEvF,eAAO,MAAM,sDAAsD,EAAG,CAAU,CAAC;AACjF,eAAO,MAAM,wDAAwD,EAAG,yCAAkD,CAAC;AAE3H,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,GAAG,WAAW,CAAC;AAExE,MAAM,MAAM,8BAA8B,GACtC;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IACE,IAAI,EAAE,sBAAsB,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,4CAA4C;IAC3D,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACrC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,yCAAyC;IACjD,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,SAAS,GAAG,UAAU,CAAC;IACnC,MAAM,EAAE,yBAAyB,CAAC;IAClC,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,4CAA6C,SAAQ,yCAAyC;IAC7G,MAAM,EAAE,WAAW,CAAC;IACpB,0BAA0B,EAAE,MAAM,CAAC;IACnC,gBAAgB,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,qBAAqB,CAAC;IACpC,2BAA2B,EAAE,4CAA4C,EAAE,CAAC;IAC5E,SAAS,EAAE;QACT,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,8CAA+C,SAAQ,yCAAyC;IAC/G,MAAM,EAAE,aAAa,CAAC;IACtB,iBAAiB,EAAE,mCAAmC,CAAC;CACxD;AAED,MAAM,MAAM,2CAA2C,GACnD,4CAA4C,GAC5C,8CAA8C,CAAC;AAEnD,MAAM,WAAW,mCAAmC;IAClD,aAAa,EAAE,OAAO,sDAAsD,CAAC;IAC7E,eAAe,EAAE,OAAO,wDAAwD,CAAC;IACjF,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,yBAAyB,CAAC;IACnC,KAAK,EAAE,8BAA8B,CAAC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,mBAAmB,EAAE,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC3C,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,CAAC,2CAA2C,EAAE,GAAG,2CAA2C,EAAE,CAAC,CAAC;CAC9G;AAED,MAAM,MAAM,mDAAmD,GAAG,IAAI,CAAC,mCAAmC,EAAE,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"financialSavingsSurfaceProjection.d.ts","sourceRoot":"","sources":["../../src/azure/financialSavingsSurfaceProjection.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FINANCIAL_SAVINGS_SURFACE_PROJECTION_CONTRACT_VERSION_V1 = exports.FINANCIAL_SAVINGS_SURFACE_PROJECTION_SCHEMA_VERSION_V1 = void 0;
3
+ exports.FINANCIAL_SAVINGS_RESOURCE_QUERY_SELECTION_CONTRACT_VERSION_V1 = exports.FINANCIAL_SAVINGS_QUERY_SELECTION_CONTRACT_VERSION_V1 = exports.FINANCIAL_SAVINGS_SURFACE_PROJECTION_CONTRACT_VERSION_V1 = exports.FINANCIAL_SAVINGS_SURFACE_PROJECTION_SCHEMA_VERSION_V1 = void 0;
4
4
  exports.FINANCIAL_SAVINGS_SURFACE_PROJECTION_SCHEMA_VERSION_V1 = 1;
5
5
  exports.FINANCIAL_SAVINGS_SURFACE_PROJECTION_CONTRACT_VERSION_V1 = 'financial-savings-surface-projection/v1';
6
+ exports.FINANCIAL_SAVINGS_QUERY_SELECTION_CONTRACT_VERSION_V1 = 'financial-savings-query-selection/v1';
7
+ exports.FINANCIAL_SAVINGS_RESOURCE_QUERY_SELECTION_CONTRACT_VERSION_V1 = 'financial-savings-resource-query-selection/v1';
6
8
  //# sourceMappingURL=financialSavingsSurfaceProjection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"financialSavingsSurfaceProjection.js","sourceRoot":"","sources":["../../src/azure/financialSavingsSurfaceProjection.ts"],"names":[],"mappings":";;;AAKa,QAAA,sDAAsD,GAAG,CAAU,CAAC;AACpE,QAAA,wDAAwD,GAAG,yCAAkD,CAAC"}
1
+ {"version":3,"file":"financialSavingsSurfaceProjection.js","sourceRoot":"","sources":["../../src/azure/financialSavingsSurfaceProjection.ts"],"names":[],"mappings":";;;AAKa,QAAA,sDAAsD,GAAG,CAAU,CAAC;AACpE,QAAA,wDAAwD,GAAG,yCAAkD,CAAC;AAI9G,QAAA,qDAAqD,GAAG,sCAA+C,CAAC;AAaxG,QAAA,8DAA8D,GACzE,+CAAwD,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { AzureResourcesView } from './views';
2
+ import { type FinancialSavingsSurfaceProjectionV1, type FinancialSavingsSurfaceV1 } from './financialSavingsSurfaceProjection';
3
+ export declare class FinancialSavingsSurfaceProjectionError extends Error {
4
+ constructor(message: string);
5
+ }
6
+ export declare const projectFinancialSavingsSurfaceQueryV1: (source: FinancialSavingsSurfaceProjectionV1, recommendationIds: readonly string[], filterFingerprint: string) => FinancialSavingsSurfaceProjectionV1;
7
+ export declare const projectFinancialSavingsSurfaceResourceQueryV1: (source: FinancialSavingsSurfaceProjectionV1, allocationIds: readonly string[], recommendationIds: readonly string[], filterFingerprint: string) => FinancialSavingsSurfaceProjectionV1;
8
+ /**
9
+ * Projects a validated Resources authority into a compact, immutable surface.
10
+ * It partitions canonical allocation amounts for display and never recalculates
11
+ * scenario economics from legacy recommendation or resource fields.
12
+ */
13
+ export declare const buildFinancialSavingsSurfaceProjectionV1: (resourcesView: AzureResourcesView, surface: FinancialSavingsSurfaceV1) => FinancialSavingsSurfaceProjectionV1;
14
+ //# sourceMappingURL=financialSavingsSurfaceProjectionKernel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"financialSavingsSurfaceProjectionKernel.d.ts","sourceRoot":"","sources":["../../src/azure/financialSavingsSurfaceProjectionKernel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAOL,KAAK,mCAAmC,EAExC,KAAK,yBAAyB,EAC/B,MAAM,qCAAqC,CAAC;AAM7C,qBAAa,sCAAuC,SAAQ,KAAK;gBAC5C,OAAO,EAAE,MAAM;CAInC;AAwCD,eAAO,MAAM,qCAAqC,GAChD,QAAQ,mCAAmC,EAC3C,mBAAmB,SAAS,MAAM,EAAE,EACpC,mBAAmB,MAAM,KACxB,mCAqEF,CAAC;AAkCF,eAAO,MAAM,6CAA6C,GACxD,QAAQ,mCAAmC,EAC3C,eAAe,SAAS,MAAM,EAAE,EAChC,mBAAmB,SAAS,MAAM,EAAE,EACpC,mBAAmB,MAAM,KACxB,mCA8FF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wCAAwC,GACnD,eAAe,kBAAkB,EACjC,SAAS,yBAAyB,KACjC,mCAoHF,CAAC"}
@@ -0,0 +1,326 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildFinancialSavingsSurfaceProjectionV1 = exports.projectFinancialSavingsSurfaceResourceQueryV1 = exports.projectFinancialSavingsSurfaceQueryV1 = exports.FinancialSavingsSurfaceProjectionError = void 0;
4
+ const financialChargeComposition_1 = require("./financialChargeComposition");
5
+ const financialSavingsSurfaceProjection_1 = require("./financialSavingsSurfaceProjection");
6
+ const financialSavingsSurfaceProjectionValidation_1 = require("./financialSavingsSurfaceProjectionValidation");
7
+ class FinancialSavingsSurfaceProjectionError extends Error {
8
+ constructor(message) {
9
+ super(message);
10
+ this.name = 'FinancialSavingsSurfaceProjectionError';
11
+ }
12
+ }
13
+ exports.FinancialSavingsSurfaceProjectionError = FinancialSavingsSurfaceProjectionError;
14
+ const sameGeneration = (left, right) => Boolean(left && right && left.runId === right.runId && left.generatedAt === right.generatedAt);
15
+ const exactMinorUnitSum = (values) => {
16
+ const sum = values.reduce((total, value) => total + BigInt(value), 0n);
17
+ if (sum > BigInt(Number.MAX_SAFE_INTEGER) || sum < BigInt(Number.MIN_SAFE_INTEGER)) {
18
+ throw new FinancialSavingsSurfaceProjectionError('Financial savings surface contribution exceeds the safe integer boundary');
19
+ }
20
+ return Number(sum);
21
+ };
22
+ const projectLifecycleBindings = (allocations) => {
23
+ const byLifecycleIdentity = new Map();
24
+ for (const allocation of allocations) {
25
+ const key = `${allocation.ownerScopeId}\u0000${allocation.recommendationId}`;
26
+ const existing = byLifecycleIdentity.get(key);
27
+ if (existing) {
28
+ existing.allocationIds.push(allocation.allocationId);
29
+ continue;
30
+ }
31
+ byLifecycleIdentity.set(key, {
32
+ resourceId: allocation.ownerScopeId,
33
+ recommendationId: allocation.recommendationId,
34
+ allocationIds: [allocation.allocationId],
35
+ });
36
+ }
37
+ return [...byLifecycleIdentity.values()]
38
+ .map(binding => ({ ...binding, allocationIds: [...binding.allocationIds].sort() }))
39
+ .sort((left, right) => left.resourceId.localeCompare(right.resourceId) || left.recommendationId.localeCompare(right.recommendationId));
40
+ };
41
+ const projectFinancialSavingsSurfaceQueryV1 = (source, recommendationIds, filterFingerprint) => {
42
+ if (!(0, financialSavingsSurfaceProjectionValidation_1.isFinancialSavingsSurfaceProjectionV1)(source) || source.surface !== 'recommendations') {
43
+ throw new FinancialSavingsSurfaceProjectionError('Financial savings source projection is invalid for recommendation filtering');
44
+ }
45
+ const uniqueRecommendationIds = [...new Set(recommendationIds)];
46
+ if (uniqueRecommendationIds.length !== recommendationIds.length ||
47
+ uniqueRecommendationIds.some(id => !id.trim()) ||
48
+ !filterFingerprint.trim()) {
49
+ throw new FinancialSavingsSurfaceProjectionError('Financial savings query identity is invalid');
50
+ }
51
+ const scope = {
52
+ kind: 'recommendation-query',
53
+ filterFingerprint,
54
+ recommendationIds: uniqueRecommendationIds,
55
+ };
56
+ const includedRecommendationIds = new Set(uniqueRecommendationIds);
57
+ const lifecycleBindings = source.lifecycleBindings
58
+ ?.filter(binding => includedRecommendationIds.has(binding.recommendationId))
59
+ .map(binding => ({ ...binding, allocationIds: [...binding.allocationIds] }));
60
+ const coordinates = source.coordinates.map((coordinate) => {
61
+ if (coordinate.status === 'unavailable')
62
+ return coordinate;
63
+ const recommendationContributions = coordinate.recommendationContributions.filter(contribution => includedRecommendationIds.has(contribution.recommendationId));
64
+ const filteredAmounts = {
65
+ recommendationContributions,
66
+ aggregate: {
67
+ allocationIds: recommendationContributions.flatMap(contribution => contribution.allocationIds),
68
+ savingsMinorUnits: exactMinorUnitSum(recommendationContributions.map(contribution => contribution.savingsMinorUnits)),
69
+ },
70
+ };
71
+ if (coordinate.status === 'available')
72
+ return { ...coordinate, ...filteredAmounts };
73
+ const { unavailableRecommendationIds: _sourceUnavailableRecommendationIds, ...common } = coordinate;
74
+ void _sourceUnavailableRecommendationIds;
75
+ const unavailableRecommendationIds = coordinate.unavailableRecommendationIds.filter(recommendationId => includedRecommendationIds.has(recommendationId));
76
+ return unavailableRecommendationIds.length > 0
77
+ ? {
78
+ ...common,
79
+ ...filteredAmounts,
80
+ status: 'partial',
81
+ unavailableRecommendationIds: unavailableRecommendationIds,
82
+ }
83
+ : { ...common, ...filteredAmounts, status: 'available' };
84
+ });
85
+ const identity = {
86
+ schemaVersion: source.schemaVersion,
87
+ contractVersion: source.contractVersion,
88
+ surface: source.surface,
89
+ scope,
90
+ provider: source.provider,
91
+ providerAccountRefs: source.providerAccountRefs,
92
+ artifactGeneration: source.artifactGeneration,
93
+ financialAuthorityId: source.financialAuthorityId,
94
+ savingsAuthorityId: source.savingsAuthorityId,
95
+ ...(lifecycleBindings?.length ? { lifecycleBindings: lifecycleBindings } : {}),
96
+ coordinates,
97
+ };
98
+ const projection = {
99
+ ...identity,
100
+ projectionId: (0, financialSavingsSurfaceProjectionValidation_1.createFinancialSavingsSurfaceProjectionIdV1)(identity),
101
+ };
102
+ if (!(0, financialSavingsSurfaceProjectionValidation_1.isFinancialSavingsSurfaceProjectionV1)(projection)) {
103
+ throw new FinancialSavingsSurfaceProjectionError('Financial savings query projection failed validation');
104
+ }
105
+ return projection;
106
+ };
107
+ exports.projectFinancialSavingsSurfaceQueryV1 = projectFinancialSavingsSurfaceQueryV1;
108
+ const projectRecommendationContributions = (allocations) => {
109
+ const byRecommendation = new Map();
110
+ for (const allocation of allocations) {
111
+ const existing = byRecommendation.get(allocation.recommendationId) ?? {
112
+ allocationIds: [],
113
+ savingsMinorUnits: [],
114
+ allocations: [],
115
+ };
116
+ existing.allocationIds.push(allocation.allocationId);
117
+ existing.savingsMinorUnits.push(allocation.savingsMinorUnits);
118
+ existing.allocations.push({ allocationId: allocation.allocationId, savingsMinorUnits: allocation.savingsMinorUnits });
119
+ byRecommendation.set(allocation.recommendationId, existing);
120
+ }
121
+ return Array.from(byRecommendation.entries())
122
+ .sort(([left], [right]) => left.localeCompare(right))
123
+ .map(([recommendationId, contribution]) => ({
124
+ recommendationId,
125
+ allocationIds: [...contribution.allocationIds].sort(),
126
+ savingsMinorUnits: exactMinorUnitSum(contribution.savingsMinorUnits),
127
+ allocations: contribution.allocations
128
+ .sort((left, right) => left.allocationId.localeCompare(right.allocationId)),
129
+ }));
130
+ };
131
+ const projectFinancialSavingsSurfaceResourceQueryV1 = (source, allocationIds, recommendationIds, filterFingerprint) => {
132
+ if (!(0, financialSavingsSurfaceProjectionValidation_1.isFinancialSavingsSurfaceProjectionV1)(source) || source.surface !== 'resources') {
133
+ throw new FinancialSavingsSurfaceProjectionError('Financial savings source projection is invalid for resource filtering');
134
+ }
135
+ const uniqueAllocationIds = [...new Set(allocationIds)];
136
+ const uniqueRecommendationIds = [...new Set(recommendationIds)];
137
+ if (uniqueAllocationIds.length !== allocationIds.length ||
138
+ uniqueRecommendationIds.length !== recommendationIds.length ||
139
+ uniqueAllocationIds.some(id => !id.trim()) ||
140
+ uniqueRecommendationIds.some(id => !id.trim()) ||
141
+ !filterFingerprint.trim()) {
142
+ throw new FinancialSavingsSurfaceProjectionError('Financial savings resource query identity is invalid');
143
+ }
144
+ const includedAllocationIds = new Set(uniqueAllocationIds);
145
+ const includedRecommendationIds = new Set(uniqueRecommendationIds);
146
+ const lifecycleBindings = source.lifecycleBindings
147
+ ?.map(binding => {
148
+ const filteredAllocationIds = binding.allocationIds.filter(allocationId => includedAllocationIds.has(allocationId));
149
+ return filteredAllocationIds.length
150
+ ? {
151
+ ...binding,
152
+ allocationIds: filteredAllocationIds,
153
+ }
154
+ : undefined;
155
+ })
156
+ .filter((binding) => binding !== undefined);
157
+ const scope = {
158
+ kind: 'resource-query',
159
+ filterFingerprint,
160
+ allocationIds: uniqueAllocationIds,
161
+ recommendationIds: uniqueRecommendationIds,
162
+ };
163
+ const coordinates = source.coordinates.map((coordinate) => {
164
+ if (coordinate.status === 'unavailable')
165
+ return coordinate;
166
+ const recommendationContributions = coordinate.recommendationContributions
167
+ .map(contribution => {
168
+ if (contribution.allocations === undefined) {
169
+ throw new FinancialSavingsSurfaceProjectionError('Financial savings resource query requires exact allocation contribution evidence');
170
+ }
171
+ const allocations = contribution.allocations.filter(allocation => includedAllocationIds.has(allocation.allocationId));
172
+ if (allocations.length === 0)
173
+ return undefined;
174
+ return {
175
+ recommendationId: contribution.recommendationId,
176
+ allocationIds: allocations.map(allocation => allocation.allocationId),
177
+ allocations: allocations,
178
+ savingsMinorUnits: exactMinorUnitSum(allocations.map(allocation => allocation.savingsMinorUnits)),
179
+ };
180
+ })
181
+ .filter((contribution) => contribution !== undefined);
182
+ const filteredAmounts = {
183
+ recommendationContributions,
184
+ aggregate: {
185
+ allocationIds: recommendationContributions.flatMap(contribution => contribution.allocationIds),
186
+ savingsMinorUnits: exactMinorUnitSum(recommendationContributions.map(contribution => contribution.savingsMinorUnits)),
187
+ },
188
+ };
189
+ if (coordinate.status === 'available')
190
+ return { ...coordinate, ...filteredAmounts };
191
+ const { unavailableRecommendationIds: _sourceUnavailableRecommendationIds, ...common } = coordinate;
192
+ void _sourceUnavailableRecommendationIds;
193
+ const unavailableRecommendationIds = coordinate.unavailableRecommendationIds.filter(id => includedRecommendationIds.has(id));
194
+ return unavailableRecommendationIds.length > 0
195
+ ? {
196
+ ...common,
197
+ ...filteredAmounts,
198
+ status: 'partial',
199
+ unavailableRecommendationIds: unavailableRecommendationIds,
200
+ }
201
+ : { ...common, ...filteredAmounts, status: 'available' };
202
+ });
203
+ const identity = {
204
+ schemaVersion: source.schemaVersion,
205
+ contractVersion: source.contractVersion,
206
+ surface: source.surface,
207
+ scope,
208
+ provider: source.provider,
209
+ providerAccountRefs: source.providerAccountRefs,
210
+ artifactGeneration: source.artifactGeneration,
211
+ financialAuthorityId: source.financialAuthorityId,
212
+ savingsAuthorityId: source.savingsAuthorityId,
213
+ ...(lifecycleBindings?.length ? { lifecycleBindings: lifecycleBindings } : {}),
214
+ coordinates,
215
+ };
216
+ const projection = { ...identity, projectionId: (0, financialSavingsSurfaceProjectionValidation_1.createFinancialSavingsSurfaceProjectionIdV1)(identity) };
217
+ if (!(0, financialSavingsSurfaceProjectionValidation_1.isFinancialSavingsSurfaceProjectionV1)(projection)) {
218
+ throw new FinancialSavingsSurfaceProjectionError('Financial savings resource query projection failed validation');
219
+ }
220
+ return projection;
221
+ };
222
+ exports.projectFinancialSavingsSurfaceResourceQueryV1 = projectFinancialSavingsSurfaceResourceQueryV1;
223
+ /**
224
+ * Projects a validated Resources authority into a compact, immutable surface.
225
+ * It partitions canonical allocation amounts for display and never recalculates
226
+ * scenario economics from legacy recommendation or resource fields.
227
+ */
228
+ const buildFinancialSavingsSurfaceProjectionV1 = (resourcesView, surface) => {
229
+ const authority = resourcesView.financialAuthority;
230
+ const savingsAuthority = resourcesView.financialSavingsAuthority;
231
+ if (!authority || !savingsAuthority)
232
+ throw new FinancialSavingsSurfaceProjectionError('Financial savings authority is unavailable');
233
+ if (authority.authorityId !== savingsAuthority.financialAuthorityId ||
234
+ !sameGeneration(resourcesView.artifactGeneration, authority.artifactGeneration) ||
235
+ !sameGeneration(authority.artifactGeneration, savingsAuthority.artifactGeneration)) {
236
+ throw new FinancialSavingsSurfaceProjectionError('Financial savings authority generation or identity binding is invalid');
237
+ }
238
+ const financialCoordinateById = new Map(authority.coordinates.map(coordinate => [coordinate.coordinateId, coordinate]));
239
+ const savingsCoordinateById = new Map(savingsAuthority.coordinates.map(coordinate => [coordinate.coordinateId, coordinate]));
240
+ if (financialCoordinateById.size !== authority.coordinates.length ||
241
+ savingsCoordinateById.size !== savingsAuthority.coordinates.length ||
242
+ financialCoordinateById.size !== savingsCoordinateById.size ||
243
+ Array.from(financialCoordinateById.keys()).some(coordinateId => !savingsCoordinateById.has(coordinateId))) {
244
+ throw new FinancialSavingsSurfaceProjectionError('Financial savings coordinates are not one-to-one with financial authority coordinates');
245
+ }
246
+ const coordinates = authority.coordinates.map((financialCoordinate) => {
247
+ const savingsCoordinate = savingsCoordinateById.get(financialCoordinate.coordinateId);
248
+ if (!savingsCoordinate) {
249
+ throw new FinancialSavingsSurfaceProjectionError(`Financial savings coordinate ${financialCoordinate.coordinateId} is missing`);
250
+ }
251
+ const common = {
252
+ coordinateId: financialCoordinate.coordinateId,
253
+ periodRole: financialCoordinate.periodRole,
254
+ period: financialCoordinate.period,
255
+ costBasis: financialCoordinate.costBasis,
256
+ estimateLens: financialCoordinate.estimateLens,
257
+ chargeInclusionPolicyRef: financialChargeComposition_1.AZURE_BILLED_ALL_CHARGES_POLICY_V1.policyRef,
258
+ ...(financialCoordinate.requestedCurrencyCode === undefined
259
+ ? {}
260
+ : { requestedCurrencyCode: financialCoordinate.requestedCurrencyCode }),
261
+ ...(savingsCoordinate.currentAggregateBaselineId === undefined
262
+ ? {}
263
+ : { currentAggregateBaselineId: savingsCoordinate.currentAggregateBaselineId }),
264
+ };
265
+ if (savingsCoordinate.status === 'unavailable') {
266
+ return { ...common, status: 'unavailable', unavailableReason: savingsCoordinate.unavailableReason };
267
+ }
268
+ const currentAggregate = financialCoordinate.aggregateBaseline;
269
+ if (currentAggregate.status !== 'available' ||
270
+ currentAggregate.baselineId !== savingsCoordinate.currentAggregateBaselineId ||
271
+ currentAggregate.total.currencyCode !== savingsCoordinate.accountingCurrencyCode) {
272
+ throw new FinancialSavingsSurfaceProjectionError(`Financial savings coordinate ${financialCoordinate.coordinateId} has no matching available current aggregate baseline`);
273
+ }
274
+ const unavailableRecommendationIds = savingsCoordinate.status === 'partial'
275
+ ? Array.from(new Set(savingsCoordinate.activations
276
+ .filter(activation => activation.result === 'unavailable')
277
+ .map(activation => activation.recommendationId))).sort()
278
+ : [];
279
+ const composed = {
280
+ ...common,
281
+ currentAggregateBaselineId: savingsCoordinate.currentAggregateBaselineId,
282
+ currentAggregate: { ...currentAggregate.total },
283
+ accountingCurrencyCode: savingsCoordinate.accountingCurrencyCode,
284
+ minorUnitScale: savingsCoordinate.minorUnitScale,
285
+ roundingMode: savingsCoordinate.roundingMode,
286
+ recommendationContributions: projectRecommendationContributions(savingsCoordinate.allocations),
287
+ aggregate: {
288
+ allocationIds: [...savingsCoordinate.aggregate.allocationIds],
289
+ savingsMinorUnits: savingsCoordinate.aggregate.savingsMinorUnits,
290
+ },
291
+ };
292
+ return savingsCoordinate.status === 'partial'
293
+ ? {
294
+ ...composed,
295
+ status: 'partial',
296
+ unavailableRecommendationIds: unavailableRecommendationIds,
297
+ }
298
+ : { ...composed, status: 'available' };
299
+ });
300
+ const lifecycleBindings = projectLifecycleBindings(savingsAuthority.coordinates.flatMap(coordinate => (coordinate.status === 'unavailable' ? [] : coordinate.allocations)));
301
+ const identity = {
302
+ schemaVersion: financialSavingsSurfaceProjection_1.FINANCIAL_SAVINGS_SURFACE_PROJECTION_SCHEMA_VERSION_V1,
303
+ contractVersion: financialSavingsSurfaceProjection_1.FINANCIAL_SAVINGS_SURFACE_PROJECTION_CONTRACT_VERSION_V1,
304
+ surface,
305
+ scope: { kind: 'subscription-full' },
306
+ provider: 'azure',
307
+ providerAccountRefs: [...authority.providerAccountRefs],
308
+ artifactGeneration: { ...authority.artifactGeneration },
309
+ financialAuthorityId: authority.authorityId,
310
+ savingsAuthorityId: savingsAuthority.savingsAuthorityId,
311
+ ...(lifecycleBindings.length
312
+ ? { lifecycleBindings: lifecycleBindings }
313
+ : {}),
314
+ coordinates,
315
+ };
316
+ const projection = {
317
+ ...identity,
318
+ projectionId: (0, financialSavingsSurfaceProjectionValidation_1.createFinancialSavingsSurfaceProjectionIdV1)(identity),
319
+ };
320
+ if (!(0, financialSavingsSurfaceProjectionValidation_1.isFinancialSavingsSurfaceProjectionV1)(projection)) {
321
+ throw new FinancialSavingsSurfaceProjectionError('Financial savings surface projection failed validation');
322
+ }
323
+ return projection;
324
+ };
325
+ exports.buildFinancialSavingsSurfaceProjectionV1 = buildFinancialSavingsSurfaceProjectionV1;
326
+ //# sourceMappingURL=financialSavingsSurfaceProjectionKernel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"financialSavingsSurfaceProjectionKernel.js","sourceRoot":"","sources":["../../src/azure/financialSavingsSurfaceProjectionKernel.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"financialSavingsSurfaceProjectionValidation.d.ts","sourceRoot":"","sources":["../../src/azure/financialSavingsSurfaceProjectionValidation.ts"],"names":[],"mappings":"AAYA,OAAO,EAGL,KAAK,mDAAmD,EACxD,KAAK,mCAAmC,EACzC,MAAM,qCAAqC,CAAC;AAiB7C,eAAO,MAAM,uDAAuD,GAAI,OAAO,mDAAmD,KAAG,MAqBlI,CAAC;AAEJ,eAAO,MAAM,2CAA2C,GAAI,OAAO,mDAAmD,KAAG,MACjC,CAAC;AA+GzF,eAAO,MAAM,qCAAqC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,mCAuD/E,CAAC"}
1
+ {"version":3,"file":"financialSavingsSurfaceProjectionValidation.d.ts","sourceRoot":"","sources":["../../src/azure/financialSavingsSurfaceProjectionValidation.ts"],"names":[],"mappings":"AAYA,OAAO,EAGL,KAAK,mDAAmD,EACxD,KAAK,mCAAmC,EACzC,MAAM,qCAAqC,CAAC;AAkB7C,eAAO,MAAM,uDAAuD,GAAI,OAAO,mDAAmD,KAAG,MAiDlI,CAAC;AAEJ,eAAO,MAAM,2CAA2C,GAAI,OAAO,mDAAmD,KAAG,MACjC,CAAC;AA0LzF,eAAO,MAAM,qCAAqC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,mCAyF/E,CAAC"}