[Ajuda.Dev] Typescript objetos dinamicos

Dificuldade nessa tipagem de objeto dinamico.

Salve Turma! Estou tentando aplicar um conceito no meu projeto onde eu utilize menos IFs passando como propriedade do objeto o tipo de retorno que eu gostaria de receber.

export const getUsefulKind0EventData = (data:Event)=>{
    const content = JSON.parse(data.content )as Kind0Metadata;
    return convertToUser({ ...content, created_at: data.created_at,pubkey:data.pubkey })
}

export const getUsefulKind3EventData = (data:Event):string[]=>{
    const idsToSearch = data.tags.filter(obj=>obj[0]=="p").map(obj=>obj[1]);
    return idsToSearch
}

export type eventKindType = UserData|string[]
type kindsDictionaryType = {[key:number  ]:(event:Event)=>eventKindType};

//kindDictionary[0](event)
 const kindsDictionary:kindsDictionaryType ={
    0:getUsefulKind0EventData,
    3:getUsefulKind3EventData
};
export default kindsDictionary;

Eu utilizaria a tipagem acima pra representar o retorno nesse modelo de dados.

import convertEventKind, { eventKindType } from "../../modelConversor/UserData";
  function getEvent<K extends number = number>(filters: Filter<K>[]) {
        
        return new Promise((resolve) => {
            if (!pool) return;
            const toReturn:eventKindType[] = []


            const sub = pool.sub([url], filters);

            sub.on("event", (event: Event) => {
                //Utilizo a função da tipagem aqui.
                toReturn.push(convertEventKind[event.kind](event))
            });

            sub.on("eose", () => {
                resolve(toReturn)
                sub.unsub();
            });

        })
    }

Porém o retorno desses dados estão recebendo o tipo unknown. https://imgur.com/NVpM5hK

Ai fica a dúvida

Será que consigo fazer com que a Tipagem do retorno da função seja reconhecida baseada no tipo (valor da propriedade) do objeto kindsDictionary?