import { DateFormatOptions, RegionInfoModel, RegionInfoOptions, TimeFormatOptions, UnitSource, UnitSystemOptions, UnitTuple } from './types';
import { BaseRegionResponse, RegionsResponse } from './services';
import { IConfigBeanModel } from '../config-bean/config-bean-model';

interface RegionSettingsService {
    unitSystemId: string;
    timeFormatId: string;
    dateFormatId: string;
    country: string;
    timeZone: string;
}
type RegionSettingsConfigBean = IConfigBeanModel<RegionSettingsService>;
/**
 * @ignore
 * @internal
 */
export declare class RegionInfoModelImpl<AdditionalData extends BaseRegionResponse = BaseRegionResponse> implements RegionInfoModel {
    id: string;
    private unitSystemMap;
    private measureMap;
    private defaultMeasureMap;
    private regionMap;
    private timeFormats;
    private dateFormats;
    private unitSystems;
    regionSource: RegionSettingsConfigBean;
    private region;
    private regions;
    private timeZoneMap;
    constructor(modelId: string);
    get availableRegions(): string[];
    get defaultUnitSystem(): string;
    get unitSystemId(): string;
    get timeFormatId(): string;
    get selectedTimeFormat(): string;
    get is12HourTimeFormat(): boolean;
    get dateFormatId(): string;
    get selectedDateFormat(): string;
    get selectedDateOrder(): string;
    get selectedCountry(): string;
    get selectedTimeZone(): string;
    get timeZones(): string[];
    get allTimeZones(): string[];
    get regionId(): string;
    get selectedRegion(): RegionsResponse<AdditionalData>;
    get selectedUnitSystem(): string;
    get timeFormatOptions(): TimeFormatOptions[];
    get dateFormatOptions(): DateFormatOptions[];
    get unitSystemOptions(): UnitSystemOptions[];
    setSelectedTimeFormat(timeFormatId: string): void;
    setSelectedDateFormat(dateFormatId: string): void;
    setSelectedUnitSystem(unitSystemId: string): void;
    getUnitSystem(_unit?: string): string;
    getUnitMeasure(_unit: string): string;
    /**
     *@internal
     */
    getDefaultUnitDecimalPlaces(measure: string, unitSystem: string, _unit?: string): any;
    /**
     *@internal
     */
    getDefaultUnitForMeasure(measure: string, unitSystem: string): string;
    /**
     *@internal
     */
    convertByUnit(value: number, fromUnit: UnitTuple, toUnit: UnitTuple): string;
    /**
     *@internal
     */
    convertByUnitName(value: number, from: string, to: string): string;
    /**
     * @internal
     */
    convert(value: number, from: UnitSource, to: UnitSource): string;
    /**
     * @internal
     */
    init(): Promise<void>;
    /**
     * @internal
     */
    load(): Promise<void>;
    /**
     * @internal
     */
    ready(): Promise<void>;
}
declare const Registration: {
    registration: {
        "region-info-model": {
            class: typeof RegionInfoModelImpl;
            singleton: boolean;
        };
    };
    type: string;
    factory: (options?: RegionInfoOptions | undefined, parentId?: string | undefined) => RegionInfoModel<BaseRegionResponse>;
};
export default Registration;
//# sourceMappingURL=region-info-model.d.ts.map