*/ public function all(): array { /** @var list $options */ $options = config('currencies.options', []); return $options; } /** * @return list */ public function primaryCodes(): array { return array_values(array_map( fn (array $currency): string => $currency['code'], array_filter($this->all(), fn (array $currency): bool => $currency['allows_primary']) )); } /** * @return list */ public function accountCodes(): array { return array_values(array_map( fn (array $currency): string => $currency['code'], array_filter($this->all(), fn (array $currency): bool => $currency['allows_account']) )); } /** * @return list */ public function primaryOptions(): array { return $this->formatOptions($this->all(), 'allows_primary'); } /** * @return list */ public function accountOptions(): array { return $this->formatOptions($this->all(), 'allows_account'); } /** * @param list $options * @return list */ private function formatOptions(array $options, string $capability): array { return array_values(array_map( fn (array $currency): array => [ 'code' => $currency['code'], 'name' => __($currency['name']), ], array_filter($options, fn (array $currency): bool => $currency[$capability]) )); } }