How to bind a scripting language to a C++ engine?

Hi all,
I’m writing some very simple game engine using C++. I used that language because of the loads of available libraries (Box2D and Bullet for example) and performance.
However, When I have something that resembles an engine I don’t want to do the “surface scripting” in C++ as well. For that I would like to use a higher level language e.g. lua, Kotlin, Java etc.
My question is, if the physics engine, rendering engine is in C++, how do I combine that with a higher level language to create the scripting api and when the engine is “ready”, I don’t have to write a single line of C++?
Note, I’m aware of the JNI for example. But that would require binding the whole Bullet library, which is tremendous work.
Thanks for the help~