class Archetype
  include ActiveModel::Serialization

  attr_accessor :id, :options

  def initialize(id, options)
    @id = id
    @options = options
  end

  def attributes
    {
      id: @id,
      options: @options
    }
  end

  def self.default
    'regular'
  end

  def self.private_message
    'private_message'
  end

  def self.banner
    'banner'
  end

  def self.list
    return [] unless @archetypes.present?
    @archetypes.values
  end

  def self.register(name, options = {})
    @archetypes ||= {}
    @archetypes[name] = Archetype.new(name, options)
  end

  # default archetypes
  register 'regular'
  register 'private_message'
  register 'banner'

end