function getTtl(): ?int
    {
        if (is_int($this->expiration)) {
            return $this->expiration;
        }

        if ($this->expiration instanceof \DateTimeInterface) {
            return $this->expiration->getTimestamp() - Clock::time();
        }

        if ($this->expiration instanceof \DateInterval) {
            return PsrCacheHelper::convertDateIntervalToTtl($this->expiration);
        }

        return null;
    }