module FlossFunding
class Error < StandardError
end

class ActivationEvent
attr_reader library: ::FlossFunding::Library
attr_reader activation_key: String
attr_accessor state: String
attr_reader occurred_at: Time
attr_reader silent: (untyped | nil)

def initialize: (::FlossFunding::Library, String, String, (untyped | nil)) -> void
def validate!: -> void   end

class Library
@custom_ns: (String | nil)

attr_reader namespace: String
attr_reader base_name: String
attr_reader library_name: String
attr_reader including_path: String
attr_reader env_var_name: String
attr_reader library_root_path: String
attr_reader library_config_path: String
attr_reader seen_at: Time
attr_reader silence: untyped
attr_reader config: ::FlossFunding::Configuration

def initialize: (String, ::FlossFunding::Namespace, (String | nil), String, String, String, String, String, ::FlossFunding::Configuration, untyped) -> void   end

class Namespace
attr_reader name: String
attr_reader env_var_name: String
attr_reader activation_key: String
attr_reader state: String
attr_reader activation_events: Array[ActivationEvent]

def activation_events=: (Array[ActivationEvent]) -> void
def to_s: -> String
def has_state?: (String) -> bool
def with_state: (String) -> Array[ActivationEvent]
def configs: -> Array[::FlossFunding::Configuration]

def check_unpaid_silence: (String) -> bool
def floss_funding_decrypt: (String) -> (String | false)
def merged_config: -> ::FlossFunding::Configuration   end

class Configuration
include Enumerable[untyped]

def self.merged_config: (Array[::FlossFunding::Configuration]) -> ::FlossFunding::Configuration
def initialize: (?Hash[untyped, untyped]) -> void
def []: (String | Symbol) -> Array[untyped]
def fetch: (String | Symbol, ?untyped) { (String | Symbol) -> untyped } -> Array[untyped]
def each: () { (String, Array[untyped]) -> void } -> void
def keys: -> Array[String]
def key?: (String | Symbol) -> bool
def include?: (String | Symbol) -> bool
def has_key?: (String | Symbol) -> bool
def to_h: -> Hash[String, Array[untyped]]
def size: -> Integer
def empty?: -> bool   end

# Constants
DEBUG: bool
CONFIG_FILE_NAME: String
FLOSS_FUNDING_HOME: String
REQUIRED_YAML_KEYS: Array[String]
FREE_AS_IN_BEER: String
BUSINESS_IS_NOT_GOOD_YET: String
NOT_FINANCIALLY_SUPPORTING: String
STATES: Hash[Symbol, String]
STATE_VALUES: Array[String]
DEFAULT_STATE: String
START_MONTH: Integer
BASE_WORDS_PATH: String
EIGHT_BYTES: Integer
HEX_LICENSE_RULE: Regexp
FOOTER: String

module Constants
DEFAULT_PREFIX: String
SILENT: bool
end

module Version
VERSION: String
end

def self.install_tasks: -> void
def self.debug_log: (*untyped) { () -> String } -> void

def self.namespaces: -> Hash[String, Namespace]
def self.namespaces=: (Hash[String, Namespace]) -> void

def self.silenced: -> bool
def self.silenced=: (bool) -> void

# All namespaces as Namespace objects
def self.all_namespaces: -> Array[Namespace]

# configurations
def self.configurations: ((String | nil)) -> (Hash[String, Array[::FlossFunding::Configuration]] | ::FlossFunding::Configuration | nil)
def self.configuration: (String) -> (::FlossFunding::Configuration | nil)

def self.env_var_names: -> Hash[String, String]

def self.base_words: (?Integer) -> Array[String]

def self.loaded_at: -> Time
def self.check_activation: (String) -> bool
def self.start_coughing: (String, String, String) -> void
def self.start_begging: (String, String, String) -> void
def self.initiate_begging: (::FlossFunding::ActivationEvent) -> void

module UnderBar
SAFE_TO_UNDERSCORE: Regexp
SUBBER_UNDER: Regexp
INITIAL_UNDERSCORE: Regexp

def self.env_variable_name: (String | ::FlossFunding::Namespace) -> String
def self.to_under_bar: (String) -> String   end

module Config
def self.find_project_root: -> (String | nil)
def self.normalize_to_array: (untyped) -> Array[untyped]
end

module Poke
def self.included: (Module) -> void
def self.new: ((String | nil), ?{ namespace: String?, silent: untyped?, config_path: String?, wedge: bool? }) -> Module
end

class ContraIndications
def self.poke_contraindicated?: -> bool
def self.at_exit_contraindicated?: -> bool
end

class ConfigNotFoundError < ::FlossFunding::Error
end

class ConfigLoader
FLOSS_FUNDING_HOME: String
DEFAULT_FILE: String

def self.clear_options: -> void
def self.configuration_file_for: (String) -> (String | nil)
def self.load_file: (String, ?{ check: bool }) -> Hash[untyped, untyped]
def self.default_configuration: -> Hash[untyped, untyped]
def self.reset_caches!: -> void   end end