This whole codebase should use type annotations. There shouldn't be any untyped definitions.
We should:
- Make sure mypy is set up in a way that disallows untyped definitions.
- Code can be annotated incrementally by adding exceptions per module to the config and removing them over time.
- Make sure mypy runs in CI.
- (Ideally) Make sure the codebase is also compatible with Ty (even if the enforcement is left to mypy still).
This whole codebase should use type annotations. There shouldn't be any untyped definitions.
We should: