import React, { Dispatch, ReactNode, SetStateAction } from 'react'; import { EstimationResult, RecommendationResult, ServiceData } from '@cloud-carbon-footprint/common'; import { Filters, FiltersDateRange } from './common/FilterBar/utils/Filters'; import { DropdownSelections } from './common/FilterBar/utils/FiltersUtil'; export interface ServiceResult { data: T[]; loading: boolean; error: Error | null; } export interface cloudEstPerDay { x: Date; y: number; usesAverageCPUConstant?: boolean; kilowattHours?: number; cost?: number; } export interface DropdownOption { key: string; name: string; cloudProvider?: string; } export interface AllFilterOptionMap { [type: string]: DropdownOption; } export interface FilterOptions { [filterOption: string]: DropdownOption[]; } export interface FilterResultResponse { accounts: DropdownOption[]; services?: DropdownOption[]; recommendationTypes?: DropdownOption[]; regions?: DropdownOption[]; } export interface FiltersConfig { timeframe?: number; dateRange?: MaybeFiltersDateRange; options: DropdownSelections; } export declare type FilterBarProps = { filters: Filters; setFilters: Dispatch>; filterOptions: FilterOptions; filteredData?: FilterResults; setCo2eUnit?: Dispatch>; }; export interface Page { data: T[]; page: number; } export interface PageEntry { x: string[]; y: number; } export declare type MaybeFiltersDateRange = FiltersDateRange | null; export declare type ApexChartProps = { data: EstimationResult[]; dataType?: string; }; export declare type SidePanelProps = { drawerWidth: number; title: string; children: ReactNode; defaultIsOpen?: boolean; openOnChange?: RecommendationRow; onClose?: () => void; }; export declare type FilterProps = { filters: Filters; setFilters: Dispatch>; options?: FilterOptions; }; export declare type FilterLabelMapping = { [type in DropdownFilterOptions]?: string; }; export declare type UnknownTypesMapping = { [type in DropdownFilterOptions]?: UnknownTypes; }; export declare type FilterResults = EstimationResult[] | RecommendationResult[] | EmissionsAndRecommendationResults; export declare type DateRange = { min: Date | null; max: Date | null; }; export declare type Source = { href: string; title: string; }; export declare type ComparisonItem = { icon: React.ReactNode; total: number; textOne: string; textTwo: string; source: Source; }; export declare type RecommendationRow = RecommendationResult & { id: number; co2eUnit: Co2eUnit; }; export declare type EmissionsAndRecommendationResults = { recommendations: RecommendationResult[]; emissions: ServiceData[]; }; export declare enum ChartDataTypes { REGION = "region", SERVICE = "service", ACCOUNT = "account" } export declare enum UnknownTypes { UNKNOWN_REGION = "Unknown Region", UNKNOWN_SERVICE = "Unknown Service", UNKNOWN_ACCOUNT = "Unknown Account", UNKNOWN_RECOMMENDATION_TYPE = "Unknown Recommendation Type" } export declare enum DropdownFilterOptions { SERVICES = "services", CLOUD_PROVIDERS = "cloudProviders", ACCOUNTS = "accounts", RECOMMENDATION_TYPES = "recommendationTypes", REGIONS = "regions" } export declare const barChartCustomColors: string[]; export declare const filterLabels: FilterLabelMapping; export declare const unknownOptionTypes: UnknownTypesMapping; export declare enum Co2eUnit { Kilograms = "Kilograms", MetricTonnes = "MetricTonnes" }