<?php

namespace NoahVet\Reef\Business\Enumerator;

use NoahVet\Reef\Jane\Model\VeterinaryGroupResponse;

/**
 * @psalm-type VeterinaryGroupFilter = array{
 *     isRegularized?: bool,
 *     vguUser?: string[],
 *     id?: string[],
 *     veterinaryEstablishmentId?: string[],
 *     vguUserId?: string[],
 *     entitled?: string[],
 *     groupCode?: string[],
 *     fromCreatedDate?: string[],
 *     fromUpdatedDate?: string[],
 *     toCreatedDate?: string[],
 *     toUpdatedDate?: string[],
 *     sortCreatedDate?: string,
 *     sortEntryNumber?: string,
 *     sortGroupCode?: string,
 *     sortName?: string,
 *     sortType?: string,
 *     sortUpdatedDate?: string
 * }
 */
interface VeterinaryGroupEnumeratorInterface
{
    /**
     * @param VeterinaryGroupFilter $filters
     *
     * @return \Generator<VeterinaryGroupResponse>
     *
     * @see Client::getAllVeterinaryGroup
     */
    public function enumerateAll(array $filters = [], int $querySize = 50): \Generator;
}
