export default interface UnitConfigJson {

    /**
     * Every key from this list will be normalized
     */
    appliesToKey: string[],
    /**
     * If set, invalid values will be erased in the MC application (but not in OSM of course!)
     * Be careful with setting this
     */
    eraseInvalidValues?: boolean;
    /**
     * The possible denominations
     */
    applicableUnits: ApplicableUnitJson[]

}

export interface ApplicableUnitJson {
    /**
     * The canonical value which will be added to the text.
     * e.g. "m" for meters
     * If the user inputs '42', the canonical value will be added and it'll become '42m'
     */
    canonicalDenomination: string,
    /**
     * The canonical denomination in the case that the unit is precisely '1'
     */
    canonicalDenominationSingular?: string,


    /**
     * A list of alternative values which can occur in the OSM database - used for parsing.
     */
    alternativeDenomination?: string[],

    /**
     * The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.
     * {
     *     "en": "meter",
     *     "fr": "metre"
     * }
     */
    human?: string | any

    /**
     * The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.
     * {
     *     "en": "minute",
     *     "nl": "minuut"x²
     * }
     */
    humanSingular?: string | any

    /**
     * If set, then the canonical value will be prefixed instead, e.g. for '€'
     * Note that if all values use 'prefix', the dropdown might move to before the text field
     */
    prefix?: boolean

    /**
     * The default interpretation - only one can be set.
     * If none is set, the first unit will be considered the default interpretation of a value without a unit
     */
    default?: boolean
}