Base class for packages providing name storage and default match implementation
Package containing additional metadata that is not used by the solver
Represents a link between two packages, represented by their names
Reads/writes project lockfile (composer.lock).
Core package definitions that are needed to resolve dependencies and install packages
The root package represents the project's composer.json and contains additional metadata


Defines package metadata that is not necessarily needed for solving and installing packages
Defines the essential information a package has that is used during solving/installation
Defines additional fields that are only needed for the root package