import type { ArtifactDescriptor, ArtifactGeneration, JsonObject } from '../common/artifactGeneration'; import type { AwsPublicArtifactEnvelope, AwsPublicArtifactForbiddenCredentialFields } from './publicArtifacts'; import { AWS_PORTAL_ACCOUNT_SUMMARY_AI_COST_SUMMARY_LOGICAL_NAME, AWS_PORTAL_ACCOUNT_SUMMARY_LOGICAL_NAME, type AwsPortalAccountSummaryScope, type AwsPortalDiscoveryFamily, type AwsPortalMetricFamily, type AwsPortalRecommendationSource, type AwsPortalResourceCollectionBody, type AwsPortalResourceCollectionHistoryLogicalName, type AwsPortalAccountSummaryHistoryLogicalName, type AwsPortalResourceCollectionScope } from './portalPublicArtifacts'; import type { AwsPortalAccountSummaryAiRecommendationPosture } from './portalPublicArtifactNestedEvidence'; export declare const AWS_PORTAL_PUBLIC_ARTIFACT_RELATIONSHIPS: { readonly 'resource-collection': { readonly logicalName: "resources.json.gz"; readonly required: readonly []; readonly optional: readonly ["resource-collection-history"]; }; readonly 'account-summary': { readonly logicalName: "account-summary.json.gz"; readonly required: readonly []; readonly optional: readonly ["account-summary-history", "account-summary-ai-cost-summary"]; }; readonly 'resource-collection-history': { readonly logicalNamePattern: "resources-history--{scope-generation-sha256}.json.gz"; readonly required: readonly []; readonly optional: readonly []; }; readonly 'account-summary-history': { readonly logicalNamePattern: "account-summary-history--{scope-sha256}.json.gz"; readonly required: readonly []; readonly optional: readonly []; }; readonly 'account-summary-ai-cost-summary': { readonly logicalName: "account-summary-ai-cost-summary.json.gz"; readonly required: readonly ["account-summary"]; readonly optional: readonly []; }; readonly 'commitments-planning': { readonly logicalName: "commitments-planning.json.gz"; readonly required: readonly []; readonly optional: readonly []; }; readonly relationships: { readonly logicalName: "relationships.json.gz"; readonly required: readonly []; readonly optional: readonly []; }; }; export interface AwsPortalHistoryBillingTotals { currency: string; expenseCount: number; baseCostAmount: number; amortizedCostAmount?: number; amortizedExpenseCount?: number; } interface AwsPortalCompactHistoryBilling { totalPersistedExpenseCount: number; emptyScope: boolean; metadataFound: boolean; metadataMatchesRequestedBillingPeriod: boolean; totalsByCurrency: AwsPortalHistoryBillingTotals[]; pricingReferenceEstimation?: JsonObject; estimatedBillingAuthority?: JsonObject; } interface AwsPortalHistoryEnvelope extends AwsPublicArtifactForbiddenCredentialFields { schemaVersion: 1; portalSchemaVersion: 1; provider: 'aws'; accountId: AccountId; artifactType: ArtifactType; artifactGeneration: ArtifactGeneration; generatedAt: string; logicalName: ArtifactType extends 'resource-collection-history' ? AwsPortalResourceCollectionHistoryLogicalName : AwsPortalAccountSummaryHistoryLogicalName; } export type AwsPortalResourceCollectionHistoryArtifact = AwsPortalHistoryEnvelope<'resource-collection-history', AccountId, RunId> & { scope: AwsPortalResourceCollectionScope; summary: AwsPortalResourceCollectionBody['summary']; billing: AwsPortalCompactHistoryBilling; discovery: { families: Array<{ family: AwsPortalDiscoveryFamily; resourceRegionCount: number; totalResources?: number; regionsWithSuccessfulRefresh: number; regionsWithoutSuccessfulRefresh: number; }>; }; metrics: { families: Array<{ metricFamily: AwsPortalMetricFamily; resourceRegionCount: number; requestedMonthCount: number; availableMonthCount: number; missingMonthCount: number; regionsWithCompleteCoverage: number; regionsWithMissingCoverage: number; }>; }; recommendations: { sources: Array<{ source: AwsPortalRecommendationSource; totalStateCount: number; currentStateCount: number; matchedStateCount: number; filteredOutStateCount: number; positiveEstimatedSavingsRecommendationCount: number; savingsByCurrency: import('./portalPublicArtifacts').AwsPortalRecommendationSavings['byCurrency']; }>; }; }; export type AwsPortalAccountSummaryHistoryArtifact = AwsPortalHistoryEnvelope<'account-summary-history', AccountId, RunId> & { scope: Omit, 'comparisonBillingPeriod' | 'metricTimeWindow'>; billing: AwsPortalCompactHistoryBilling; discovery: AwsPortalResourceCollectionHistoryArtifact['discovery']; recommendations: { sources: Array<{ source: AwsPortalRecommendationSource; totalStateCount: number; matchedStateCount: number; positiveEstimatedSavingsRecommendationCount: number; sourceEvidence?: import('./portalPublicArtifacts').AwsPortalRecommendationSourceEvidence; actionHealth?: import('./portalPublicArtifacts').AwsPortalRecommendationActionHealth; savingsByCurrency: import('./portalPublicArtifacts').AwsPortalRecommendationSavings['byCurrency']; }>; }; }; interface AwsPortalRetainedHistoryBodyReferenceBase { artifactGeneration: ArtifactGeneration; body: ArtifactDescriptor; } export type AwsPortalRetainedHistoryBodyReference = (AwsPortalRetainedHistoryBodyReferenceBase & { artifactType: 'resource-collection-history'; logicalName: AwsPortalResourceCollectionHistoryLogicalName; }) | (AwsPortalRetainedHistoryBodyReferenceBase & { artifactType: 'account-summary-history'; logicalName: AwsPortalAccountSummaryHistoryLogicalName; }); export type AwsPortalAiAudience = 'executive' | 'finops' | 'engineering'; export interface AwsPortalAccountSummaryAiCostSummaryEntry { targetKey: string; audience: AwsPortalAiAudience; artifactVersion: 1; generatedAt: string; createdAt: string; updatedAt: string; sourceRecommendationPosture?: AwsPortalAccountSummaryAiRecommendationPosture; status: 'available'; summary: { headline: string; narrative: string; }; provider: { type: 'amazon-bedrock'; inferenceProfileId: string; promptVersionArn: string; stopReason?: string; latencyMs?: number; usage?: { inputTokens: number; outputTokens: number; totalTokens: number; }; trace?: { guardrailActionReason?: string; invokedModelId?: string; }; }; } export type AwsPortalAccountSummaryAiCostSummaryArtifact = AwsPublicArtifactEnvelope<'account-summary-ai-cost-summary', AccountId, RunId> & { portalSchemaVersion: 1; generatedAt: string; logicalName: typeof AWS_PORTAL_ACCOUNT_SUMMARY_AI_COST_SUMMARY_LOGICAL_NAME; source: { scope: AwsPortalAccountSummaryScope; targetKey: string; logicalName: typeof AWS_PORTAL_ACCOUNT_SUMMARY_LOGICAL_NAME; artifactType: 'account-summary'; artifactGeneration: ArtifactGeneration; sha256: string; }; entries: AwsPortalAccountSummaryAiCostSummaryEntry[]; }; export type AwsPortalLosslessPublicArtifact = import('./portalPublicArtifacts').AwsPortalResourceCollectionDetailArtifact | import('./portalPublicArtifacts').AwsPortalAccountSummaryDetailArtifact | import('./portalRelationshipPublicArtifacts').AwsPortalRelationshipArtifact | AwsPortalResourceCollectionHistoryArtifact | AwsPortalAccountSummaryHistoryArtifact | AwsPortalAccountSummaryAiCostSummaryArtifact; export {}; //# sourceMappingURL=portalPublicArtifactHistoryTypes.d.ts.map