@spottoai/types-package 1.0.2-beta.412 → 1.0.2-beta.414

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 (50) hide show
  1. package/dist/azure/recommendations.d.ts +54 -0
  2. package/dist/azure/recommendations.d.ts.map +1 -1
  3. package/dist/azure/recommendations.js.map +1 -1
  4. package/dist/azure/reportDailySpend.d.ts +48 -0
  5. package/dist/azure/reportDailySpend.d.ts.map +1 -0
  6. package/dist/azure/reportDailySpend.js +6 -0
  7. package/dist/azure/reportDailySpend.js.map +1 -0
  8. package/dist/azure/reportDailySpendValidation.d.ts +3 -0
  9. package/dist/azure/reportDailySpendValidation.d.ts.map +1 -0
  10. package/dist/azure/reportDailySpendValidation.js +72 -0
  11. package/dist/azure/reportDailySpendValidation.js.map +1 -0
  12. package/dist/azure/reportEvidence.d.ts +13 -0
  13. package/dist/azure/reportEvidence.d.ts.map +1 -1
  14. package/dist/azure/reportEvidence.js.map +1 -1
  15. package/dist/azure/reportEvidenceCatalogueValidation.d.ts.map +1 -1
  16. package/dist/azure/reportEvidenceCatalogueValidation.js +4 -0
  17. package/dist/azure/reportEvidenceCatalogueValidation.js.map +1 -1
  18. package/dist/azure/reportEvidenceValidation.d.ts.map +1 -1
  19. package/dist/azure/reportEvidenceValidation.js +21 -1
  20. package/dist/azure/reportEvidenceValidation.js.map +1 -1
  21. package/dist/azure/reportSpend.d.ts +87 -0
  22. package/dist/azure/reportSpend.d.ts.map +1 -0
  23. package/dist/azure/reportSpend.js +5 -0
  24. package/dist/azure/reportSpend.js.map +1 -0
  25. package/dist/azure/reportSpendValidation.d.ts +7 -0
  26. package/dist/azure/reportSpendValidation.d.ts.map +1 -0
  27. package/dist/azure/reportSpendValidation.js +197 -0
  28. package/dist/azure/reportSpendValidation.js.map +1 -0
  29. package/dist/azure/reportSpendValidationHelpers.d.ts +7 -0
  30. package/dist/azure/reportSpendValidationHelpers.d.ts.map +1 -0
  31. package/dist/azure/reportSpendValidationHelpers.js +31 -0
  32. package/dist/azure/reportSpendValidationHelpers.js.map +1 -0
  33. package/dist/esm/azure/reportDailySpend.js +2 -0
  34. package/dist/esm/azure/reportDailySpendValidation.js +67 -0
  35. package/dist/esm/azure/reportEvidenceCatalogueValidation.js +4 -0
  36. package/dist/esm/azure/reportEvidenceValidation.js +21 -1
  37. package/dist/esm/azure/reportSpend.js +1 -0
  38. package/dist/esm/azure/reportSpendValidation.js +189 -0
  39. package/dist/esm/azure/reportSpendValidationHelpers.js +22 -0
  40. package/dist/esm/index.js +4 -0
  41. package/dist/esm/index.vite.js +6 -0
  42. package/dist/index.d.ts +4 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +8 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/index.vite.d.ts +6 -0
  47. package/dist/index.vite.d.ts.map +1 -1
  48. package/dist/index.vite.js +10 -0
  49. package/dist/index.vite.js.map +1 -1
  50. package/package.json +1 -1
@@ -1,4 +1,6 @@
1
1
  import { isCompactRecommendation, isInventoryCatalogueResource } from './reportEvidenceCatalogueValidation.js';
2
+ import { isReportDailySpend } from './reportDailySpendValidation.js';
3
+ import { isReportSavingsBasis, isReportSpendProjection } from './reportSpendValidation.js';
2
4
  import { REPORT_EVIDENCE_LIMITS, } from './reportEvidence.js';
3
5
  import { countTotal, hasOptionalNumbers, hasOptionalStrings, hasRequiredRecords, isBoundedRows, isCommitmentExpirySummary, isCostSummary, isCount, isCountRecord, isDateTime, isEvidenceReference, isFiniteNumber, isOptionalBoolean, isOptionalFiniteNumber, isOptionalString, isProjectionRows, isRecommendationSummary, isRecord, isResourceSummary, isRetirementSummary, isSourceFileStatus, isString, isStringArray, isTagCoverage, } from './reportEvidenceValidationHelpers.js';
4
6
  export const isReportSecureScoreEvidence = (value) => {
@@ -14,6 +16,7 @@ export const isReportSecureScoreEvidence = (value) => {
14
16
  return true;
15
17
  };
16
18
  const isCostSavingsCategory = (value) => isRecord(value) &&
19
+ (value.savingsBasis === undefined || isReportSavingsBasis(value.savingsBasis)) &&
17
20
  isString(value.key) &&
18
21
  isString(value.label) &&
19
22
  isCount(value.recommendationCount) &&
@@ -63,7 +66,10 @@ const isRecommendationPortfolio = (value) => {
63
66
  }
64
67
  if (value.costSavings === undefined)
65
68
  return true;
66
- if (!isRecord(value.costSavings) || !isString(value.costSavings.currency) || !isCount(value.costSavings.contributingRecommendationCount)) {
69
+ if (!isRecord(value.costSavings) ||
70
+ !isString(value.costSavings.currency) ||
71
+ !isCount(value.costSavings.contributingRecommendationCount) ||
72
+ (value.costSavings.savingsBasis !== undefined && !isReportSavingsBasis(value.costSavings.savingsBasis))) {
67
73
  return false;
68
74
  }
69
75
  const monthly = value.costSavings.monthly;
@@ -163,6 +169,10 @@ function isCommitmentInventoryRow(value) {
163
169
  const isReportingProjection = (value) => {
164
170
  if (!isRecord(value) || !isRecord(value.dashboard) || !isRecommendationPortfolio(value.recommendationPortfolio))
165
171
  return false;
172
+ if (value.dailySpend !== undefined && !isReportDailySpend(value.dailySpend))
173
+ return false;
174
+ if (value.spend !== undefined && !isReportSpendProjection(value.spend))
175
+ return false;
166
176
  const subscription = isRecord(value.dashboard.subscription) ? value.dashboard.subscription : undefined;
167
177
  const properties = subscription && isRecord(subscription.properties) ? subscription.properties : undefined;
168
178
  if (properties?.secureScoreEvidence !== undefined && !isReportSecureScoreEvidence(properties.secureScoreEvidence))
@@ -263,11 +273,21 @@ export const isSubscriptionReportEvidencePack = (value) => {
263
273
  !hasOptionalStrings(value.scope, ['companyId', 'tenantId', 'displayName', 'currency', 'currencySymbol'])) {
264
274
  return false;
265
275
  }
276
+ const dailySpend = value.reporting.dailySpend;
277
+ if (dailySpend && value.scope.currency !== undefined && dailySpend.currency !== value.scope.currency)
278
+ return false;
279
+ const spend = value.reporting.spend;
280
+ if (spend &&
281
+ ((value.scope.currency !== undefined && spend.currency !== value.scope.currency) ||
282
+ (dailySpend && spend.currency !== dailySpend.currency) ||
283
+ Date.parse(spend.generatedAt) > Date.parse(value.generatedAt)))
284
+ return false;
266
285
  return (value.reliability.relationshipGraph === undefined ||
267
286
  (isRecord(value.reliability.relationshipGraph) &&
268
287
  hasOptionalNumbers(value.reliability.relationshipGraph, ['totalNodes', 'totalEdges', 'unresolvedCount', 'buildMs'])));
269
288
  };
270
289
  const isRecommendationFingerprint = (value) => isRecord(value) &&
290
+ (value.savingsBasis === undefined || isReportSavingsBasis(value.savingsBasis)) &&
271
291
  isString(value.id) &&
272
292
  isString(value.title) &&
273
293
  hasOptionalStrings(value, ['category', 'impact', 'severity', 'currency']) &&
@@ -0,0 +1 @@
1
+ export const REPORT_SPEND_LIMITS = { periods: 14, servicesPerPeriod: 100, periodDays: 92, assumptions: 10, textLength: 500 };
@@ -0,0 +1,189 @@
1
+ import { isPublicCostComposition } from './costComposition.js';
2
+ import { isBoundedRows, isRecord } from './reportEvidenceValidationHelpers.js';
3
+ import { REPORT_SPEND_LIMITS, } from './reportSpend.js';
4
+ import { isReportCalendarDate, isReportCurrency, isReportText, isReportUtcTimestamp, reportMoneyUnits } from './reportSpendValidationHelpers.js';
5
+ const bases = ['billed', 'amortized'];
6
+ const coverageStates = new Set(['complete', 'partial', 'unavailable']);
7
+ const exactFields = (value, required, optional = []) => required.every(key => Object.prototype.hasOwnProperty.call(value, key)) &&
8
+ Object.keys(value).every(key => [...required, ...optional].includes(key));
9
+ export const isReportSavingsBasis = (value) => typeof value === 'string' && ['billed', 'amortized', 'retail', 'mixed', 'unknown'].includes(value);
10
+ const amountOf = (value) => value.status === 'available' ? reportMoneyUnits(value.component.amount) : undefined;
11
+ function isBasisConsistent(basis, coverage, lens) {
12
+ if (!isRecord(coverage) || !exactFields(coverage, ['actual', 'estimated', 'combined']))
13
+ return false;
14
+ const components = { actual: basis.actual.availability, estimated: basis.estimated.availability, combined: basis.combined };
15
+ for (const key of ['actual', 'estimated', 'combined']) {
16
+ if (!coverageStates.has(coverage[key]))
17
+ return false;
18
+ const available = components[key].status === 'available';
19
+ if (available !== (coverage[key] !== 'unavailable'))
20
+ return false;
21
+ if (available && amountOf(components[key]) === undefined)
22
+ return false;
23
+ if (key !== 'combined' && available && basis[key].support !== 'supported')
24
+ return false;
25
+ }
26
+ const actual = amountOf(components.actual);
27
+ const estimated = amountOf(components.estimated);
28
+ const expectedStatus = actual !== undefined
29
+ ? estimated !== undefined
30
+ ? 'actual-plus-estimated'
31
+ : 'actual-only'
32
+ : estimated !== undefined
33
+ ? 'estimated-only'
34
+ : 'unavailable';
35
+ if (basis.status !== expectedStatus)
36
+ return false;
37
+ const combined = amountOf(basis.combined);
38
+ // Reconciliation may withhold the combined amount even when individual components are available.
39
+ if (combined === undefined)
40
+ return true;
41
+ if (lens === 'actual-only')
42
+ return actual === combined && coverage.combined === coverage.actual;
43
+ if (lens === 'estimates-only')
44
+ return estimated === combined && coverage.combined === coverage.estimated;
45
+ if (actual === undefined && estimated === undefined)
46
+ return false;
47
+ if (combined !== (actual ?? 0n) + (estimated ?? 0n))
48
+ return false;
49
+ // A single partial component cannot become a complete combined total. Two components require producer coverage proof.
50
+ if (actual === undefined)
51
+ return coverage.combined === coverage.estimated;
52
+ if (estimated === undefined)
53
+ return coverage.combined === coverage.actual;
54
+ return true;
55
+ }
56
+ export function isReportSpendAmounts(value, currency, generatedAt) {
57
+ if (!isRecord(value) || !exactFields(value, ['composition', 'coverage', 'retail'], ['estimates']) || !isPublicCostComposition(value.composition))
58
+ return false;
59
+ if (!isRecord(value.coverage) || !exactFields(value.coverage, [...bases]))
60
+ return false;
61
+ if (currency !== undefined && !isReportCurrency(currency))
62
+ return false;
63
+ if (generatedAt !== undefined && !isReportUtcTimestamp(generatedAt))
64
+ return false;
65
+ if (value.estimates !== undefined && (!isRecord(value.estimates) || !exactFields(value.estimates, [], [...bases])))
66
+ return false;
67
+ const currencies = new Set();
68
+ if (currency)
69
+ currencies.add(currency);
70
+ for (const key of bases) {
71
+ const basis = value.composition[key];
72
+ if (!isBasisConsistent(basis, value.coverage[key], value.composition.selectedLens))
73
+ return false;
74
+ for (const item of [basis.actual.availability, basis.estimated.availability, basis.combined]) {
75
+ if (item.status === 'available') {
76
+ if (!isReportCurrency(item.component.currencyCode))
77
+ return false;
78
+ currencies.add(item.component.currencyCode);
79
+ }
80
+ }
81
+ const estimate = isRecord(value.estimates) ? value.estimates[key] : undefined;
82
+ if (basis.estimated.availability.status === 'available') {
83
+ if (!isRecord(estimate) ||
84
+ !exactFields(estimate, ['reason', 'method', 'observedAt']) ||
85
+ !['billing-lag', 'billing-unavailable-sponsorship', 'other'].includes(estimate.reason) ||
86
+ !isReportText(estimate.method) ||
87
+ !isReportUtcTimestamp(estimate.observedAt) ||
88
+ (generatedAt !== undefined && Date.parse(estimate.observedAt) > Date.parse(generatedAt)))
89
+ return false;
90
+ }
91
+ else if (estimate !== undefined)
92
+ return false;
93
+ }
94
+ const retail = value.retail;
95
+ if (!isRecord(retail))
96
+ return false;
97
+ if (retail.status === 'unavailable') {
98
+ if (!exactFields(retail, ['status']))
99
+ return false;
100
+ }
101
+ else {
102
+ if (retail.status !== 'available' ||
103
+ !exactFields(retail, ['status', 'component', 'coverage', 'scopeDescription', 'pricingSource', 'pricedAt', 'assumptions']) ||
104
+ !isRecord(retail.component) ||
105
+ !exactFields(retail.component, ['amount', 'currencyCode']) ||
106
+ !isReportCurrency(retail.component.currencyCode) ||
107
+ !['complete', 'partial'].includes(retail.coverage) ||
108
+ !isReportText(retail.scopeDescription) ||
109
+ !isReportText(retail.pricingSource) ||
110
+ !isReportUtcTimestamp(retail.pricedAt) ||
111
+ (generatedAt !== undefined && Date.parse(retail.pricedAt) > Date.parse(generatedAt)) ||
112
+ !Array.isArray(retail.assumptions) ||
113
+ retail.assumptions.length > REPORT_SPEND_LIMITS.assumptions ||
114
+ !retail.assumptions.every(isReportText))
115
+ return false;
116
+ const amount = reportMoneyUnits(retail.component.amount);
117
+ if (amount === undefined || amount < 0n)
118
+ return false;
119
+ currencies.add(retail.component.currencyCode);
120
+ }
121
+ return currencies.size <= 1;
122
+ }
123
+ export const hasReportSpendValue = (value) => value.retail.status === 'available' ||
124
+ bases.some(key => value.composition[key].actual.availability.status === 'available' || value.composition[key].estimated.availability.status === 'available');
125
+ /** Dates, population completeness and actual/estimated selection remain independent checks. */
126
+ export const isReportSpendProjection = (value) => {
127
+ if (!isRecord(value) ||
128
+ !exactFields(value, ['currency', 'dateBasis', 'generatedAt', 'freshness', 'periods'], ['sourceObservedAt']) ||
129
+ !isReportCurrency(value.currency) ||
130
+ value.dateBasis !== 'billing-calendar' ||
131
+ !isReportUtcTimestamp(value.generatedAt) ||
132
+ !['current', 'stale', 'unavailable'].includes(value.freshness) ||
133
+ !Array.isArray(value.periods) ||
134
+ value.periods.length > REPORT_SPEND_LIMITS.periods)
135
+ return false;
136
+ if (value.sourceObservedAt !== undefined &&
137
+ (!isReportUtcTimestamp(value.sourceObservedAt) || Date.parse(value.sourceObservedAt) > Date.parse(value.generatedAt)))
138
+ return false;
139
+ const seen = new Set();
140
+ let rollingCount = 0;
141
+ let historicalCount = 0;
142
+ let available = false;
143
+ for (const period of value.periods) {
144
+ if (!isRecord(period) ||
145
+ !exactFields(period, ['kind', 'startDate', 'endDate', 'amounts'], ['services']) ||
146
+ !['calendar-month', 'billing-period', 'rolling-30-days'].includes(period.kind) ||
147
+ !isReportCalendarDate(period.startDate) ||
148
+ !isReportCalendarDate(period.endDate))
149
+ return false;
150
+ const days = (Date.parse(period.endDate) - Date.parse(period.startDate)) / 86400000 + 1;
151
+ if (days < 1 || days > REPORT_SPEND_LIMITS.periodDays)
152
+ return false;
153
+ if (period.kind === 'calendar-month') {
154
+ const following = new Date(Date.parse(period.endDate) + 86400000).toISOString().slice(0, 10);
155
+ if (!period.startDate.endsWith('-01') || period.startDate.slice(0, 7) !== period.endDate.slice(0, 7) || !following.endsWith('-01'))
156
+ return false;
157
+ }
158
+ if (period.kind === 'rolling-30-days') {
159
+ if (days !== 30 || ++rollingCount > 1)
160
+ return false;
161
+ }
162
+ else if (++historicalCount > 13)
163
+ return false;
164
+ const key = `${period.kind}:${period.startDate}:${period.endDate}`;
165
+ if (seen.has(key))
166
+ return false;
167
+ seen.add(key);
168
+ if (!isReportSpendAmounts(period.amounts, value.currency, value.generatedAt))
169
+ return false;
170
+ available || (available = hasReportSpendValue(period.amounts));
171
+ if (period.services !== undefined) {
172
+ const serviceKeys = new Set();
173
+ if (!isBoundedRows(period.services, REPORT_SPEND_LIMITS.servicesPerPeriod, (row) => {
174
+ if (!isRecord(row) ||
175
+ !exactFields(row, ['serviceKey', 'name', 'amounts']) ||
176
+ !isReportText(row.serviceKey) ||
177
+ !isReportText(row.name) ||
178
+ serviceKeys.has(row.serviceKey) ||
179
+ !isReportSpendAmounts(row.amounts, value.currency, value.generatedAt))
180
+ return false;
181
+ serviceKeys.add(row.serviceKey);
182
+ available || (available = hasReportSpendValue(row.amounts));
183
+ return true;
184
+ }))
185
+ return false;
186
+ }
187
+ }
188
+ return available ? value.sourceObservedAt !== undefined && value.freshness !== 'unavailable' : value.freshness === 'unavailable';
189
+ };
@@ -0,0 +1,22 @@
1
+ import { REPORT_SPEND_LIMITS } from './reportSpend.js';
2
+ export const isReportCalendarDate = (value) => {
3
+ if (typeof value !== 'string' || !/^\d{4}-\d{2}-\d{2}$/.test(value))
4
+ return false;
5
+ const time = Date.parse(`${value}T00:00:00.000Z`);
6
+ return Number.isFinite(time) && new Date(time).toISOString().slice(0, 10) === value;
7
+ };
8
+ export const isReportUtcTimestamp = (value) => typeof value === 'string' &&
9
+ /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3})?Z$/.test(value) &&
10
+ isReportCalendarDate(value.slice(0, 10)) &&
11
+ Number.isFinite(Date.parse(value)) &&
12
+ new Date(value).toISOString() === (value.length === 20 ? value.replace('Z', '.000Z') : value);
13
+ export const isReportCurrency = (value) => typeof value === 'string' && /^[A-Z]{3}$/.test(value);
14
+ export const isReportText = (value) => typeof value === 'string' && value.trim().length > 0 && value.length <= REPORT_SPEND_LIMITS.textLength;
15
+ /** Bounded exact arithmetic avoids binary floating point and pathological decimal-string input. */
16
+ export const reportMoneyUnits = (value) => {
17
+ if (typeof value !== 'string' || value.length > 25 || !/^-?(?:0|[1-9]\d{0,14})(?:\.\d{1,8})?$/.test(value))
18
+ return undefined;
19
+ const [whole, fraction = ''] = value.replace(/^-/, '').split('.');
20
+ const amount = BigInt(whole) * 100000000n + BigInt(fraction.padEnd(8, '0'));
21
+ return value.startsWith('-') ? -amount : amount;
22
+ };
package/dist/esm/index.js CHANGED
@@ -32,6 +32,10 @@ export * from './azure/resources.js';
32
32
  export * from './azure/reports.js';
33
33
  export * from './azure/reportEvidence.js';
34
34
  export * from './azure/reportEvidenceValidation.js';
35
+ export * from './azure/reportDailySpend.js';
36
+ export * from './azure/reportDailySpendValidation.js';
37
+ export * from './azure/reportSpend.js';
38
+ export { isReportSpendAmounts, isReportSpendProjection, isReportSavingsBasis } from './azure/reportSpendValidation.js';
35
39
  export * from './azure/reportingTemplates.js';
36
40
  export * from './azure/reviewChecklist.js';
37
41
  export * from './azure/advisorScore.js';
@@ -18,6 +18,12 @@ export * from './azure/recommendationWorkflow.js';
18
18
  export * from './azure/recommendationState.js';
19
19
  export * from './azure/resources.js';
20
20
  export * from './azure/reports.js';
21
+ export * from './azure/reportEvidence.js';
22
+ export * from './azure/reportEvidenceValidation.js';
23
+ export * from './azure/reportDailySpend.js';
24
+ export * from './azure/reportDailySpendValidation.js';
25
+ export * from './azure/reportSpend.js';
26
+ export { isReportSpendAmounts, isReportSpendProjection, isReportSavingsBasis } from './azure/reportSpendValidation.js';
21
27
  export * from './azure/reportingTemplates.js';
22
28
  export * from './azure/reviewChecklist.js';
23
29
  export * from './azure/advisorScore.js';
package/dist/index.d.ts CHANGED
@@ -32,6 +32,10 @@ export * from './azure/resources';
32
32
  export * from './azure/reports';
33
33
  export * from './azure/reportEvidence';
34
34
  export * from './azure/reportEvidenceValidation';
35
+ export * from './azure/reportDailySpend';
36
+ export * from './azure/reportDailySpendValidation';
37
+ export * from './azure/reportSpend';
38
+ export { isReportSpendAmounts, isReportSpendProjection, isReportSavingsBasis } from './azure/reportSpendValidation';
35
39
  export * from './azure/reportingTemplates';
36
40
  export * from './azure/reviewChecklist';
37
41
  export * from './azure/advisorScore';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yCAAyC,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACpH,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yCAAyC,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.isReportSavingsBasis = exports.isReportSpendProjection = exports.isReportSpendAmounts = void 0;
17
18
  /** Main entry point - export all interfaces from this package */
18
19
  __exportStar(require("./azure/common"), exports);
19
20
  __exportStar(require("./azure/costComposition"), exports);
@@ -48,6 +49,13 @@ __exportStar(require("./azure/resources"), exports);
48
49
  __exportStar(require("./azure/reports"), exports);
49
50
  __exportStar(require("./azure/reportEvidence"), exports);
50
51
  __exportStar(require("./azure/reportEvidenceValidation"), exports);
52
+ __exportStar(require("./azure/reportDailySpend"), exports);
53
+ __exportStar(require("./azure/reportDailySpendValidation"), exports);
54
+ __exportStar(require("./azure/reportSpend"), exports);
55
+ var reportSpendValidation_1 = require("./azure/reportSpendValidation");
56
+ Object.defineProperty(exports, "isReportSpendAmounts", { enumerable: true, get: function () { return reportSpendValidation_1.isReportSpendAmounts; } });
57
+ Object.defineProperty(exports, "isReportSpendProjection", { enumerable: true, get: function () { return reportSpendValidation_1.isReportSpendProjection; } });
58
+ Object.defineProperty(exports, "isReportSavingsBasis", { enumerable: true, get: function () { return reportSpendValidation_1.isReportSavingsBasis; } });
51
59
  __exportStar(require("./azure/reportingTemplates"), exports);
52
60
  __exportStar(require("./azure/reviewChecklist"), exports);
53
61
  __exportStar(require("./azure/advisorScore"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iEAAiE;AACjE,iDAA+B;AAC/B,0DAAwC;AACxC,gEAA8C;AAC9C,uDAAqC;AACrC,8DAA4C;AAC5C,wEAAsD;AACtD,kDAAgC;AAChC,4DAA0C;AAC1C,oEAAkD;AAClD,gEAA8C;AAC9C,0EAAwD;AACxD,+DAA6C;AAC7C,uDAAqC;AACrC,mDAAiC;AACjC,8DAA4C;AAC5C,oDAAkC;AAClC,kDAAgC;AAChC,kDAAgC;AAChC,mDAAiC;AACjC,0DAAwC;AACxC,yDAAuC;AACvC,iDAA+B;AAC/B,wDAAsC;AACtC,0DAAwC;AACxC,+DAA6C;AAC7C,8DAA4C;AAC5C,iEAA+C;AAC/C,8DAA4C;AAC5C,+DAA6C;AAC7C,oDAAkC;AAClC,kDAAgC;AAChC,yDAAuC;AACvC,mEAAiD;AACjD,6DAA2C;AAC3C,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,wDAAsC;AACtC,gDAA8B;AAC9B,mDAAiC;AACjC,kDAAgC;AAChC,4DAA0C;AAC1C,iEAA+C;AAC/C,0EAAwD;AACxD,+DAA6C;AAC7C,4DAA0C;AAC1C,qDAAmC;AACnC,4DAA0C;AAC1C,yDAAuC;AACvC,4DAA0C;AAC1C,wCAAsB;AACtB,6CAA2B;AAC3B,gDAA8B;AAC9B,0CAAwB;AACxB,2CAAyB;AACzB,4DAA0C;AAC1C,4CAA0B;AAC1B,qDAAmC;AACnC,8CAA4B;AAC5B,uCAAqB;AACrB,gDAA8B;AAC9B,2CAAyB;AACzB,iDAA+B;AAC/B,6CAA2B;AAC3B,6DAA2C;AAC3C,yCAAuB;AACvB,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iEAAiE;AACjE,iDAA+B;AAC/B,0DAAwC;AACxC,gEAA8C;AAC9C,uDAAqC;AACrC,8DAA4C;AAC5C,wEAAsD;AACtD,kDAAgC;AAChC,4DAA0C;AAC1C,oEAAkD;AAClD,gEAA8C;AAC9C,0EAAwD;AACxD,+DAA6C;AAC7C,uDAAqC;AACrC,mDAAiC;AACjC,8DAA4C;AAC5C,oDAAkC;AAClC,kDAAgC;AAChC,kDAAgC;AAChC,mDAAiC;AACjC,0DAAwC;AACxC,yDAAuC;AACvC,iDAA+B;AAC/B,wDAAsC;AACtC,0DAAwC;AACxC,+DAA6C;AAC7C,8DAA4C;AAC5C,iEAA+C;AAC/C,8DAA4C;AAC5C,+DAA6C;AAC7C,oDAAkC;AAClC,kDAAgC;AAChC,yDAAuC;AACvC,mEAAiD;AACjD,2DAAyC;AACzC,qEAAmD;AACnD,sDAAoC;AACpC,uEAAoH;AAA3G,6HAAA,oBAAoB,OAAA;AAAE,gIAAA,uBAAuB,OAAA;AAAE,6HAAA,oBAAoB,OAAA;AAC5E,6DAA2C;AAC3C,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,wDAAsC;AACtC,gDAA8B;AAC9B,mDAAiC;AACjC,kDAAgC;AAChC,4DAA0C;AAC1C,iEAA+C;AAC/C,0EAAwD;AACxD,+DAA6C;AAC7C,4DAA0C;AAC1C,qDAAmC;AACnC,4DAA0C;AAC1C,yDAAuC;AACvC,4DAA0C;AAC1C,wCAAsB;AACtB,6CAA2B;AAC3B,gDAA8B;AAC9B,0CAAwB;AACxB,2CAAyB;AACzB,4DAA0C;AAC1C,4CAA0B;AAC1B,qDAAmC;AACnC,8CAA4B;AAC5B,uCAAqB;AACrB,gDAA8B;AAC9B,2CAAyB;AACzB,iDAA+B;AAC/B,6CAA2B;AAC3B,6DAA2C;AAC3C,yCAAuB;AACvB,8CAA4B"}
@@ -18,6 +18,12 @@ export * from './azure/recommendationWorkflow';
18
18
  export * from './azure/recommendationState';
19
19
  export * from './azure/resources';
20
20
  export * from './azure/reports';
21
+ export * from './azure/reportEvidence';
22
+ export * from './azure/reportEvidenceValidation';
23
+ export * from './azure/reportDailySpend';
24
+ export * from './azure/reportDailySpendValidation';
25
+ export * from './azure/reportSpend';
26
+ export { isReportSpendAmounts, isReportSpendProjection, isReportSavingsBasis } from './azure/reportSpendValidation';
21
27
  export * from './azure/reportingTemplates';
22
28
  export * from './azure/reviewChecklist';
23
29
  export * from './azure/advisorScore';
@@ -1 +1 @@
1
- {"version":3,"file":"index.vite.d.ts","sourceRoot":"","sources":["../src/index.vite.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.vite.d.ts","sourceRoot":"","sources":["../src/index.vite.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACpH,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC"}
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.isReportSavingsBasis = exports.isReportSpendProjection = exports.isReportSpendAmounts = void 0;
17
18
  /** Dev-only Vite entrypoint that avoids stale sibling .js files under src/. */
18
19
  __exportStar(require("./azure/common"), exports);
19
20
  __exportStar(require("./azure/activityLogs"), exports);
@@ -34,6 +35,15 @@ __exportStar(require("./azure/recommendationWorkflow"), exports);
34
35
  __exportStar(require("./azure/recommendationState"), exports);
35
36
  __exportStar(require("./azure/resources"), exports);
36
37
  __exportStar(require("./azure/reports"), exports);
38
+ __exportStar(require("./azure/reportEvidence"), exports);
39
+ __exportStar(require("./azure/reportEvidenceValidation"), exports);
40
+ __exportStar(require("./azure/reportDailySpend"), exports);
41
+ __exportStar(require("./azure/reportDailySpendValidation"), exports);
42
+ __exportStar(require("./azure/reportSpend"), exports);
43
+ var reportSpendValidation_1 = require("./azure/reportSpendValidation");
44
+ Object.defineProperty(exports, "isReportSpendAmounts", { enumerable: true, get: function () { return reportSpendValidation_1.isReportSpendAmounts; } });
45
+ Object.defineProperty(exports, "isReportSpendProjection", { enumerable: true, get: function () { return reportSpendValidation_1.isReportSpendProjection; } });
46
+ Object.defineProperty(exports, "isReportSavingsBasis", { enumerable: true, get: function () { return reportSpendValidation_1.isReportSavingsBasis; } });
37
47
  __exportStar(require("./azure/reportingTemplates"), exports);
38
48
  __exportStar(require("./azure/reviewChecklist"), exports);
39
49
  __exportStar(require("./azure/advisorScore"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.vite.js","sourceRoot":"","sources":["../src/index.vite.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+EAA+E;AAC/E,iDAA+B;AAC/B,uDAAqC;AACrC,kDAAgC;AAChC,uDAAqC;AACrC,mDAAiC;AACjC,8DAA4C;AAC5C,oDAAkC;AAClC,kDAAgC;AAChC,kDAAgC;AAChC,mDAAiC;AACjC,0DAAwC;AACxC,iDAA+B;AAC/B,wDAAsC;AACtC,0DAAwC;AACxC,8DAA4C;AAC5C,iEAA+C;AAC/C,8DAA4C;AAC5C,oDAAkC;AAClC,kDAAgC;AAChC,6DAA2C;AAC3C,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,wDAAsC;AACtC,gDAA8B;AAC9B,mDAAiC;AACjC,4DAA0C;AAC1C,iEAA+C;AAC/C,+DAA6C;AAC7C,4DAA0C;AAC1C,qDAAmC;AACnC,4DAA0C;AAC1C,yDAAuC;AACvC,yDAAuC;AACvC,mDAAiC;AACjC,sDAAoC;AACpC,gDAA8B;AAC9B,oDAAkC;AAClC,iDAA+B;AAC/B,kDAAgC;AAChC,8CAA4B;AAC5B,6CAA2B;AAC3B,iDAA+B;AAC/B,uDAAqC;AACrC,mDAAiC;AACjC,6DAA2C;AAC3C,+CAA6B"}
1
+ {"version":3,"file":"index.vite.js","sourceRoot":"","sources":["../src/index.vite.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+EAA+E;AAC/E,iDAA+B;AAC/B,uDAAqC;AACrC,kDAAgC;AAChC,uDAAqC;AACrC,mDAAiC;AACjC,8DAA4C;AAC5C,oDAAkC;AAClC,kDAAgC;AAChC,kDAAgC;AAChC,mDAAiC;AACjC,0DAAwC;AACxC,iDAA+B;AAC/B,wDAAsC;AACtC,0DAAwC;AACxC,8DAA4C;AAC5C,iEAA+C;AAC/C,8DAA4C;AAC5C,oDAAkC;AAClC,kDAAgC;AAChC,yDAAuC;AACvC,mEAAiD;AACjD,2DAAyC;AACzC,qEAAmD;AACnD,sDAAoC;AACpC,uEAAoH;AAA3G,6HAAA,oBAAoB,OAAA;AAAE,gIAAA,uBAAuB,OAAA;AAAE,6HAAA,oBAAoB,OAAA;AAC5E,6DAA2C;AAC3C,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,wDAAsC;AACtC,gDAA8B;AAC9B,mDAAiC;AACjC,4DAA0C;AAC1C,iEAA+C;AAC/C,+DAA6C;AAC7C,4DAA0C;AAC1C,qDAAmC;AACnC,4DAA0C;AAC1C,yDAAuC;AACvC,yDAAuC;AACvC,mDAAiC;AACjC,sDAAoC;AACpC,gDAA8B;AAC9B,oDAAkC;AAClC,iDAA+B;AAC/B,kDAAgC;AAChC,8CAA4B;AAC5B,6CAA2B;AAC3B,iDAA+B;AAC/B,uDAAqC;AACrC,mDAAiC;AACjC,6DAA2C;AAC3C,+CAA6B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spottoai/types-package",
3
- "version": "1.0.2-beta.412",
3
+ "version": "1.0.2-beta.414",
4
4
  "description": "Shared TypeScript interfaces for SpottoAI",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",