class Reline::GeneralIO

def self.clear_screen

def self.clear_screen
end

def self.cursor_pos

def self.cursor_pos
  Reline::CursorPos.new(1, 1)
end

def self.deprep(otio)

def self.deprep(otio)
end

def self.encoding

def self.encoding
  if defined?(@@encoding)
    @@encoding
  elsif RUBY_PLATFORM =~ /mswin|mingw/
    Encoding::UTF_8
  else
    Encoding::default_external
  end
end

def self.erase_after_cursor

def self.erase_after_cursor
end

def self.finish_pasting

def self.finish_pasting
  @@pasting = false
end

def self.get_screen_size

def self.get_screen_size
  [1, 1]
end

def self.getc

def self.getc
  unless @@buf.empty?
    return @@buf.shift
  end
  c = nil
  loop do
    result = @@input.wait_readable(0.1)
    next if result.nil?
    c = @@input.read(1)
    break
  end
  c&.ord
end

def self.hide_cursor

def self.hide_cursor
end

def self.in_pasting?

def self.in_pasting?
  @@pasting
end

def self.input=(val)

def self.input=(val)
  @@input = val
end

def self.move_cursor_column(val)

def self.move_cursor_column(val)
end

def self.move_cursor_down(val)

def self.move_cursor_down(val)
end

def self.move_cursor_up(val)

def self.move_cursor_up(val)
end

def self.prep

def self.prep
end

def self.reset(encoding: nil)

def self.reset(encoding: nil)
  @@pasting = false
  @@encoding = encoding
end

def self.scroll_down(val)

def self.scroll_down(val)
end

def self.set_default_key_bindings(_)

def self.set_default_key_bindings(_)
end

def self.set_screen_size(rows, columns)

def self.set_screen_size(rows, columns)
end

def self.set_winch_handler(&handler)

def self.set_winch_handler(&handler)
end

def self.show_cursor

def self.show_cursor
end

def self.start_pasting

def self.start_pasting
  @@pasting = true
end

def self.ungetc(c)

def self.ungetc(c)
  @@buf.unshift(c)
end

def self.win?

def self.win?
  false
end

def self.with_raw_input

def self.with_raw_input
  yield
end