// Experimental: the circuit is independent of the selected backend.
// Only quantum.cpu() executes today. Other descriptors report unavailable.
import aner.quantum

let backend = quantum.cpu()
// Future alternatives, once compatible adapters are implemented:
// let backend = quantum.gpu()
// let backend = quantum.cluster()
// let backend = quantum.hardware(target: "configured-device")

let program = quantum.circuit(qubits: 3).h(0).cx(0, 1).cx(1, 2)
let result = program.run(backend: backend, shots: 2048, seed: 42)
print(result.counts())
print(result.count("000") + result.count("111") == result.shots())

print("Backend availability in this development runtime")
print(quantum.cpu().available())
print(quantum.gpu().available())
print(quantum.cluster().available())
print(quantum.hardware(target: "configured-device").available())
// Running with an unavailable descriptor raises E_QUANTUM_BACKEND.
// No connection or remote job is created by constructing a descriptor.
