module MacawFramework
  class Macaw
    @bind: string
    @cache: untyped
    @endpoints_to_cache: Array[String]
    @macaw_log: Logger
    @port: int

    @prometheus: untyped
    @server: Server

    @threads: Integer

    attr_reader routes: Array[String]

    def delete: -> nil

    def get: -> nil

    def patch: -> nil

    def post: -> nil

    def put: -> nil

    def start!: -> nil

    private

    def extract_body: -> string

    def extract_client_info: -> nil

    def extract_headers: -> string
  end
end