import type {ReadonlyDeep} from 'type-fest';
import {expandMacro, Macros} from '../macros/index.js';
import type {Family} from '../types/index.js';
import {Id} from '../types/index.js';

export const time: ReadonlyDeep<Family> = {
	id: Id.Time,
	best: ['ns', 'μs', 'ms', 's', 'min', 'h', 'd', 'y'],
	conversions: [
		{names: ['second', 'seconds'], symbols: ['s'], ratio: 1},
		...expandMacro(Macros.si, {names: ['second', 'seconds'], symbols: ['s'], ratio: 1}),

		{names: ['minute', 'minutes'], symbols: ['min'], ratio: 60},
		{names: ['hour', 'hours'], symbols: ['h'], ratio: 60 * 60},
		{names: ['milliday', 'millidays'], symbols: ['md'], ratio: (60 * 60 * 24) / 1e3},
		{names: ['day', 'days'], symbols: ['d'], ratio: 60 * 60 * 24},
		{names: ['week', 'weeks'], symbols: ['wk'], ratio: 60 * 60 * 24 * 7},
		{names: ['fortnight', 'fortnights'], symbols: ['fn'], ratio: 60 * 60 * 24 * 14},
		{names: ['month', 'months'], symbols: ['mo'], ratio: 2.592e6},
		{names: ['year', 'years'], symbols: ['a', 'y', 'yr'], ratio: 3.1536e7},
		{names: ['decade', 'decades'], symbols: ['dec'], ratio: 3.155_695_2e8},
		// Symbol `c` is excluded to avoid conflict
		{names: ['century', 'centuries'], ratio: 3.155_695_2e9},
		{names: ['millennium', 'millennia'], ratio: 3.155_695_2e10},

		{names: ['moment', 'moments'], ratio: 90},
		{names: ['shake', 'shakes'], ratio: 1e-8},
		{names: ['time unit'], symbols: ['TU'], ratio: 1024e-6},
		{names: ['svedberg', 'svedbergs'], symbols: ['S'], ratio: 1e-13},
	],
};