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