import type { Mantra } from '../types.js'
import omNamahShivaya from './om-namah-shivaya.js'
import omNamoNarayanaya from './om-namo-narayanaya.js'
import gayatri from './gayatri.js'
import mahaMrityunjaya from './maha-mrityunjaya.js'
import hareKrishnaMahamantra from './hare-krishna-mahamantra.js'
import omGanGanapatayeNamah from './om-gan-ganapataye-namah.js'
import omHamHanumateNamah from './om-ham-hanumate-namah.js'
import omShrimMahalakshmyaiNamah from './om-shrim-mahalakshmyai-namah.js'
import ramaTaraka from './rama-taraka.js'
import omDumDurgayaiNamah from './om-dum-durgayai-namah.js'
import omAimSaraswatyaiNamah from './om-aim-saraswatyai-namah.js'
import omParvatyaiNamah from './om-parvatyai-namah.js'
import omKrimKalikayaiNamah from './om-krim-kalikayai-namah.js'
import suryaGayatri from './surya-gayatri.js'
import omBrahmaneNamah from './om-brahmane-namah.js'
import omSaiRam from './om-sai-ram.js'
import omSantoshiMatayaiNamah from './om-santoshi-matayai-namah.js'
import omJanakyaiNamah from './om-janakyai-namah.js'
import omShriKhatuShyamayaNamah from './om-shri-khatu-shyamaya-namah.js'
import omVaishnoDevyaiNamah from './om-vaishno-devyai-namah.js'
import narasimhaMahaMantra from './narasimha-maha-mantra.js'

// `as const satisfies` keeps the literal key union (so `MantraSlug` auto-
// updates as mantras are added) while still type-checking each value
// against `Mantra`.
const mantrasBySlug = {
  'om-namah-shivaya': omNamahShivaya,
  'om-namo-narayanaya': omNamoNarayanaya,
  'gayatri': gayatri,
  'maha-mrityunjaya': mahaMrityunjaya,
  'hare-krishna-mahamantra': hareKrishnaMahamantra,
  'om-gan-ganapataye-namah': omGanGanapatayeNamah,
  'om-ham-hanumate-namah': omHamHanumateNamah,
  'om-shrim-mahalakshmyai-namah': omShrimMahalakshmyaiNamah,
  'rama-taraka': ramaTaraka,
  'om-dum-durgayai-namah': omDumDurgayaiNamah,
  'om-aim-saraswatyai-namah': omAimSaraswatyaiNamah,
  'om-parvatyai-namah': omParvatyaiNamah,
  'om-krim-kalikayai-namah': omKrimKalikayaiNamah,
  'surya-gayatri': suryaGayatri,
  'om-brahmane-namah': omBrahmaneNamah,
  'om-sai-ram': omSaiRam,
  'om-santoshi-matayai-namah': omSantoshiMatayaiNamah,
  'om-janakyai-namah': omJanakyaiNamah,
  'om-shri-khatu-shyamaya-namah': omShriKhatuShyamayaNamah,
  'om-vaishno-devyai-namah': omVaishnoDevyaiNamah,
  'narasimha-maha-mantra': narasimhaMahaMantra,
} as const satisfies Record<string, Mantra>

export type MantraSlug = keyof typeof mantrasBySlug

export default mantrasBySlug
