*/ public function paginate(array $filters, string $sort, string $direction, int $page, int $perPage): array { if ($this->authoritative?->available()) { return $this->authoritative->paginate($filters, $sort, $direction, $page, $perPage); } return $this->source->paginateChannel( $filters, $sort, $direction, $page, $perPage, self::SOURCE_CHANNEL, 'douyin', ); } /** @return iterable> */ public function exportRows(array $filters, string $sort = 'occurred_at', string $direction = 'asc'): iterable { if ($this->authoritative?->available()) { return $this->authoritative->exportRows($filters, $sort, $direction); } return $this->source->exportChannelRows( $filters, $sort, $direction, self::SOURCE_CHANNEL, 'douyin', ); } /** @return array{shops:array,bill_items:array} */ public function filterOptions(): array { if ($this->authoritative?->available()) { return $this->authoritative->filterOptions(); } return $this->source->filterOptionsForChannel(self::SOURCE_CHANNEL); } }