import modules from '../modules' type GetGetter = Module extends { getters: infer G } ? G : unknown type GetGetters = { [K in keyof Modules]: GetGetter } type TotalGetters = GetGetters type AddPrefix = `${P & string}/${K & string}` type GetSpliceKey = AddPrefix type GetSpliceKeys = { [K in keyof Modules]: GetSpliceKey }[keyof Modules] type GetFunc = T[A & keyof T][B & keyof T[A & keyof T]] type GetSpliceObj = { [K in GetSpliceKeys]: K extends `${infer A}/${infer B}` ? GetFunc : unknown } type ModuleGetters = GetSpliceObj type Getters = { [K in keyof ModuleGetters]: ReturnType } export { Getters }