How to create/sign offline/send transaction programmatically?

Hello.

I’ve seen announcements about ICARUS, YOROI and hardware wallets. As far as I understand all of them require API (or SDK, or library) for creating raw transactions, offline signing and broadcasting signed transactions. But I can’t find such API. V1 doesn’t contain anything similar (https://cardanodocs.com/technical/wallet/api/v1/#). Instead, all transaction endpoints assumes wallet (and private key) to be imported into.

Is there a library for dealing with transactions in such a way? I mean creating raw transaction, offline signing, and sending to blockchain then. It’s rather common scenario, I guess.