defmodule MaxElixirPokeApi.Behaviour do @moduledoc """ Behaviour from MaxElixirPokeApi. """ @typedoc """ Identifier as `{id or name}` used in `https://pokeapi.co/api/v2/{resource}/{id or name}/` """ @type id_or_name :: String.t() | integer() @typedoc """ Response from lib functions """ @type response :: {:ok, map} | {:error, %{reason: String.t()}} @callback resource(atom, integer, integer) :: response @callback berry(id_or_name) :: response @callback berry_firmness(id_or_name) :: response @callback berry_flavor(id_or_name) :: response @callback contest_type(id_or_name) :: response @callback contest_effect(integer) :: response @callback super_contest_effect(integer) :: response @callback encounter_method(id_or_name) :: response @callback encounter_condition(id_or_name) :: response @callback encounter_condition_value(id_or_name) :: response @callback evolution_chain(integer) :: response @callback evolution_trigger(id_or_name) :: response @callback generation(id_or_name) :: response @callback pokedex(id_or_name) :: response @callback version(id_or_name) :: response @callback version_group(id_or_name) :: response @callback item(id_or_name) :: response @callback item_attribute(id_or_name) :: response @callback item_category(id_or_name) :: response @callback item_fling_effect(id_or_name) :: response @callback item_pocket(id_or_name) :: response @callback location(id_or_name) :: response @callback location_area(id_or_name) :: response @callback pal_park_area(id_or_name) :: response @callback region(id_or_name) :: response @callback machine(integer) :: response @callback move(id_or_name) :: response @callback move_ailment(id_or_name) :: response @callback move_battle_style(id_or_name) :: response @callback move_category(id_or_name) :: response @callback move_damage_class(id_or_name) :: response @callback move_learn_method(id_or_name) :: response @callback move_target(id_or_name) :: response @callback ability(id_or_name) :: response @callback characteristic(integer) :: response @callback egg_group(id_or_name) :: response @callback gender(id_or_name) :: response @callback growth_rate(id_or_name) :: response @callback nature(id_or_name) :: response @callback pokeathlon_stat(id_or_name) :: response @callback pokemon(id_or_name) :: response @callback pokemon_color(id_or_name) :: response @callback pokemon_form(id_or_name) :: response @callback pokemon_habitat(id_or_name) :: response @callback pokemon_shape(id_or_name) :: response @callback pokemon_species(id_or_name) :: response @callback stat(id_or_name) :: response @callback type(id_or_name) :: response @callback language(id_or_name) :: response end