@cloud-carbon-footprint/core
Version:
The core logic to get cloud usage data and estimate energy and carbon emissions.
51 lines (50 loc) • 2.16 kB
TypeScript
import { BillingDataRow, CloudConstantsEmissionsFactors } from '.';
import { GroupBy, TagCollection } from '@cloud-carbon-footprint/common';
export default interface FootprintEstimate {
timestamp: Date;
kilowattHours: number;
co2e: number;
usesAverageCPUConstant?: boolean;
}
export declare type KilowattHourTotals = {
usageAmount?: number;
cost?: number;
kilowattHours: number;
};
export declare type KilowattHoursByServiceAndUsageUnit = {
[key: string]: {
[key: string]: KilowattHourTotals;
};
};
export declare enum AccumulateKilowattHoursBy {
COST = "cost",
USAGE_AMOUNT = "usageAmount"
}
export declare const aggregateEstimatesByDay: (estimates: FootprintEstimate[]) => {
[date: string]: FootprintEstimate;
};
export interface MutableEstimationResult {
timestamp: Date;
serviceEstimates: MutableServiceEstimate[];
periodStartDate: Date;
periodEndDate: Date;
groupBy: GroupBy;
}
export interface MutableServiceEstimate {
cloudProvider: string;
accountId: string;
accountName: string;
serviceName: string;
kilowattHours: number;
co2e: number;
cost: number;
region: string;
usesAverageCPUConstant: boolean;
tags?: TagCollection;
}
export declare const accumulateKilowattHours: (kilowattHoursByServiceAndUsageUnit: KilowattHoursByServiceAndUsageUnit, billingDataRow: BillingDataRow, kilowattHours: number, accumulateBy: AccumulateKilowattHoursBy) => void;
export declare const appendOrAccumulateEstimatesByDay: (results: MutableEstimationResult[], rowData: BillingDataRow, footprintEstimate: FootprintEstimate, grouping: GroupBy, tagNames: string[]) => void;
export declare function getWattsByAverageOrMedian(computeProcessors: string[], wattsForProcessors: number[]): number;
export declare function getAverage(nums: number[]): number;
export declare function estimateCo2(estimatedKilowattHours: number, region: string, emissionsFactors: CloudConstantsEmissionsFactors): number;
export declare function estimateKwh(estimatedCo2e: number, region: string, emissionsFactors: CloudConstantsEmissionsFactors, replicationFactor?: number): number;