prefix`-ed name keeps the add-on * from re-deriving it (and from getting the prefix wrong on multisite). * * Public promoted properties, NOT `readonly`: the plugin's PHP floor is 8.0. */ final class ProServices { /** * @param \Closure(array): array> $query One page of events; `ActivityLog::get_events()`'s arguments and row shape verbatim. * @param string $table The prefixed activity-log table name. * @param \Closure(): array{retention_days: int, store_full_ips: bool, ip_source: string} $settings The free plugin's effective settings, read fresh on every call. * @param \Closure(string, string, string|null, int|null, array|null, int|null=): void $log Write an event to the log; `EventLogger::log()`'s parameters. The sixth, who acted, was added (optional) by the login-alerts slice. */ public function __construct( public \Closure $query, public string $table, public \Closure $settings, public \Closure $log ) { } }