# Core Contracts

### PID

`PID` is the core NFT contract that represents Payment ID ownership as ERC-721 tokens. It handles token registration, transfers, and delegates ownership and resolver management to the PIDRegistry contract. This contract implements the tokenized representation of Payment IDs, allowing them to be transferred, approved, and managed like standard NFTs.

### PIDRegistry

`PIDRegistry` is a core contract in the Payment ID system that manages the mapping between tokenIds and their respective owners and resolvers. It serves as the central registry for all Payment ID records, maintaining ownership information and resolver configurations for each tokenId.

### RegistrationController

`RegistrationController` is a contract that manages the registration process for Payment ID tokens. The contract allows users to register new Payment IDs and configure their address records across different source types and chains. It enforces registration rules and ensures proper initialization of associated resolver records.

### AddrResolver

AddrResolver is an abstract contract responsible for managing address records associated with Payment ID tokens, supporting both direct updates and signature-based authorization.

### PublicResolver

`PublicResolver` is a contract that provides additional functionality for managing operator approvals and registration controllers for Payment ID tokens. The contract supports both direct and signature-based authorization.
