Contract integration
Don't call this contract (if you can avoid it)
This protocol uses cryptography in order to generate a unique hash from the domains, this means that the usage of soroban resources is high and that translates to higher fees... Let's remember that this contract's goal is to allow users to register a domain so dApps and wallets can show the domain instead of an Address because is way easier to remember a domain than a public key.
Since the contract translates to an Address anyway, it's better if you use that instead so your contract calls are cheaper... But if you really need to call this contract in order to get the public key a domain translates to, here are the details:
Translating a domain into an Address:
The first step is that from your contract you call the function:
fn parse_domain(e: Env, domain: Bytes, tld: Bytes) -> BytesN<32>;
This will give you the "node" of the Record
and so later you can create the Record key and get the record by calling:
fn record(e: Env, key: RecordKeys) -> Option<Record>;
You can check the code in this repo for the complete interface of the contract and all its types.