import { data as averageIntensity } from "./data/average-intensities"; export interface SustainableWebDesignOptions { test?: number; gridIntensity?: { device?: { value?: number; country?: keyof typeof averageIntensity; }; network?: { value?: number; country?: keyof typeof averageIntensity; }; dataCenter?: { value?: number; country?: keyof typeof averageIntensity; }; renewableEnergy?: number; }; kwhPerGB?: number; dataReloadRatio?: number; firstVisitPercentage?: number; } declare class SustainableWebDesign { results?: { segment: boolean; }; /** * Accept a figure for bytes transferred and return an object representing * the share of the total enrgy use of the entire system, broken down * by each corresponding system component * * @param {number} bytes - the data transferred in bytes * @return {object} Object containing the energy in kilowatt hours, keyed by system component */ energyPerByteByComponent(bytes: number, options?: SustainableWebDesignOptions): { consumerDeviceEnergy: number; networkEnergy: number; productionEnergy: number; dataCenterEnergy: number; }; /** * Accept an object keys by the different system components, and * return an object with the co2 figures key by the each component * * @param {object} energyByComponent - energy grouped by the four system components * @param {number} [carbonIntensity] - carbon intensity to apply to the datacentre values * @return {number} the total number in grams of CO2 equivalent emissions */ co2byComponent(energyByComponent: { [key: string]: number; }, carbonIntensity?: boolean, options?: SustainableWebDesignOptions): { [key: string]: number; }; /** * Accept a figure for bytes transferred and return a single figure for CO2 * emissions. Where information exists about the origin data is being * fetched from, a different carbon intensity figure * is applied for the datacentre share of the carbon intensity. * * @param bytes - the data transferred in bytes * @param [carbonIntensity] the carbon intensity for datacentre (average figures, not marginal ones) * @param [segmentResults] whether to return the results broken down by component * @return the total number in grams of CO2 equivalent emissions */ perByte(bytes: number, carbonIntensity?: boolean, segmentResults?: boolean, options?: SustainableWebDesignOptions): { [key: string]: number; total: number; }; /** * Accept a figure for bytes transferred and return a single figure for CO2 * emissions. This method applies caching assumptions from the original Sustainable Web Design model. * * @param {number} bytes - the data transferred in bytes * @param {number} `carbonIntensity` the carbon intensity for datacentre (average figures, not marginal ones) * @return {number} the total number in grams of CO2 equivalent emissions */ perVisit(bytes: number, carbonIntensity?: boolean, segmentResults?: boolean, options?: SustainableWebDesignOptions): { total: number; }; /** * Accept a figure for bytes transferred and return the number of kilowatt hours used * by the total system for this data transfer * * @param {number} bytes * @return {number} the number of kilowatt hours used */ energyPerByte(bytes: number, options?: SustainableWebDesignOptions): number; /** * Accept a figure for bytes transferred, and return an object containing figures * per system component, with the caching assumptions applied. This tries to account * for webpages being loaded from a cache by browsers, so if you had a thousand page views, * and tried to work out the energy per visit, the numbers would reflect the reduced amounts * of transfer. * * @param {number} bytes - the data transferred in bytes for loading a webpage * @param {object} options - containing the energy in kilowatt hours, keyed by system component * * @return {object} Object containing the energy in kilowatt hours, keyed by system component */ energyPerVisitByComponent(bytes: number, options?: SustainableWebDesignOptions): { [key: string]: { first: number; return: number; }; }; /** * Accept a figure for bytes, and return the total figure for energy per visit * * @param {number} bytes * @return {number} the total energy use for the visit, after applying the caching assumptions */ energyPerVisit(bytes: number, options?: SustainableWebDesignOptions): number; emissionsPerVisitInGrams(energyPerVisit: number, carbonintensity?: number): number; annualEnergyInKwh(energyPerVisit: number, monthlyVisitors?: number): number; annualEmissionsInGrams(co2grams: number, monthlyVisitors?: number): number; annualSegmentEnergy(annualEnergy: number): { consumerDeviceEnergy: number; networkEnergy: number; dataCenterEnergy: number; productionEnergy: number; }; } export { SustainableWebDesign }; export default SustainableWebDesign; //# sourceMappingURL=sustainable-web-design.d.ts.map