# Interfaces

Core interfaces used throughout the framework.

## Key Files

- **`IId.cs`** — `IId<T>` with `T Id { get; set; }`. The foundational interface for ID-bearing entities. Used by `CollectionExtensions` (merge/sync), `IdentityMap` (reference tracking), and all three serializers for reference resolution.
- **`IForeignKey.cs`** — Marker interfaces for navigation property detection:
  - `IForeignKey` — empty marker
  - `IForeignCollection<T>` — generic collection navigation marker (`T : IEnumerable`)
  - `IForeignCollection` — non-generic variant
- **`IAcSerializableToJson.cs`** — Empty marker interface tagging types that can serialize to JSON. Used for query-time type filtering.
