# sig/process_executer/errors.rbs

class ProcessExecuter::CommandError < ProcessExecuter::ProcessExecuter::Error
  def error_message: () -> untyped
  def initialize: () -> void
end


# sig/process_executer/destination_base.rbs

class ProcessExecuter::DestinationBase
  def self.compatible_with_monitored_pipe?: () -> untyped
  def self.handles?: () -> untyped
  def close: () -> untyped
  def compatible_with_monitored_pipe?: () -> untyped
  def initialize: () -> void
  def string: () -> untyped
  def write: () -> untyped
end


# sig/process_executer/destinations/child_redirection.rbs

class ProcessExecuter::Destinations::ChildRedirection < ProcessExecuter::Destinations::ProcessExecuter::DestinationBase
  def self.compatible_with_monitored_pipe?: () -> untyped
  def self.handles?: () -> untyped
end


# sig/process_executer/destinations/close.rbs

class ProcessExecuter::Destinations::Close < ProcessExecuter::Destinations::ProcessExecuter::DestinationBase
  def self.compatible_with_monitored_pipe?: () -> untyped
  def self.handles?: () -> untyped
end


# sig/process_executer/destinations/file_descriptor.rbs

class ProcessExecuter::Destinations::FileDescriptor < ProcessExecuter::Destinations::ProcessExecuter::DestinationBase
  def self.handles?: () -> untyped
  def write: () -> untyped
end


# sig/process_executer/destinations/file_path.rbs

class ProcessExecuter::Destinations::FilePath < ProcessExecuter::Destinations::ProcessExecuter::DestinationBase
  def self.handles?: () -> untyped
  def close: () -> untyped
  def initialize: () -> void
  def write: () -> untyped
end


# sig/process_executer/destinations/file_path_mode.rbs

class ProcessExecuter::Destinations::FilePathMode < ProcessExecuter::Destinations::ProcessExecuter::DestinationBase
  def self.handles?: () -> untyped
  def close: () -> untyped
  def initialize: () -> void
  def write: () -> untyped
end


# sig/process_executer/destinations/file_path_mode_perms.rbs

class ProcessExecuter::Destinations::FilePathModePerms < ProcessExecuter::Destinations::ProcessExecuter::DestinationBase
  def self.handles?: () -> untyped
  def close: () -> untyped
  def initialize: () -> void
  def write: () -> untyped
end


# sig/process_executer/destinations/io.rbs

class ProcessExecuter::Destinations::IO < ProcessExecuter::Destinations::ProcessExecuter::DestinationBase
  def self.handles?: () -> untyped
  def write: () -> untyped
end


# sig/process_executer/destinations/monitored_pipe.rbs

class ProcessExecuter::Destinations::MonitoredPipe < ProcessExecuter::Destinations::ProcessExecuter::DestinationBase
  def self.handles?: () -> untyped
  def close: () -> untyped
  def write: () -> untyped
end


# sig/process_executer/destinations/stderr.rbs

class ProcessExecuter::Destinations::Stderr < ProcessExecuter::Destinations::ProcessExecuter::DestinationBase
  def self.handles?: () -> untyped
  def write: () -> untyped
end


# sig/process_executer/destinations/stdout.rbs

class ProcessExecuter::Destinations::Stdout < ProcessExecuter::Destinations::ProcessExecuter::DestinationBase
  def self.handles?: () -> untyped
  def write: () -> untyped
end


# sig/process_executer/destinations/tee.rbs

class ProcessExecuter::Destinations::Tee < ProcessExecuter::Destinations::ProcessExecuter::DestinationBase
  def self.handles?: () -> untyped
  def close: () -> untyped
  def initialize: () -> void
  def write: () -> untyped
end


# sig/process_executer/destinations/writer.rbs

class ProcessExecuter::Destinations::Writer < ProcessExecuter::Destinations::ProcessExecuter::DestinationBase
  def self.handles?: () -> untyped
  def write: () -> untyped
end


# sig/process_executer/monitored_pipe.rbs

class ProcessExecuter::MonitoredPipe
  def assert_destination_is_compatible_with_monitored_pipe: () -> untyped
  def close: () -> untyped
  def close_pipe: () -> untyped
  def fileno: () -> untyped
  def initialize: () -> void
  def monitor: () -> untyped
  def monitor_pipe: () -> untyped
  def start_monitoring_thread: () -> untyped
  def to_io: () -> untyped
  def write: () -> untyped
  def write_data: () -> untyped
end


# sig/process_executer/options/base.rbs

class ProcessExecuter::Options::Base
  def allowed_options: () -> untyped
  def assert_no_unknown_options: () -> untyped
  def define_accessor_methods: () -> untyped
  def define_options: () -> untyped
  def each_with_object: () -> untyped
  def initialize: () -> void
  def inspect: () -> untyped
  def merge!: () -> untyped
  def to_h: () -> untyped
  def to_s: () -> untyped
  def valid_option?: () -> untyped
  def validate_options: () -> untyped
  def with: () -> untyped
end


# sig/process_executer/options/option_definition.rbs

class ProcessExecuter::Options::OptionDefinition
  def initialize: () -> void
end


# sig/process_executer/options/run_options.rbs

class ProcessExecuter::Options::RunOptions < ProcessExecuter::Options::SpawnAndWaitOptions
  def define_options: () -> untyped
  def validate_logger: () -> untyped
  def validate_raise_errors: () -> untyped
end


# sig/process_executer/options/spawn_and_wait_options.rbs

class ProcessExecuter::Options::SpawnAndWaitOptions < ProcessExecuter::Options::SpawnOptions
  def define_options: () -> untyped
  def validate_timeout_after: () -> untyped
end


# sig/process_executer/options/spawn_options.rbs

class ProcessExecuter::Options::SpawnOptions < ProcessExecuter::Options::Base
  def define_options: () -> untyped
  def include_spawn_option?: () -> untyped
  def redirection?: () -> untyped
  def spawn_options: () -> untyped
  def std_redirection?: () -> untyped
  def stderr_redirection?: () -> untyped
  def stderr_redirection_key: () -> untyped
  def stderr_redirection_value: () -> untyped
  def stdout_redirection?: () -> untyped
  def stdout_redirection_key: () -> untyped
  def stdout_redirection_value: () -> untyped
  def valid_option?: () -> untyped
end


# sig/process_executer/result.rbs

class ProcessExecuter::Result < ProcessExecuter::SimpleDelegator
  def initialize: () -> void
  def stderr: () -> untyped
  def stdout: () -> untyped
  def success?: () -> untyped
  def timed_out?: () -> untyped
  def to_s: () -> untyped
end


# sig/process_executer/runner.rbs

class ProcessExecuter::Runner
  def call: () -> untyped
  def close_pipe: () -> untyped
  def log_result: () -> untyped
  def process_result: () -> untyped
  def raise_errors: () -> untyped
  def raise_pipe_error: () -> untyped
  def should_wrap?: () -> untyped
  def spawn: () -> untyped
  def wrap_stdout_stderr: () -> untyped
end


# sig/process_executer.rbs

module ProcessExecuter
  def self.run: () -> untyped
  def self.run_options: () -> untyped
  def self.run_with_options: () -> untyped
  def self.spawn_and_wait: () -> untyped
  def self.spawn_and_wait_options: () -> untyped
  def self.spawn_and_wait_with_options: () -> untyped
  def self.spawn_options: () -> untyped
  def self.wait_for_process: () -> untyped
  def self.wait_for_process_raw: () -> untyped
end


# sig/process_executer/destinations.rbs

module ProcessExecuter::Destinations
  def self.compatible_with_monitored_pipe?: () -> untyped
  def self.factory: () -> untyped
  def self.matching_destination_class: () -> untyped
end
