Если у тебя не описан контракт функции в типах то ты не знаешь чего ожидать и на что рассчитывать
Мысль о том, что есть два разных типа API, одно (публичное) является контрактом реализующей стороны, другое (внутреннее) - контрактом вызывающей стороны, и ситуации могут в корне различаться