#pragma once

#include "qc/basis.hpp"
#include "qc/matrix.hpp"

#include <vector>

namespace qc {

struct MolecularIntegrals {
  Matrix S;
  Matrix T;
  Matrix V;
  std::vector<double> eri;

  double eri_index(std::size_t i, std::size_t j, std::size_t k,
                   std::size_t l) const;
};

MolecularIntegrals compute_integrals(const Basis& basis,
                                     const std::vector<Atom>& atoms);

}  // namespace qc
