module OAuth2
  class SanitizedLogger
    def initialize: (untyped logger) -> void

    def add: (untyped severity, ?untyped message, ?untyped progname) { () -> untyped } -> untyped
    def <<: (String message) -> untyped
    def debug: (?untyped progname) { () -> untyped } -> untyped
    def info: (?untyped progname) { () -> untyped } -> untyped
    def warn: (?untyped progname) { () -> untyped } -> untyped
    def error: (?untyped progname) { () -> untyped } -> untyped
    def fatal: (?untyped progname) { () -> untyped } -> untyped
    def unknown: (?untyped progname) { () -> untyped } -> untyped
    def close: () -> void
    def formatter: () -> untyped
    def formatter=: (untyped formatter) -> void
    def level: () -> untyped
    def level=: (untyped level) -> void
    def progname: () -> untyped
    def progname=: (untyped progname) -> void
    def respond_to_missing?: (Symbol method_name, ?bool include_private) -> bool
    def method_missing: (Symbol method_name, *untyped args) { () -> untyped } -> untyped

    private

    def log: (Symbol level, ?untyped progname) { () -> untyped } -> untyped
    def sanitize: (untyped message) -> untyped
    def thing_filter: () -> OAuth2::ThingFilter
    def sanitize_authorization_header: (String message) -> String
    def sanitize_json_pairs: (String message) -> String
    def sanitize_form_and_query_pairs: (String message) -> String
  end
end
