QAN has developer kits containing blockchain-specific external calls and convenient types to ease contract development. Using this kit is not mandatory to develop QAN contracts, but definitely makes it easier as otherwise a developer has to implement serialization and non-primitive types manually. For smaller contracts however (for example a voting contract) an unmodified WASM binary is a valid smart contract.
A goal while developing these SDKs is to hide as much of the underlying blockchain target from developers as we can, while not abusing the language itself. This means the blockchain functionaly of our SDK is mostly visible only trough macros and annotators and the rest is standard Rust, Typescript etc.
See our examples and guides for various languages in subsections.