* * @since 0.1.0 */ public function find_by_email( EmailAddress $email ): array; /** * Paginated list with optional search. * * @param int $limit Max rows. * @param int $offset Offset. * @param string|null $search Optional search term. * @return array{items: list, total: int} * * @since 0.1.0 */ public function find_all( int $limit, int $offset, ?string $search = null ): array; /** * Persist the entity. * * @param Customer $customer Parameter. * @since 0.1.0 */ public function save( Customer $customer ): void; /** * Soft-delete the entity. * * @param Customer $customer Parameter. * @param DateTimeImmutable $when Parameter. * @since 0.1.0 */ public function soft_delete( Customer $customer, DateTimeImmutable $when ): void; }