Per-million-token pricing rates used by LLMProxy cost accounting.
This is an internal contract. Callers pass atom-keyed, typed values only.
@type t() :: %LLMProxy.Pricing.Rates{ cache_read: number(), cache_write: number(), input: number(), output: number() }
@spec new(keyword()) :: t()
@spec put(t(), :input | :output | :cache_read | :cache_write, number()) :: t()
@spec zero() :: t()