The behaviour for a calculation module
calculate([Ash.Resource.record()], Keyword.t(), map()) :: {:ok, [term()]} | [term()] | {:error, term()}
describe(Keyword.t()) :: String.t()
init(Keyword.t()) :: {:ok, Keyword.t()} | {:error, term()}
type() :: Ash.Type.t()