*/ public function getTypes(): array {} } /** * @psalm-immutable * * @template-covariant Start of string|DateTimeInterface * @implements IteratorAggregate */ class DatePeriod implements IteratorAggregate { const EXCLUDE_START_DATE = 1; const INCLUDE_END_DATE = 2; /** * @param Start $start * @param (Start is string ? int-mask : DateInterval) $interval * @param (Start is string ? never : (DateTimeInterface|positive-int)) $end * @param (Start is string ? never : int-mask) $options */ public function __construct($start, $interval = 0, $end = 1, $options = 0) {} /** @psalm-return (Start is string ? Iterator : Iterator) */ public function getIterator(): Iterator {} } }