$state State from the last call ([] to start). * @param float $budget Seconds to spend at most (roughly). * @return array{count: int, done: bool, state: array} `count` is the running * total (-1: can't be counted); `done` true when finished. */ public function count( array $state, float $budget ): array; /** * A few example rows, already masked and cut (never secrets, session data or passwords). * * @since 1.0.0 * @param int $limit Rows (at most 10). * @return array{columns: array, rows: array>} */ public function sample( int $limit = 10 ): array; /** * Delete rows, resumably. * * @since 1.0.0 * @param array $state State from the last call ([] to start). * @param int $batch Rows per statement. * @param float $budget Seconds to spend at most (roughly). * @return array{deleted: int, skipped: int, notes: array, done: bool, state: array, progress?: bool} * Optional `progress` true tells the weekly job a step that deleted nothing and kept * its state still moved on (otherwise such a step counts as "no progress"). */ public function clean( array $state, int $batch, float $budget ): array; }