¿Cómo se debe escribir la función de flujo lodash en mecanografiado?

lodash.flow combina dos o más funciones.

lodash.flow(double, addTwo) devolvería una función que duplicaría y agregaría dos. ¿Cómo debe escribirse esta función en mecanografiado (la definición actual solo devuelve Función)?

declare function flow<In, Intermediate, Out>(f1: (a1: In) => Intermediate, f2: (a1: Intermediate) => Out): (a1: In)=> Out funciona para dos funciones, la primera con un argumento de entrada. No estoy seguro de cómo extender la definición para que funcione en todos los casos.

Mi intento puede admitir funciones múltiples si se llama así:

lodash.flow(f1, lodash.flow(f2, f3))

pero estoy buscando

lodash.flow(f1, f2, f3)

Respuestas a la pregunta(1)

Su respuesta a la pregunta