import type { SupportedLocale } from "@arcgis/toolkit/intl";

export type CommonStrings = ReturnType<typeof CommonStringsIdentity>;

export type ErrorStrings = ReturnType<typeof CommonStringsIdentity>["errorStrings"];

export type UtilsStrings = ReturnType<typeof CommonStringsIdentity>["utilsStrings"];

/** @internal */
export type CustomAmchartsStrings = ReturnType<typeof CommonStringsIdentity>["customAmchartsStrings"];

/** @internal */
export type LocaleItem = { [key: string]: LocaleItem | string; };

/** @internal */
export interface ComponentLocaleItem<T extends LocaleItem> {
  strings: T;
  direction: "ltr" | "rtl";
}

/** @internal */
export const SupportedLocalesForFormats: (("id" | "ar" | "bg" | "bs" | "ca" | "cs" | "da" | "de" | "el" | "en" | "es" | "et" | "fi" | "fr" | "he" | "hr" | "hu" | "it" | "ja" | "ko" | "lt" | "lv" | "nl" | "nb" | "no" | "pl" | "pt-BR" | "pt-PT" | "ro" | "ru" | "sk" | "sl" | "sr" | "sv" | "th" | "tr" | "uk" | "vi" | "zh-CN" | "zh-HK" | "zh-TW") | string | string | string | string | string | string | string | string | string | string | string)[];

/** @internal */
export type SupportedLocalesForFormats = SupportedLocale | "ar-u-nu-latn" | "de-AT" | "de-CH" | "de-DE" | "en-AU" | "en-GB" | "es-ES" | "es-MX" | "fr-CA" | "it-CH" | "it-IT";

/** @internal */
export interface LocaleInfo {
  locale: SupportedLocale;
  formatLocale: SupportedLocalesForFormats;
  rtl: boolean;
}

export const CommonStringsIdentity: (value: {
    utilsStrings: {
        chartType: {
            chart: string;
            barChart: string;
            lineChart: string;
            pieChart: string;
            histogram: string;
            scatterplot: string;
            boxPlot: string;
            heatChart: string;
            calendarHeatChart: string;
            matrixHeatChart: string;
        };
        statistics: {
            mean: string;
            median: string;
            sum: string;
            discretePercentile: string;
            minimum: string;
            maximum: string;
            firstQuartile: string;
            thirdQuartile: string;
            iqr: string;
            standardDeviation: string;
            variance: string;
            count: string;
            aggregation: string;
            percent: string;
            noAggregation: string;
            meanValue: string;
        };
        overlays: {
            mean: string;
            median: string;
            stdDev: string;
            normal: string;
            trendline: string;
        };
        actions: {
            editChart: string;
            expand: string;
            collapse: string;
        };
        tooltips: { logDisabled: string; };
        guideTooltipLabel: string;
        pieChart: { defaultSliceGroupingLabel: string; };
        notAvailable: string;
        field: string;
        heatChartCalendarDatePartsUnits: {
            dayOfWeek: string;
            monthOfYear: string;
            dayOfMonth: string;
            hourOfDay: string;
            dayOfYear: string;
            minuteOfDay: string;
            weekOfYear: string;
            quarterOfYear: string;
        };
        null: string;
    };
    errorStrings: {
        errorHeading: string;
        placeholders: {
            barChartCreateMsg: string;
            boxPlotCreateMsg: string;
            lineChartCreateMsg: string;
            pieChartCreateMsg: string;
            histogramCreateMsg: string;
            scatterplotCreateMsg: string;
            calendarHeatChartCreateMsg: string;
        };
        notifications: {
            invalidConfig: string;
            invalidSeriesConfig: string;
            invalidSeriesConfigTitle: string;
            validateAggregationTypeMsg: string;
            missingNumericFields: string;
            noAggregationRequiresNumericFields: string;
        };
        tooManySelectedElements: {
            title: string;
            message: string;
        };
        incompatibleChartVersion: {
            title: string;
            message: string;
        };
        modalHeaders: {
            invalidData: string;
            invalidChart: string;
            noDataAvailable: string;
            tooManyFeatures: string;
            cannotCombineNegativeAndPositiveSlices: string;
            error: string;
            warning: string;
            newChart: string;
        };
        errors: {
            divNode: string;
            errorRequest: string;
            warningRequest: string;
            newChartRequest: string;
            invalidValueFormatForLineChart: string;
            invalidValueFormatForBarChart: string;
            invalidValueFormatForComboBarLineChart: string;
            invalidValueFormatForBoxPlot: string;
            invalidValueFormatForHistogram: string;
            invalidValueFormatForScatterplot: string;
            invalidValueFormatForGauge: string;
            invalidValueFormatForHeatChart: string;
            mismatchAxisAndValueFormat: string;
            queryError: string;
            simpleError: string;
            defaultInvalidChart: string;
            categoryCountCannotExceedLimit: string;
            uniqueSeriesBarCountCannotExceedLimit: string;
            twoSeriesBarCountCannotExceedLimit: string;
            threePlusSeriesBarCountCannotExceedLimit: string;
            barSeriesCountCannotExceedLimit: string;
            uniqueSeriesLineCountCannotExceedLimit: string;
            twoSeriesLineCountCannotExceedLimit: string;
            threePlusSeriesLineCountCannotExceedLimit: string;
            uniqueTemporalSeriesLineCountCannotExceedLimit: string;
            twoTemporalSeriesLineCountCannotExceedLimit: string;
            threePlusTemporalSeriesLineCountCannotExceedLimit: string;
            lineSeriesCountCannotExceedLimit: string;
            uniqueSeriesBoxCountCannotExceedLimit: string;
            twoSeriesBoxCountCannotExceedLimit: string;
            threePlusBoxLineCountCannotExceedLimit: string;
            boxSeriesCountCannotExceedLimit: string;
            boxSeriesOutlierCannotExceedLimit: string;
            pieChartCannotHaveMixtureOfPositiveAndNegativeSlices: string;
            pieChartSlicesCannotExceedLimit: string;
            gaugeCannotExceedLimit: string;
            heatChartCannotExceedLimit: string;
            negativeValueInDataForLogTransformation: string;
            negativeValueInDataForSqrtTransformation: string;
            logarithmicXAxisNotPossible: string;
            logarithmicYAxisNotPossible: string;
            histogramEmptyField: string;
            noDataMessage: string;
            noDataFBSMessage: string;
            noDataFBEMessage: string;
            exportImageChartNotReady: string;
            exportImage: string;
            defaultError: string;
            layerLoadFailure: string;
            layerFieldsNotFound: string;
            duplicateSeriesID: string;
            nonNumericAggregation: string;
            requiredProperty: string;
            minLength: string;
            minItems: string;
            maxItems: string;
            whiteSpacePattern: string;
            additionalProperty: string;
            enumValues: string;
            anyOfValues: string;
            bubbleChartValidateMsg: string;
            queryBinsNotSupported: string;
            invalidSeriesType: string;
            or: string;
        };
    };
    countSeries: string;
    xAxis: string;
    timeAggregationTypes: {
        start: string;
        end: string;
    };
    axisLabels: {
        values: string;
        standardizedValues: string;
        aggregationOfValues: string;
        aggregationOfFieldName: string;
    };
    titleLabels: {
        aggrFieldsByCategory: string;
        aggrTypeCategory: string;
        aggrTypeCategoryBySplitBy: string;
        aggrTypeOfAggrFields: string;
        aggrTypeOfAggrFieldByCategoryBySplitByField: string;
        aggrTypeOfAggrFieldsByCategory: string;
        aggrFieldsByXAxisField: string;
        aggrTypeXAxisField: string;
        aggrTypeXAxisFieldBySplitBy: string;
        aggrTypeOfAggrFieldByXAxisFieldBySplitByField: string;
        aggrTypeOfAggrFieldsByXAxisField: string;
        distributionOfField: string;
        distributionOfFields: string;
        distributionOfFieldsByCategory: string;
        distributionOfFieldsByCategoryAndSplitBy: string;
        xAndY: string;
    };
    customAmchartsStrings: {
        "Zoom Out": string;
        Play: string;
        Stop: string;
        Legend: string;
        "Press ENTER to toggle": string;
        Loading: string;
        Home: string;
        Chart: string;
        "Serial chart": string;
        "X/Y chart": string;
        "Pie chart": string;
        "Gauge chart": string;
        "Radar chart": string;
        "Sankey diagram": string;
        "Flow diagram": string;
        "Chord diagram": string;
        "TreeMap chart": string;
        "Sliced chart": string;
        Series: string;
        "Candlestick Series": string;
        "OHLC Series": string;
        "Column Series": string;
        "Line Series": string;
        "Pie Slice Series": string;
        "Funnel Series": string;
        "Pyramid Series": string;
        "X/Y Series": string;
        Map: string;
        "Press ENTER to zoom in": string;
        "Press ENTER to zoom out": string;
        "Use arrow keys to zoom in and out": string;
        "Use plus and minus keys on your keyboard to zoom in and out": string;
        Export: string;
        Image: string;
        Data: string;
        Print: string;
        "Press ENTER to open": string;
        "Press ENTER to print.": string;
        "Press ENTER to export as %1.": string;
        "(Press ESC to close this message)": string;
        "Image Export Complete": string;
        "Export operation took longer than expected. Something might have gone wrong.": string;
        "Saved from": string;
        "Use TAB to select grip buttons or left and right arrows to change selection": string;
        "Use left and right arrows to move selection": string;
        "Use left and right arrows to move left selection": string;
        "Use left and right arrows to move right selection": string;
        "Use TAB select grip buttons or up and down arrows to change selection": string;
        "Use up and down arrows to move selection": string;
        "Use up and down arrows to move lower selection": string;
        "Use up and down arrows to move upper selection": string;
        "From %1 to %2": string;
        "From %1": string;
        "To %1": string;
        "No parser available for file: %1": string;
        "Error parsing file: %1": string;
        "Unable to load file: %1": string;
        "Invalid date": string;
    };
}) => {
    utilsStrings: {
        chartType: {
            chart: string;
            barChart: string;
            lineChart: string;
            pieChart: string;
            histogram: string;
            scatterplot: string;
            boxPlot: string;
            heatChart: string;
            calendarHeatChart: string;
            matrixHeatChart: string;
        };
        statistics: {
            mean: string;
            median: string;
            sum: string;
            discretePercentile: string;
            minimum: string;
            maximum: string;
            firstQuartile: string;
            thirdQuartile: string;
            iqr: string;
            standardDeviation: string;
            variance: string;
            count: string;
            aggregation: string;
            percent: string;
            noAggregation: string;
            meanValue: string;
        };
        overlays: {
            mean: string;
            median: string;
            stdDev: string;
            normal: string;
            trendline: string;
        };
        actions: {
            editChart: string;
            expand: string;
            collapse: string;
        };
        tooltips: { logDisabled: string; };
        guideTooltipLabel: string;
        pieChart: { defaultSliceGroupingLabel: string; };
        notAvailable: string;
        field: string;
        heatChartCalendarDatePartsUnits: {
            dayOfWeek: string;
            monthOfYear: string;
            dayOfMonth: string;
            hourOfDay: string;
            dayOfYear: string;
            minuteOfDay: string;
            weekOfYear: string;
            quarterOfYear: string;
        };
        null: string;
    };
    errorStrings: {
        errorHeading: string;
        placeholders: {
            barChartCreateMsg: string;
            boxPlotCreateMsg: string;
            lineChartCreateMsg: string;
            pieChartCreateMsg: string;
            histogramCreateMsg: string;
            scatterplotCreateMsg: string;
            calendarHeatChartCreateMsg: string;
        };
        notifications: {
            invalidConfig: string;
            invalidSeriesConfig: string;
            invalidSeriesConfigTitle: string;
            validateAggregationTypeMsg: string;
            missingNumericFields: string;
            noAggregationRequiresNumericFields: string;
        };
        tooManySelectedElements: {
            title: string;
            message: string;
        };
        incompatibleChartVersion: {
            title: string;
            message: string;
        };
        modalHeaders: {
            invalidData: string;
            invalidChart: string;
            noDataAvailable: string;
            tooManyFeatures: string;
            cannotCombineNegativeAndPositiveSlices: string;
            error: string;
            warning: string;
            newChart: string;
        };
        errors: {
            divNode: string;
            errorRequest: string;
            warningRequest: string;
            newChartRequest: string;
            invalidValueFormatForLineChart: string;
            invalidValueFormatForBarChart: string;
            invalidValueFormatForComboBarLineChart: string;
            invalidValueFormatForBoxPlot: string;
            invalidValueFormatForHistogram: string;
            invalidValueFormatForScatterplot: string;
            invalidValueFormatForGauge: string;
            invalidValueFormatForHeatChart: string;
            mismatchAxisAndValueFormat: string;
            queryError: string;
            simpleError: string;
            defaultInvalidChart: string;
            categoryCountCannotExceedLimit: string;
            uniqueSeriesBarCountCannotExceedLimit: string;
            twoSeriesBarCountCannotExceedLimit: string;
            threePlusSeriesBarCountCannotExceedLimit: string;
            barSeriesCountCannotExceedLimit: string;
            uniqueSeriesLineCountCannotExceedLimit: string;
            twoSeriesLineCountCannotExceedLimit: string;
            threePlusSeriesLineCountCannotExceedLimit: string;
            uniqueTemporalSeriesLineCountCannotExceedLimit: string;
            twoTemporalSeriesLineCountCannotExceedLimit: string;
            threePlusTemporalSeriesLineCountCannotExceedLimit: string;
            lineSeriesCountCannotExceedLimit: string;
            uniqueSeriesBoxCountCannotExceedLimit: string;
            twoSeriesBoxCountCannotExceedLimit: string;
            threePlusBoxLineCountCannotExceedLimit: string;
            boxSeriesCountCannotExceedLimit: string;
            boxSeriesOutlierCannotExceedLimit: string;
            pieChartCannotHaveMixtureOfPositiveAndNegativeSlices: string;
            pieChartSlicesCannotExceedLimit: string;
            gaugeCannotExceedLimit: string;
            heatChartCannotExceedLimit: string;
            negativeValueInDataForLogTransformation: string;
            negativeValueInDataForSqrtTransformation: string;
            logarithmicXAxisNotPossible: string;
            logarithmicYAxisNotPossible: string;
            histogramEmptyField: string;
            noDataMessage: string;
            noDataFBSMessage: string;
            noDataFBEMessage: string;
            exportImageChartNotReady: string;
            exportImage: string;
            defaultError: string;
            layerLoadFailure: string;
            layerFieldsNotFound: string;
            duplicateSeriesID: string;
            nonNumericAggregation: string;
            requiredProperty: string;
            minLength: string;
            minItems: string;
            maxItems: string;
            whiteSpacePattern: string;
            additionalProperty: string;
            enumValues: string;
            anyOfValues: string;
            bubbleChartValidateMsg: string;
            queryBinsNotSupported: string;
            invalidSeriesType: string;
            or: string;
        };
    };
    countSeries: string;
    xAxis: string;
    timeAggregationTypes: {
        start: string;
        end: string;
    };
    axisLabels: {
        values: string;
        standardizedValues: string;
        aggregationOfValues: string;
        aggregationOfFieldName: string;
    };
    titleLabels: {
        aggrFieldsByCategory: string;
        aggrTypeCategory: string;
        aggrTypeCategoryBySplitBy: string;
        aggrTypeOfAggrFields: string;
        aggrTypeOfAggrFieldByCategoryBySplitByField: string;
        aggrTypeOfAggrFieldsByCategory: string;
        aggrFieldsByXAxisField: string;
        aggrTypeXAxisField: string;
        aggrTypeXAxisFieldBySplitBy: string;
        aggrTypeOfAggrFieldByXAxisFieldBySplitByField: string;
        aggrTypeOfAggrFieldsByXAxisField: string;
        distributionOfField: string;
        distributionOfFields: string;
        distributionOfFieldsByCategory: string;
        distributionOfFieldsByCategoryAndSplitBy: string;
        xAndY: string;
    };
    customAmchartsStrings: {
        "Zoom Out": string;
        Play: string;
        Stop: string;
        Legend: string;
        "Press ENTER to toggle": string;
        Loading: string;
        Home: string;
        Chart: string;
        "Serial chart": string;
        "X/Y chart": string;
        "Pie chart": string;
        "Gauge chart": string;
        "Radar chart": string;
        "Sankey diagram": string;
        "Flow diagram": string;
        "Chord diagram": string;
        "TreeMap chart": string;
        "Sliced chart": string;
        Series: string;
        "Candlestick Series": string;
        "OHLC Series": string;
        "Column Series": string;
        "Line Series": string;
        "Pie Slice Series": string;
        "Funnel Series": string;
        "Pyramid Series": string;
        "X/Y Series": string;
        Map: string;
        "Press ENTER to zoom in": string;
        "Press ENTER to zoom out": string;
        "Use arrow keys to zoom in and out": string;
        "Use plus and minus keys on your keyboard to zoom in and out": string;
        Export: string;
        Image: string;
        Data: string;
        Print: string;
        "Press ENTER to open": string;
        "Press ENTER to print.": string;
        "Press ENTER to export as %1.": string;
        "(Press ESC to close this message)": string;
        "Image Export Complete": string;
        "Export operation took longer than expected. Something might have gone wrong.": string;
        "Saved from": string;
        "Use TAB to select grip buttons or left and right arrows to change selection": string;
        "Use left and right arrows to move selection": string;
        "Use left and right arrows to move left selection": string;
        "Use left and right arrows to move right selection": string;
        "Use TAB select grip buttons or up and down arrows to change selection": string;
        "Use up and down arrows to move selection": string;
        "Use up and down arrows to move lower selection": string;
        "Use up and down arrows to move upper selection": string;
        "From %1 to %2": string;
        "From %1": string;
        "To %1": string;
        "No parser available for file: %1": string;
        "Error parsing file: %1": string;
        "Unable to load file: %1": string;
        "Invalid date": string;
    };
};