# typed: true

# DO NOT EDIT MANUALLY
# This is an autogenerated file for types exported from the `ruby-macho` gem.
# Please instead update this file by running `bin/tapioca gem ruby-macho`.


# The primary namespace for ruby-macho.
#
# source://ruby-macho//lib/macho/utils.rb#3
module MachO
  class << self
    # Signs the dylib using an ad-hoc identity.
    # Necessary after making any changes to a dylib, since otherwise
    # changing a signed file invalidates its signature.
    #
    # @param filename [String] the file being opened
    # @raise [ModificationError] if the operation fails
    # @return [void]
    #
    # source://ruby-macho//lib/macho.rb#51
    def codesign!(filename); end

    # Opens the given filename as a MachOFile or FatFile, depending on its magic.
    #
    # @param filename [String] the file being opened
    # @raise [ArgumentError] if the given file does not exist
    # @raise [TruncatedFileError] if the file is too small to have a valid header
    # @raise [MagicError] if the file's magic is not valid Mach-O magic
    # @return [MachOFile] if the file is a Mach-O
    # @return [FatFile] if the file is a Fat file
    #
    # source://ruby-macho//lib/macho.rb#28
    def open(filename); end
  end
end

# Raised when the CPU type/sub-type pair is unknown.
#
# source://ruby-macho//lib/macho/exceptions.rb#104
class MachO::CPUSubtypeError < ::MachO::MachOError
  # @param cputype [Integer] the CPU type of the unknown pair
  # @param cpusubtype [Integer] the CPU sub-type of the unknown pair
  # @return [CPUSubtypeError] a new instance of CPUSubtypeError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#107
  def initialize(cputype, cpusubtype); end
end

# Raised when the CPU type is unknown.
#
# source://ruby-macho//lib/macho/exceptions.rb#96
class MachO::CPUTypeError < ::MachO::MachOError
  # @param cputype [Integer] the unknown CPU type
  # @return [CPUTypeError] a new instance of CPUTypeError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#98
  def initialize(cputype); end
end

# Raised when there is a mismatch between the fat arch
# and internal slice cputype or cpusubtype.
#
# source://ruby-macho//lib/macho/exceptions.rb#68
class MachO::CPUTypeMismatchError < ::MachO::NotAMachOError
  # @return [CPUTypeMismatchError] a new instance of CPUTypeMismatchError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#69
  def initialize(fat_cputype, fat_cpusubtype, macho_cputype, macho_cpusubtype); end
end

# Raised when codesigning fails. Certain environments
# may want to rescue this to treat it as non-fatal.
#
# source://ruby-macho//lib/macho/exceptions.rb#14
class MachO::CodeSigningError < ::MachO::MachOError; end

# Raised when attempting to parse a compressed Mach-O without explicitly
# requesting decompression.
#
# source://ruby-macho//lib/macho/exceptions.rb#235
class MachO::CompressedMachOError < ::MachO::MachOError; end

# Raised when attempting to decompress a compressed Mach-O without adequate
# dependencies, or on other decompression errors.
#
# source://ruby-macho//lib/macho/exceptions.rb#240
class MachO::DecompressionError < ::MachO::MachOError; end

# Raised when a dylib is missing an ID
#
# source://ruby-macho//lib/macho/exceptions.rb#193
class MachO::DylibIdMissingError < ::MachO::RecoverableModificationError
  # @return [DylibIdMissingError] a new instance of DylibIdMissingError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#194
  def initialize; end
end

# Raised when attempting to change a dylib name that doesn't exist.
#
# source://ruby-macho//lib/macho/exceptions.rb#185
class MachO::DylibUnknownError < ::MachO::RecoverableModificationError
  # @param dylib [String] the unknown shared library name
  # @return [DylibUnknownError] a new instance of DylibUnknownError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#187
  def initialize(dylib); end
end

# Raised when attempting to create a {FatFile} from one or more {MachOFile}s
#  whose offsets will not fit within the resulting 32-bit {Headers::FatArch#offset} fields.
#
# source://ruby-macho//lib/macho/exceptions.rb#225
class MachO::FatArchOffsetOverflowError < ::MachO::MachOError
  # @param offset [Integer] the offending offset
  # @return [FatArchOffsetOverflowError] a new instance of FatArchOffsetOverflowError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#227
  def initialize(offset); end
end

# Raised when a fat binary is loaded with MachOFile.
#
# source://ruby-macho//lib/macho/exceptions.rb#82
class MachO::FatBinaryError < ::MachO::MachOError
  # @return [FatBinaryError] a new instance of FatBinaryError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#83
  def initialize; end
end

# Represents a "Fat" file, which contains a header, a listing of available
# architectures, and one or more Mach-O binaries.
#
# @see https://en.wikipedia.org/wiki/Mach-O#Multi-architecture_binaries
# @see MachOFile
#
# source://ruby-macho//lib/macho/fat_file.rb#10
class MachO::FatFile
  extend ::Forwardable

  # Creates a new FatFile from the given filename.
  #
  # @note see {MachOFile#initialize} for currently valid options
  # @param filename [String] the fat file to load from
  # @param opts [Hash] options to control the parser with
  # @raise [ArgumentError] if the given file does not exist
  # @return [FatFile] a new instance of FatFile
  #
  # source://ruby-macho//lib/macho/fat_file.rb#94
  def initialize(filename, **opts); end

  # Add the given runtime path to the file's Mach-Os.
  #
  # @option options
  # @param path [String] the new runtime path
  # @param options [Hash]
  # @return [void]
  # @see MachOFile#add_rpath
  #
  # source://ruby-macho//lib/macho/fat_file.rb#260
  def add_rpath(path, options = T.unsafe(nil)); end

  # @return [Boolean] whether or not the file is of type `MH_BUNDLE`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def bundle?(*args, **_arg1, &block); end

  # Changes all dependent shared library install names from `old_name` to
  # `new_name`. In a fat file, this changes install names in all internal
  # Mach-Os.
  #
  # @example
  #   file.change_install_name('/usr/lib/libFoo.dylib', '/usr/lib/libBar.dylib')
  # @option options
  # @param old_name [String] the shared library name being changed
  # @param new_name [String] the new name
  # @param options [Hash]
  # @return [void]
  # @see MachOFile#change_install_name
  #
  # source://ruby-macho//lib/macho/fat_file.rb#217
  def change_dylib(old_name, new_name, options = T.unsafe(nil)); end

  # Changes the file's dylib ID to `new_id`. If the file is not a dylib,
  #  does nothing.
  #
  # @example
  #   file.change_dylib_id('libFoo.dylib')
  # @option options
  # @param new_id [String] the new dylib ID
  # @param options [Hash]
  # @raise [ArgumentError] if `new_id` is not a String
  # @return [void]
  # @see MachOFile#linked_dylibs
  #
  # source://ruby-macho//lib/macho/fat_file.rb#182
  def change_dylib_id(new_id, options = T.unsafe(nil)); end

  # Changes all dependent shared library install names from `old_name` to
  # `new_name`. In a fat file, this changes install names in all internal
  # Mach-Os.
  #
  # @example
  #   file.change_install_name('/usr/lib/libFoo.dylib', '/usr/lib/libBar.dylib')
  # @option options
  # @param old_name [String] the shared library name being changed
  # @param new_name [String] the new name
  # @param options [Hash]
  # @return [void]
  # @see MachOFile#change_install_name
  #
  # source://ruby-macho//lib/macho/fat_file.rb#217
  def change_install_name(old_name, new_name, options = T.unsafe(nil)); end

  # Change the runtime path `old_path` to `new_path` in the file's Mach-Os.
  #
  # @option options
  # @option options
  # @param old_path [String] the old runtime path
  # @param new_path [String] the new runtime path
  # @param options [Hash]
  # @return [void]
  # @see MachOFile#change_rpath
  #
  # source://ruby-macho//lib/macho/fat_file.rb#245
  def change_rpath(old_path, new_path, options = T.unsafe(nil)); end

  # @return [Boolean] whether or not the file is of type `MH_CORE`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def core?(*args, **_arg1, &block); end

  # Delete the given runtime path from the file's Mach-Os.
  #
  # @option options
  # @option options
  # @param path [String] the runtime path to delete
  # @param options [Hash]
  # @return void
  # @see MachOFile#delete_rpath
  #
  # source://ruby-macho//lib/macho/fat_file.rb#278
  def delete_rpath(path, options = T.unsafe(nil)); end

  # @return [Boolean] whether or not the file is of type `MH_DSYM`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def dsym?(*args, **_arg1, &block); end

  # @return [Boolean] whether or not the file is of type `MH_DYLIB`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def dylib?(*args, **_arg1, &block); end

  # @return [String, nil] the Mach-O's dylib ID
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def dylib_id(*args, **_arg1, &block); end

  # Changes the file's dylib ID to `new_id`. If the file is not a dylib,
  #  does nothing.
  #
  # @example
  #   file.change_dylib_id('libFoo.dylib')
  # @option options
  # @param new_id [String] the new dylib ID
  # @param options [Hash]
  # @raise [ArgumentError] if `new_id` is not a String
  # @return [void]
  # @see MachOFile#linked_dylibs
  #
  # source://ruby-macho//lib/macho/fat_file.rb#182
  def dylib_id=(new_id, options = T.unsafe(nil)); end

  # All load commands responsible for loading dylibs in the file's Mach-O's.
  #
  # @return [Array<LoadCommands::DylibCommand>] an array of DylibCommands
  #
  # source://ruby-macho//lib/macho/fat_file.rb#167
  def dylib_load_commands; end

  # @return [Boolean] whether or not the file is of type `MH_DYLINKER`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def dylinker?(*args, **_arg1, &block); end

  # @return [Boolean] whether or not the file is of type `MH_EXECUTE`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def executable?(*args, **_arg1, &block); end

  # Extract a Mach-O with the given CPU type from the file.
  #
  # @example
  #   file.extract(:i386) # => MachO::MachOFile
  # @param cputype [Symbol] the CPU type of the Mach-O being extracted
  # @return [MachOFile, nil] the extracted Mach-O or nil if no Mach-O has the given CPU type
  #
  # source://ruby-macho//lib/macho/fat_file.rb#291
  def extract(cputype); end

  # @return [Array<Headers::FatArch>, Array<Headers::FatArch64] an array of fat architectures] Array<Headers::FatArch>, Array<Headers::FatArch64] an array of fat architectures
  #
  # source://ruby-macho//lib/macho/fat_file.rb#24
  def fat_archs; end

  # @return [String] the filename loaded from, or nil if loaded from a binary string
  #
  # source://ruby-macho//lib/macho/fat_file.rb#14
  def filename; end

  # @return [String] the filename loaded from, or nil if loaded from a binary string
  #
  # source://ruby-macho//lib/macho/fat_file.rb#14
  def filename=(_arg0); end

  # @return [Symbol] a string representation of the Mach-O's filetype
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def filetype(*args, **_arg1, &block); end

  # @return [Boolean] whether or not the file is of type `MH_FVMLIB`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def fvmlib?(*args, **_arg1, &block); end

  # @return [Headers::FatHeader] the file's header
  #
  # source://ruby-macho//lib/macho/fat_file.rb#21
  def header; end

  # Initializes a new FatFile instance from a binary string with the given options.
  #
  # @api private
  # @see new_from_bin
  #
  # source://ruby-macho//lib/macho/fat_file.rb#106
  def initialize_from_bin(bin, opts); end

  # @return [Boolean] whether or not the file is of type `MH_KEXT_BUNDLE`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def kext?(*args, **_arg1, &block); end

  # All shared libraries linked to the file's Mach-Os.
  #
  # @return [Array<String>] an array of all shared libraries
  # @see MachOFile#linked_dylibs
  #
  # source://ruby-macho//lib/macho/fat_file.rb#198
  def linked_dylibs; end

  # @return [Array<MachOFile>] an array of Mach-O binaries
  #
  # source://ruby-macho//lib/macho/fat_file.rb#27
  def machos; end

  # @return [Integer] the magic number of the header (and file)
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def magic(*args, **_arg1, &block); end

  # @return [String] a string representation of the file's magic number
  #
  # source://ruby-macho//lib/macho/fat_file.rb#152
  def magic_string; end

  # @return [Boolean] whether or not the file is of type `MH_OBJECT`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def object?(*args, **_arg1, &block); end

  # @note Options specified in a {FatFile} trickle down into the internal {MachOFile}s.
  # @return [Hash] any parser options that the instance was created with
  #
  # source://ruby-macho//lib/macho/fat_file.rb#18
  def options; end

  # Populate the instance's fields with the raw Fat Mach-O data.
  #
  # @note This method is public, but should (almost) never need to be called.
  # @return [void]
  #
  # source://ruby-macho//lib/macho/fat_file.rb#159
  def populate_fields; end

  # @return [Boolean] whether or not the file is of type `MH_PRELOAD`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def preload?(*args, **_arg1, &block); end

  # All runtime paths associated with the file's Mach-Os.
  #
  # @return [Array<String>] an array of all runtime paths
  # @see MachOFile#rpaths
  #
  # source://ruby-macho//lib/macho/fat_file.rb#230
  def rpaths; end

  # The file's raw fat data.
  #
  # @return [String] the raw fat data
  #
  # source://ruby-macho//lib/macho/fat_file.rb#115
  def serialize; end

  # @return [Hash] a hash representation of this {FatFile}
  #
  # source://ruby-macho//lib/macho/fat_file.rb#313
  def to_h; end

  # Write all (fat) data to the given filename.
  #
  # @param filename [String] the file to write to
  # @return [void]
  #
  # source://ruby-macho//lib/macho/fat_file.rb#298
  def write(filename); end

  # Write all (fat) data to the file used to initialize the instance.
  #
  # @note Overwrites all data in the file!
  # @raise [MachOError] if the instance was initialized without a file
  # @return [void]
  #
  # source://ruby-macho//lib/macho/fat_file.rb#306
  def write!; end

  private

  # Return a single-arch Mach-O that represents this fat Mach-O for purposes
  #  of delegation.
  #
  # @api private
  # @return [MachOFile] the Mach-O file
  #
  # source://ruby-macho//lib/macho/fat_file.rb#436
  def canonical_macho; end

  # Yield each Mach-O object in the file, rescuing and accumulating errors.
  #
  # @api private
  # @option options
  # @param options [Hash]
  # @raise [RecoverableModificationError] under the conditions of
  #   the `:strict` option above.
  #
  # source://ruby-macho//lib/macho/fat_file.rb#413
  def each_macho(options = T.unsafe(nil)); end

  # Obtain an array of fat architectures from raw file data.
  #
  # @api private
  # @return [Array<Headers::FatArch>] an array of fat architectures
  #
  # source://ruby-macho//lib/macho/fat_file.rb#360
  def populate_fat_archs; end

  # Obtain the fat header from raw file data.
  #
  # @api private
  # @raise [TruncatedFileError] if the file is too small to have a
  #   valid header
  # @raise [MagicError] if the magic is not valid Mach-O magic
  # @raise [MachOBinaryError] if the magic is for a non-fat Mach-O file
  # @raise [JavaClassFileError] if the file is a Java classfile
  # @raise [ZeroArchitectureError] if the file has no internal slices
  #   (i.e., nfat_arch == 0) and the permissive option is not set
  # @return [Headers::FatHeader] the fat header
  #
  # source://ruby-macho//lib/macho/fat_file.rb#333
  def populate_fat_header; end

  # Obtain an array of Mach-O blobs from raw file data.
  #
  # @api private
  # @return [Array<MachOFile>] an array of Mach-Os
  #
  # source://ruby-macho//lib/macho/fat_file.rb#377
  def populate_machos; end

  # Repopulate the raw Mach-O data with each internal Mach-O object.
  #
  # @api private
  # @return [void]
  #
  # source://ruby-macho//lib/macho/fat_file.rb#397
  def repopulate_raw_machos; end

  class << self
    # Creates a new FatFile instance from a binary string.
    #
    # @note see {MachOFile#initialize} for currently valid options
    # @param bin [String] a binary string containing raw Mach-O data
    # @param opts [Hash] options to control the parser with
    # @return [FatFile] a new FatFile
    #
    # source://ruby-macho//lib/macho/fat_file.rb#82
    def new_from_bin(bin, **opts); end

    # Creates a new FatFile from the given (single-arch) Mach-Os
    #
    # @param machos [Array<MachOFile>] the machos to combine
    # @param fat64 [Boolean] whether to use {Headers::FatArch64}s to represent each slice
    # @raise [ArgumentError] if less than one Mach-O is given
    # @raise [FatArchOffsetOverflowError] if the Mach-Os are too big to be represented
    #   in a 32-bit {Headers::FatArch} and `fat64` is `false`.
    # @return [FatFile] a new FatFile containing the give machos
    #
    # source://ruby-macho//lib/macho/fat_file.rb#36
    def new_from_machos(*machos, fat64: T.unsafe(nil)); end
  end
end

# Raised when a mach-o file's filetype field is unknown.
#
# source://ruby-macho//lib/macho/exceptions.rb#114
class MachO::FiletypeError < ::MachO::MachOError
  # @param num [Integer] the unknown number
  # @return [FiletypeError] a new instance of FiletypeError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#116
  def initialize(num); end
end

# Raised when load commands are too large to fit in the current file.
#
# source://ruby-macho//lib/macho/exceptions.rb#175
class MachO::HeaderPadError < ::MachO::ModificationError
  # @param filename [String] the filename
  # @return [HeaderPadError] a new instance of HeaderPadError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#177
  def initialize(filename); end
end

# Classes and constants for parsing the headers of Mach-O binaries.
#
# source://ruby-macho//lib/macho/headers.rb#5
module MachO::Headers; end

# compressed mach-o magic
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#42
MachO::Headers::COMPRESSED_MAGIC = T.let(T.unsafe(nil), Integer)

# a compressed mach-o slice, using LZVN ("FastLib") for compression
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#50
MachO::Headers::COMP_TYPE_FASTLIB = T.let(T.unsafe(nil), Integer)

# a compressed mach-o slice, using LZSS for compression
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#46
MachO::Headers::COMP_TYPE_LZSS = T.let(T.unsafe(nil), Integer)

# mask for CPUs with 64-bit architectures (when running a 32-bit ABI?)
#
# @api private
# @see https://github.com/Homebrew/ruby-macho/issues/113
#
# source://ruby-macho//lib/macho/headers.rb#70
MachO::Headers::CPU_ARCH_ABI32 = T.let(T.unsafe(nil), Integer)

# mask for CPUs with 64-bit architectures (when running a 64-bit ABI?)
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#65
MachO::Headers::CPU_ARCH_ABI64 = T.let(T.unsafe(nil), Integer)

# association of CPU types/subtype pairs to symbol representations in
# (very) roughly descending order of commonness
#
# @api private
# @see https://opensource.apple.com/source/cctools/cctools-877.8/libstuff/arch.c
#
# source://ruby-macho//lib/macho/headers.rb#338
MachO::Headers::CPU_SUBTYPES = T.let(T.unsafe(nil), Hash)

# the i486 sub-type for `CPU_TYPE_I386`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#140
MachO::Headers::CPU_SUBTYPE_486 = T.let(T.unsafe(nil), Integer)

# the i486SX sub-type for `CPU_TYPE_I386`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#144
MachO::Headers::CPU_SUBTYPE_486SX = T.let(T.unsafe(nil), Integer)

# the i586 (P5, Pentium) sub-type for `CPU_TYPE_I386`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#148
MachO::Headers::CPU_SUBTYPE_586 = T.let(T.unsafe(nil), Integer)

# the e (A12) sub-type for `CPU_TYPE_ARM64`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#260
MachO::Headers::CPU_SUBTYPE_ARM64E = T.let(T.unsafe(nil), Integer)

# the v8 sub-type for `CPU_TYPE_ARM64_32`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#256
MachO::Headers::CPU_SUBTYPE_ARM64_32_V8 = T.let(T.unsafe(nil), Integer)

# the lowest common sub-type for `CPU_TYPE_ARM64`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#248
MachO::Headers::CPU_SUBTYPE_ARM64_ALL = T.let(T.unsafe(nil), Integer)

# the v8 sub-type for `CPU_TYPE_ARM64`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#252
MachO::Headers::CPU_SUBTYPE_ARM64_V8 = T.let(T.unsafe(nil), Integer)

# the lowest common sub-type for `CPU_TYPE_ARM`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#196
MachO::Headers::CPU_SUBTYPE_ARM_ALL = T.let(T.unsafe(nil), Integer)

# the v4t sub-type for `CPU_TYPE_ARM`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#200
MachO::Headers::CPU_SUBTYPE_ARM_V4T = T.let(T.unsafe(nil), Integer)

# the v5 sub-type for `CPU_TYPE_ARM`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#208
MachO::Headers::CPU_SUBTYPE_ARM_V5TEJ = T.let(T.unsafe(nil), Integer)

# the v6 sub-type for `CPU_TYPE_ARM`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#204
MachO::Headers::CPU_SUBTYPE_ARM_V6 = T.let(T.unsafe(nil), Integer)

# the v6m sub-type for `CPU_TYPE_ARM`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#232
MachO::Headers::CPU_SUBTYPE_ARM_V6M = T.let(T.unsafe(nil), Integer)

# the v7 sub-type for `CPU_TYPE_ARM`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#216
MachO::Headers::CPU_SUBTYPE_ARM_V7 = T.let(T.unsafe(nil), Integer)

# the v7em sub-type for `CPU_TYPE_ARM`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#240
MachO::Headers::CPU_SUBTYPE_ARM_V7EM = T.let(T.unsafe(nil), Integer)

# the v7f (Cortex A9) sub-type for `CPU_TYPE_ARM`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#220
MachO::Headers::CPU_SUBTYPE_ARM_V7F = T.let(T.unsafe(nil), Integer)

# the v7k ("Kirkwood40") sub-type for `CPU_TYPE_ARM`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#228
MachO::Headers::CPU_SUBTYPE_ARM_V7K = T.let(T.unsafe(nil), Integer)

# the v7m sub-type for `CPU_TYPE_ARM`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#236
MachO::Headers::CPU_SUBTYPE_ARM_V7M = T.let(T.unsafe(nil), Integer)

# the v7s ("Swift") sub-type for `CPU_TYPE_ARM`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#224
MachO::Headers::CPU_SUBTYPE_ARM_V7S = T.let(T.unsafe(nil), Integer)

# the v8 sub-type for `CPU_TYPE_ARM`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#244
MachO::Headers::CPU_SUBTYPE_ARM_V8 = T.let(T.unsafe(nil), Integer)

# the xscale (v5 family) sub-type for `CPU_TYPE_ARM`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#212
MachO::Headers::CPU_SUBTYPE_ARM_XSCALE = T.let(T.unsafe(nil), Integer)

# the lowest common sub-type for `CPU_TYPE_I386`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#136
MachO::Headers::CPU_SUBTYPE_I386 = T.let(T.unsafe(nil), Integer)

# 64-bit libraries (undocumented!)
#
# @api private
# @see http://llvm.org/docs/doxygen/html/Support_2MachO_8h_source.html
#
# source://ruby-macho//lib/macho/headers.rb#132
MachO::Headers::CPU_SUBTYPE_LIB64 = T.let(T.unsafe(nil), Integer)

# mask for CPU subtype capabilities
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#127
MachO::Headers::CPU_SUBTYPE_MASK = T.let(T.unsafe(nil), Integer)

# @api private
# @see CPU_SUBTYPE_MC680X0_ALL
#
# source://ruby-macho//lib/macho/headers.rb#176
MachO::Headers::CPU_SUBTYPE_MC68030 = T.let(T.unsafe(nil), Integer)

# the 030 subtype for `CPU_TYPE_MC680X0`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#184
MachO::Headers::CPU_SUBTYPE_MC68030_ONLY = T.let(T.unsafe(nil), Integer)

# the 040 subtype for `CPU_TYPE_MC680X0`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#180
MachO::Headers::CPU_SUBTYPE_MC68040 = T.let(T.unsafe(nil), Integer)

# the lowest common sub-type for `CPU_TYPE_MC680X0`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#172
MachO::Headers::CPU_SUBTYPE_MC680X0_ALL = T.let(T.unsafe(nil), Integer)

# the lowest common sub-type for `CPU_TYPE_MC88000`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#264
MachO::Headers::CPU_SUBTYPE_MC88000_ALL = T.let(T.unsafe(nil), Integer)

# the 100 sub-type for `CPU_TYPE_MC88000`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#272
MachO::Headers::CPU_SUBTYPE_MC88100 = T.let(T.unsafe(nil), Integer)

# the 110 sub-type for `CPU_TYPE_MC88000`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#276
MachO::Headers::CPU_SUBTYPE_MC88110 = T.let(T.unsafe(nil), Integer)

# @api private
# @see CPU_SUBTYPE_MC88000_ALL
#
# source://ruby-macho//lib/macho/headers.rb#268
MachO::Headers::CPU_SUBTYPE_MMAX_JPC = T.let(T.unsafe(nil), Integer)

# @api private
# @see CPU_SUBTYPE_586
#
# source://ruby-macho//lib/macho/headers.rb#152
MachO::Headers::CPU_SUBTYPE_PENT = T.let(T.unsafe(nil), Integer)

# the Pentium II (P6, M3?) sub-type for `CPU_TYPE_I386`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#160
MachO::Headers::CPU_SUBTYPE_PENTII_M3 = T.let(T.unsafe(nil), Integer)

# the Pentium II (P6, M5?) sub-type for `CPU_TYPE_I386`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#164
MachO::Headers::CPU_SUBTYPE_PENTII_M5 = T.let(T.unsafe(nil), Integer)

# the Pentium 4 (Netburst) sub-type for `CPU_TYPE_I386`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#168
MachO::Headers::CPU_SUBTYPE_PENTIUM_4 = T.let(T.unsafe(nil), Integer)

# the Pentium Pro (P6) sub-type for `CPU_TYPE_I386`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#156
MachO::Headers::CPU_SUBTYPE_PENTPRO = T.let(T.unsafe(nil), Integer)

# any CPU sub-type for CPU type `CPU_TYPE_POWERPC64`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#332
MachO::Headers::CPU_SUBTYPE_POWERPC64_ALL = T.let(T.unsafe(nil), Integer)

# the 601 sub-type for `CPU_TYPE_POWERPC`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#284
MachO::Headers::CPU_SUBTYPE_POWERPC_601 = T.let(T.unsafe(nil), Integer)

# the 602 sub-type for `CPU_TYPE_POWERPC`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#288
MachO::Headers::CPU_SUBTYPE_POWERPC_602 = T.let(T.unsafe(nil), Integer)

# the 603 sub-type for `CPU_TYPE_POWERPC`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#292
MachO::Headers::CPU_SUBTYPE_POWERPC_603 = T.let(T.unsafe(nil), Integer)

# the 603e (G2) sub-type for `CPU_TYPE_POWERPC`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#296
MachO::Headers::CPU_SUBTYPE_POWERPC_603E = T.let(T.unsafe(nil), Integer)

# the 603ev sub-type for `CPU_TYPE_POWERPC`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#300
MachO::Headers::CPU_SUBTYPE_POWERPC_603EV = T.let(T.unsafe(nil), Integer)

# the 604 sub-type for `CPU_TYPE_POWERPC`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#304
MachO::Headers::CPU_SUBTYPE_POWERPC_604 = T.let(T.unsafe(nil), Integer)

# the 604e sub-type for `CPU_TYPE_POWERPC`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#308
MachO::Headers::CPU_SUBTYPE_POWERPC_604E = T.let(T.unsafe(nil), Integer)

# the 620 sub-type for `CPU_TYPE_POWERPC`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#312
MachO::Headers::CPU_SUBTYPE_POWERPC_620 = T.let(T.unsafe(nil), Integer)

# the 7400 (G4) sub-type for `CPU_TYPE_POWERPC`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#320
MachO::Headers::CPU_SUBTYPE_POWERPC_7400 = T.let(T.unsafe(nil), Integer)

# the 7450 (G4 "Voyager") sub-type for `CPU_TYPE_POWERPC`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#324
MachO::Headers::CPU_SUBTYPE_POWERPC_7450 = T.let(T.unsafe(nil), Integer)

# the 750 (G3) sub-type for `CPU_TYPE_POWERPC`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#316
MachO::Headers::CPU_SUBTYPE_POWERPC_750 = T.let(T.unsafe(nil), Integer)

# the 970 (G5) sub-type for `CPU_TYPE_POWERPC`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#328
MachO::Headers::CPU_SUBTYPE_POWERPC_970 = T.let(T.unsafe(nil), Integer)

# the lowest common sub-type for `CPU_TYPE_POWERPC`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#280
MachO::Headers::CPU_SUBTYPE_POWERPC_ALL = T.let(T.unsafe(nil), Integer)

# the lowest common sub-type for `CPU_TYPE_X86_64`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#188
MachO::Headers::CPU_SUBTYPE_X86_64_ALL = T.let(T.unsafe(nil), Integer)

# the Haskell sub-type for `CPU_TYPE_X86_64`
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#192
MachO::Headers::CPU_SUBTYPE_X86_64_H = T.let(T.unsafe(nil), Integer)

# association of cpu types to symbol representations
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#114
MachO::Headers::CPU_TYPES = T.let(T.unsafe(nil), Hash)

# any CPU (unused?)
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#74
MachO::Headers::CPU_TYPE_ANY = T.let(T.unsafe(nil), Integer)

# 32-bit ARM compatible CPUs
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#90
MachO::Headers::CPU_TYPE_ARM = T.let(T.unsafe(nil), Integer)

# 64-bit ARM compatible CPUs
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#98
MachO::Headers::CPU_TYPE_ARM64 = T.let(T.unsafe(nil), Integer)

# 64-bit ARM compatible CPUs (running in 32-bit mode?)
#
# @see https://github.com/Homebrew/ruby-macho/issues/113
#
# source://ruby-macho//lib/macho/headers.rb#102
MachO::Headers::CPU_TYPE_ARM64_32 = T.let(T.unsafe(nil), Integer)

# i386 and later compatible CPUs
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#82
MachO::Headers::CPU_TYPE_I386 = T.let(T.unsafe(nil), Integer)

# m68k compatible CPUs
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#78
MachO::Headers::CPU_TYPE_MC680X0 = T.let(T.unsafe(nil), Integer)

# m88k compatible CPUs
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#94
MachO::Headers::CPU_TYPE_MC88000 = T.let(T.unsafe(nil), Integer)

# PowerPC compatible CPUs
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#106
MachO::Headers::CPU_TYPE_POWERPC = T.let(T.unsafe(nil), Integer)

# PowerPC64 compatible CPUs
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#110
MachO::Headers::CPU_TYPE_POWERPC64 = T.let(T.unsafe(nil), Integer)

# x86_64 (AMD64) compatible CPUs
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#86
MachO::Headers::CPU_TYPE_X86_64 = T.let(T.unsafe(nil), Integer)

# little-endian fat magic
#
# @api private
# @note This is defined for completeness, but should never appear in ruby-macho code,
#   since fat headers are always big-endian.
#
# source://ruby-macho//lib/macho/headers.rb#14
MachO::Headers::FAT_CIGAM = T.let(T.unsafe(nil), Integer)

# 64-bit little-endian fat magic
#
# @note This is defined for completeness, but should never appear in ruby-macho code,
#   since fat headers are always big-endian.
#
# source://ruby-macho//lib/macho/headers.rb#22
MachO::Headers::FAT_CIGAM_64 = T.let(T.unsafe(nil), Integer)

# big-endian fat magic
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#8
MachO::Headers::FAT_MAGIC = T.let(T.unsafe(nil), Integer)

# 64-bit big-endian fat magic
#
# source://ruby-macho//lib/macho/headers.rb#17
MachO::Headers::FAT_MAGIC_64 = T.let(T.unsafe(nil), Integer)

# 32-bit fat binary header architecture structure. A 32-bit fat Mach-O has one or more of
#  these, indicating one or more internal Mach-O blobs.
#
# @note "32-bit" indicates the fact that this structure stores 32-bit offsets, not that the
#   Mach-Os that it points to necessarily *are* 32-bit.
# @see MachO::Headers::FatHeader
#
# source://ruby-macho//lib/macho/headers.rb#533
class MachO::Headers::FatArch < ::MachO::MachOStructure
  # @return [Integer] the alignment, as a power of 2
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def align; end

  # @return [Integer] the CPU subtype of the Mach-O
  #
  # source://ruby-macho//lib/macho/structure.rb#228
  def cpusubtype; end

  # @return [Integer] the CPU type of the Mach-O
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def cputype; end

  # @return [Integer] the file offset to the beginning of the Mach-O data
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def offset; end

  # @return [String] the serialized fields of the fat arch
  #
  # source://ruby-macho//lib/macho/headers.rb#550
  def serialize; end

  # @return [Integer] the size, in bytes, of the Mach-O data
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def size; end

  # @return [Hash] a hash representation of this {FatArch}
  #
  # source://ruby-macho//lib/macho/headers.rb#555
  def to_h; end
end

# 64-bit fat binary header architecture structure. A 64-bit fat Mach-O has one or more of
#  these, indicating one or more internal Mach-O blobs.
#
# @note "64-bit" indicates the fact that this structure stores 64-bit offsets, not that the
#   Mach-Os that it points to necessarily *are* 64-bit.
# @see MachO::Headers::FatHeader
#
# source://ruby-macho//lib/macho/headers.rb#573
class MachO::Headers::FatArch64 < ::MachO::Headers::FatArch
  # @return [Integer] the file offset to the beginning of the Mach-O data
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def offset; end

  # @return [void]
  #
  # source://ruby-macho//lib/macho/structure.rb#256
  def reserved; end

  # @return [String] the serialized fields of the fat arch
  #
  # source://ruby-macho//lib/macho/headers.rb#584
  def serialize; end

  # @return [Integer] the size, in bytes, of the Mach-O data
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def size; end

  # @return [Hash] a hash representation of this {FatArch64}
  #
  # source://ruby-macho//lib/macho/headers.rb#589
  def to_h; end
end

# Fat binary header structure
#
# @see MachO::FatArch
#
# source://ruby-macho//lib/macho/headers.rb#506
class MachO::Headers::FatHeader < ::MachO::MachOStructure
  # @return [Integer] the magic number of the header (and file)
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def magic; end

  # @return [Integer] the number of fat architecture structures following the header
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def nfat_arch; end

  # @return [String] the serialized fields of the fat header
  #
  # source://ruby-macho//lib/macho/headers.rb#514
  def serialize; end

  # @return [Hash] a hash representation of this {FatHeader}
  #
  # source://ruby-macho//lib/macho/headers.rb#519
  def to_h; end
end

# dynamically bound bundle file
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#434
MachO::Headers::MH_BUNDLE = T.let(T.unsafe(nil), Integer)

# 32-bit little-endian magic
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#30
MachO::Headers::MH_CIGAM = T.let(T.unsafe(nil), Integer)

# 64-bit little-endian magic
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#38
MachO::Headers::MH_CIGAM_64 = T.let(T.unsafe(nil), Integer)

# core dump file
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#418
MachO::Headers::MH_CORE = T.let(T.unsafe(nil), Integer)

# companion file with only debug sections
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#442
MachO::Headers::MH_DSYM = T.let(T.unsafe(nil), Integer)

# dynamically bound shared library
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#426
MachO::Headers::MH_DYLIB = T.let(T.unsafe(nil), Integer)

# shared library stub for static linking only, no section contents
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#438
MachO::Headers::MH_DYLIB_STUB = T.let(T.unsafe(nil), Integer)

# dynamic link editor
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#430
MachO::Headers::MH_DYLINKER = T.let(T.unsafe(nil), Integer)

# demand paged executable file
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#410
MachO::Headers::MH_EXECUTE = T.let(T.unsafe(nil), Integer)

# a set of Mach-Os, running in the same userspace, sharing a linkedit.  The kext collection files are an example
# of this object type
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#451
MachO::Headers::MH_FILESET = T.let(T.unsafe(nil), Integer)

# association of filetypes to Symbol representations
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#455
MachO::Headers::MH_FILETYPES = T.let(T.unsafe(nil), Hash)

# association of mach header flag symbols to values
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#472
MachO::Headers::MH_FLAGS = T.let(T.unsafe(nil), Hash)

# fixed VM shared library file
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#414
MachO::Headers::MH_FVMLIB = T.let(T.unsafe(nil), Integer)

# x86_64 kexts
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#446
MachO::Headers::MH_KEXT_BUNDLE = T.let(T.unsafe(nil), Integer)

# 32-bit big-endian magic
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#26
MachO::Headers::MH_MAGIC = T.let(T.unsafe(nil), Integer)

# association of magic numbers to string representations
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#54
MachO::Headers::MH_MAGICS = T.let(T.unsafe(nil), Hash)

# 64-bit big-endian magic
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#34
MachO::Headers::MH_MAGIC_64 = T.let(T.unsafe(nil), Integer)

# relocatable object file
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#406
MachO::Headers::MH_OBJECT = T.let(T.unsafe(nil), Integer)

# preloaded executable file
#
# @api private
#
# source://ruby-macho//lib/macho/headers.rb#422
MachO::Headers::MH_PRELOAD = T.let(T.unsafe(nil), Integer)

# 32-bit Mach-O file header structure
#
# source://ruby-macho//lib/macho/headers.rb#597
class MachO::Headers::MachHeader < ::MachO::MachOStructure
  # @return [Integer] the file's internal alignment
  #
  # source://ruby-macho//lib/macho/headers.rb#697
  def alignment; end

  # @return [Boolean] whether or not the file is of type `MH_BUNDLE`
  #
  # source://ruby-macho//lib/macho/headers.rb#667
  def bundle?; end

  # @return [Boolean] whether or not the file is of type `MH_CORE`
  #
  # source://ruby-macho//lib/macho/headers.rb#647
  def core?; end

  # @return [Integer] the CPU subtype of the Mach-O
  #
  # source://ruby-macho//lib/macho/structure.rb#228
  def cpusubtype; end

  # @return [Integer] the CPU type of the Mach-O
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def cputype; end

  # @return [Boolean] whether or not the file is of type `MH_DSYM`
  #
  # source://ruby-macho//lib/macho/headers.rb#672
  def dsym?; end

  # @return [Boolean] whether or not the file is of type `MH_DYLIB`
  #
  # source://ruby-macho//lib/macho/headers.rb#657
  def dylib?; end

  # @return [Boolean] whether or not the file is of type `MH_DYLINKER`
  #
  # source://ruby-macho//lib/macho/headers.rb#662
  def dylinker?; end

  # @return [Boolean] whether or not the file is of type `MH_EXECUTE`
  #
  # source://ruby-macho//lib/macho/headers.rb#637
  def executable?; end

  # @return [Boolean] whether or not the file is of type `MH_FILESET`
  #
  # source://ruby-macho//lib/macho/headers.rb#682
  def fileset?; end

  # @return [Integer] the file type of the Mach-O
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def filetype; end

  # @example
  #   puts "this mach-o has position-independent execution" if header.flag?(:MH_PIE)
  # @param flag [Symbol] a mach header flag symbol
  # @return [Boolean] true if `flag` is present in the header's flag section
  #
  # source://ruby-macho//lib/macho/headers.rb#623
  def flag?(flag); end

  # @return [Integer] the header flags associated with the Mach-O
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def flags; end

  # @return [Boolean] whether or not the file is of type `MH_FVMLIB`
  #
  # source://ruby-macho//lib/macho/headers.rb#642
  def fvmlib?; end

  # @return [Boolean] whether or not the file is of type `MH_KEXT_BUNDLE`
  #
  # source://ruby-macho//lib/macho/headers.rb#677
  def kext?; end

  # @return [Integer] the magic number
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def magic; end

  # @return [Boolean] true if the Mach-O has 32-bit magic, false otherwise
  #
  # source://ruby-macho//lib/macho/headers.rb#687
  def magic32?; end

  # @return [Boolean] true if the Mach-O has 64-bit magic, false otherwise
  #
  # source://ruby-macho//lib/macho/headers.rb#692
  def magic64?; end

  # @return [Integer] the number of load commands in the Mach-O
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def ncmds; end

  # @return [Boolean] whether or not the file is of type `MH_OBJECT`
  #
  # source://ruby-macho//lib/macho/headers.rb#632
  def object?; end

  # @return [Boolean] whether or not the file is of type `MH_PRELOAD`
  #
  # source://ruby-macho//lib/macho/headers.rb#652
  def preload?; end

  # @return [Integer] the size of all load commands, in bytes, in the Mach-O
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def sizeofcmds; end

  # @return [Hash] a hash representation of this {MachHeader}
  #
  # source://ruby-macho//lib/macho/headers.rb#702
  def to_h; end
end

# 64-bit Mach-O file header structure
#
# source://ruby-macho//lib/macho/headers.rb#721
class MachO::Headers::MachHeader64 < ::MachO::Headers::MachHeader
  # @return [void]
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def reserved; end

  # @return [Hash] a hash representation of this {MachHeader64}
  #
  # source://ruby-macho//lib/macho/headers.rb#726
  def to_h; end
end

# Prelinked kernel/"kernelcache" header structure
#
# source://ruby-macho//lib/macho/headers.rb#734
class MachO::Headers::PrelinkedKernelHeader < ::MachO::MachOStructure
  # @return [Integer] a checksum for the uncompressed data
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def adler32; end

  # @return [Integer] the type of compression used
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def compress_type; end

  # @return [Integer] the size of the compressed data, in bytes
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def compressed_size; end

  # @return [Boolean] whether this prelinked kernel supports KASLR
  #
  # source://ruby-macho//lib/macho/headers.rb#763
  def kaslr?; end

  # @return [Boolean] whether this prelinked kernel is compressed with LZSS
  #
  # source://ruby-macho//lib/macho/headers.rb#768
  def lzss?; end

  # @return [Boolean] whether this prelinked kernel is compressed with LZVN
  #
  # source://ruby-macho//lib/macho/headers.rb#773
  def lzvn?; end

  # @return [void]
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def platform_name; end

  # @return [Integer] the version of the prelink format
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def prelink_version; end

  # @return [void]
  #
  # source://ruby-macho//lib/macho/structure.rb#242
  def reserved; end

  # @return [void]
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def root_path; end

  # @return [Integer] the magic number for a compressed header ({COMPRESSED_MAGIC})
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def signature; end

  # @return [Hash] a hash representation of this {PrelinkedKernelHeader}
  #
  # source://ruby-macho//lib/macho/headers.rb#778
  def to_h; end

  # @return [Integer] the size of the uncompressed data, in bytes
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def uncompressed_size; end
end

# Raised when a file is a Java classfile instead of a fat Mach-O.
#
# source://ruby-macho//lib/macho/exceptions.rb#53
class MachO::JavaClassFileError < ::MachO::NotAMachOError
  # @return [JavaClassFileError] a new instance of JavaClassFileError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#54
  def initialize; end
end

# Raised when a load command string is malformed in some way.
#
# source://ruby-macho//lib/macho/exceptions.rb#158
class MachO::LCStrMalformedError < ::MachO::MachOError
  # @param lc [MachO::LoadCommand] the load command containing the string
  # @return [LCStrMalformedError] a new instance of LCStrMalformedError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#160
  def initialize(lc); end
end

# Raised when the number of arguments used to create a load command manually
# is wrong.
#
# source://ruby-macho//lib/macho/exceptions.rb#139
class MachO::LoadCommandCreationArityError < ::MachO::MachOError
  # @param cmd_sym [Symbol] the load command's symbol
  # @param expected_arity [Integer] the number of arguments expected
  # @param actual_arity [Integer] the number of arguments received
  # @return [LoadCommandCreationArityError] a new instance of LoadCommandCreationArityError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#143
  def initialize(cmd_sym, expected_arity, actual_arity); end
end

# Raised when an unknown load command is encountered.
#
# source://ruby-macho//lib/macho/exceptions.rb#122
class MachO::LoadCommandError < ::MachO::MachOError
  # @param num [Integer] the unknown number
  # @return [LoadCommandError] a new instance of LoadCommandError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#124
  def initialize(num); end
end

# Raised when a load command can't be created manually.
#
# source://ruby-macho//lib/macho/exceptions.rb#130
class MachO::LoadCommandNotCreatableError < ::MachO::MachOError
  # @param cmd_sym [Symbol] the uncreatable load command's symbol
  # @return [LoadCommandNotCreatableError] a new instance of LoadCommandNotCreatableError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#132
  def initialize(cmd_sym); end
end

# Raised when a load command can't be serialized.
#
# source://ruby-macho//lib/macho/exceptions.rb#150
class MachO::LoadCommandNotSerializableError < ::MachO::MachOError
  # @param cmd_sym [Symbol] the load command's symbol
  # @return [LoadCommandNotSerializableError] a new instance of LoadCommandNotSerializableError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#152
  def initialize(cmd_sym); end
end

# Classes and constants for parsing load commands in Mach-O binaries.
#
# source://ruby-macho//lib/macho/load_commands.rb#5
module MachO::LoadCommands; end

# A load command containing the minimum OS version on which
# the binary was built for its platform.
# Corresponds to LC_BUILD_VERSION.
#
# source://ruby-macho//lib/macho/load_commands.rb#1159
class MachO::LoadCommands::BuildVersionCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Integer] the minimum OS version X.Y.Z packed as x16.y8.z8
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def minos; end

  # A string representation of the binary's minimum OS version.
  #
  # @return [String] a string representing the minimum OS version.
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1174
  def minos_string; end

  # @return [Integer]
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def platform; end

  # @return [Integer] the SDK version X.Y.Z packed as x16.y8.z8
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def sdk; end

  # A string representation of the binary's SDK version.
  #
  # @return [String] a string representing the SDK version.
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1185
  def sdk_string; end

  # @return [Hash] a hash representation of this {BuildVersionCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1195
  def to_h; end

  # @return [ToolEntries] tool entries
  #
  # source://ruby-macho//lib/macho/structure.rb#213
  def tool_entries; end
end

# A representation of the tool versions exposed
# by a {BuildVersionCommand} (`LC_BUILD_VERSION`).
#
# source://ruby-macho//lib/macho/load_commands.rb#1208
class MachO::LoadCommands::BuildVersionCommand::ToolEntries
  # @api private
  # @param view [MachO::MachOView] the view into the current Mach-O
  # @param ntools [Integer] the number of tools
  # @return [ToolEntries] a new instance of ToolEntries
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1215
  def initialize(view, ntools); end

  # @return [Array<Tool>] all tools
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1210
  def tools; end
end

# An individual tool.
#
# source://ruby-macho//lib/macho/load_commands.rb#1224
class MachO::LoadCommands::BuildVersionCommand::ToolEntries::Tool
  # @api private
  # @param tool [Integer] 32-bit integer
  # @param version [Integer] 32-bit integer
  # @return [Tool] a new instance of Tool
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1234
  def initialize(tool, version); end

  # @return [Hash] a hash representation of this {Tool}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1240
  def to_h; end

  # @return [Integer] the enum for the tool
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1226
  def tool; end

  # @return [Integer] the tool's version number
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1229
  def version; end
end

# load commands that can be created manually via {LoadCommand.create}
#
# @api private
#
# source://ruby-macho//lib/macho/load_commands.rb#87
MachO::LoadCommands::CREATABLE_LOAD_COMMANDS = T.let(T.unsafe(nil), Array)

# load commands responsible for loading dylibs
#
# @api private
#
# source://ruby-macho//lib/macho/load_commands.rb#77
MachO::LoadCommands::DYLIB_LOAD_COMMANDS = T.let(T.unsafe(nil), Array)

# association of dylib use flag symbols to values
#
# @api private
#
# source://ruby-macho//lib/macho/load_commands.rb#200
MachO::LoadCommands::DYLIB_USE_FLAGS = T.let(T.unsafe(nil), Hash)

# the marker used to denote a newer style dylib use command.
# the value is the timestamp 24 January 1984 18:12:16
#
# @api private
#
# source://ruby-macho//lib/macho/load_commands.rb#210
MachO::LoadCommands::DYLIB_USE_MARKER = T.let(T.unsafe(nil), Integer)

# A load command containing the file offsets and sizes of the new
# compressed form of the information dyld needs to load the image.
# Corresponds to LC_DYLD_INFO and LC_DYLD_INFO_ONLY.
#
# source://ruby-macho//lib/macho/load_commands.rb#1253
class MachO::LoadCommands::DyldInfoCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Integer] the file offset to the binding information
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def bind_off; end

  # @return [Integer] the size of the binding information
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def bind_size; end

  # @return [Integer] the file offset to the export information
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def export_off; end

  # @return [Integer] the size of the export information
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def export_size; end

  # @return [Integer] the file offset to the lazy binding information
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def lazy_bind_off; end

  # @return [Integer] the size of the lazy binding information
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def lazy_bind_size; end

  # @return [Integer] the file offset to the rebase information
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def rebase_off; end

  # @return [Integer] the size of the rebase information
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def rebase_size; end

  # @return [Hash] a hash representation of this {DyldInfoCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1285
  def to_h; end

  # @return [Integer] the file offset to the weak binding information
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def weak_bind_off; end

  # @return [Integer] the size of the weak binding information
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def weak_bind_size; end
end

# A load command representing some aspect of shared libraries, depending
# on filetype. Corresponds to LC_ID_DYLIB, LC_LOAD_DYLIB,
# LC_LOAD_WEAK_DYLIB, and LC_REEXPORT_DYLIB.
#
# source://ruby-macho//lib/macho/load_commands.rb#538
class MachO::LoadCommands::DylibCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Integer] the library's compatibility version number
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def compatibility_version; end

  # @return [Integer] the library's current version number
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def current_version; end

  # @example
  #   puts "this dylib is weakly loaded" if dylib_command.flag?(:DYLIB_USE_WEAK_LINK)
  # @param flag [Symbol] a dylib use command flag symbol
  # @return [Boolean] true if `flag` applies to this dylib command
  #
  # source://ruby-macho//lib/macho/load_commands.rb#556
  def flag?(flag); end

  # @return [LCStr] the library's path
  #   name as an LCStr
  #
  # source://ruby-macho//lib/macho/structure.rb#199
  def name; end

  # @api private
  # @param context [SerializationContext] the context
  # @return [String] the serialized fields of the load command
  #
  # source://ruby-macho//lib/macho/load_commands.rb#573
  def serialize(context); end

  # @return [Integer] the library's build time stamp
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def timestamp; end

  # @return [Hash] a hash representation of this {DylibCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#584
  def to_h; end

  # source://ruby-macho//lib/macho/structure.rb#278
  def to_s; end
end

# The newer format of load command representing some aspect of shared libraries,
# depending on filetype. Corresponds to LC_LOAD_DYLIB or LC_LOAD_WEAK_DYLIB.
#
# source://ruby-macho//lib/macho/load_commands.rb#596
class MachO::LoadCommands::DylibUseCommand < ::MachO::LoadCommands::DylibCommand
  # @example
  #   puts "this dylib is weakly loaded" if dylib_command.flag?(:DYLIB_USE_WEAK_LINK)
  # @param flag [Symbol] a dylib use command flag symbol
  # @return [Boolean] true if `flag` applies to this dylib command
  #
  # source://ruby-macho//lib/macho/load_commands.rb#623
  def flag?(flag); end

  # @return [Integer] any flags associated with this dylib use command
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def flags; end

  # source://ruby-macho//lib/macho/structure.rb#269
  def marker; end

  # @api private
  # @param context [SerializationContext] the context
  # @return [String] the serialized fields of the load command
  #
  # source://ruby-macho//lib/macho/load_commands.rb#635
  def serialize(context); end

  # @return [Hash] a hash representation of this {DylibUseCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#646
  def to_h; end

  class << self
    # Instantiates a new DylibCommand or DylibUseCommand.
    # macOS 15 and later use a new format for dylib commands (DylibUseCommand),
    # which is determined based on a special timestamp and the name offset.
    #
    # @api private
    # @param view [MachO::MachOView] the load command's raw view
    # @return [DylibCommand] the new dylib load command
    #
    # source://ruby-macho//lib/macho/load_commands.rb#608
    def new_from_bin(view); end
  end
end

# A load command representing some aspect of the dynamic linker, depending
# on filetype. Corresponds to LC_ID_DYLINKER, LC_LOAD_DYLINKER, and
# LC_DYLD_ENVIRONMENT.
#
# source://ruby-macho//lib/macho/load_commands.rb#656
class MachO::LoadCommands::DylinkerCommand < ::MachO::LoadCommands::LoadCommand
  # @return [LCStr] the dynamic linker's
  #   path name as an LCStr
  #
  # source://ruby-macho//lib/macho/structure.rb#199
  def name; end

  # @api private
  # @param context [SerializationContext] the context
  # @return [String] the serialized fields of the load command
  #
  # source://ruby-macho//lib/macho/load_commands.rb#665
  def serialize(context); end

  # @return [Hash] a hash representation of this {DylinkerCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#675
  def to_h; end

  # source://ruby-macho//lib/macho/structure.rb#278
  def to_s; end
end

# A load command containing symbolic information needed to support data
# structures used by the dynamic link editor. Corresponds to LC_DYSYMTAB.
#
# source://ruby-macho//lib/macho/load_commands.rb#869
class MachO::LoadCommands::DysymtabCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Integer] the file offset to the referenced symbol table
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def extrefsymoff; end

  # @return [Integer] the file offset to the external relocation entries
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def extreloff; end

  # @return [Integer] the index to externally defined symbols
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def iextdefsym; end

  # @return [Integer] the index to local symbols
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def ilocalsym; end

  # @return [Integer] the file offset to the indirect symbol table
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def indirectsymoff; end

  # @return [Integer] the index to undefined symbols
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def iundefsym; end

  # @return [Integer] the file offset to the local relocation entries
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def locreloff; end

  # @return [Integer] the file offset to the module table
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def modtaboff; end

  # @return [Integer] the number of externally defined symbols
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def nextdefsym; end

  # @return [Integer] the number of entries in the referenced symbol table
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def nextrefsyms; end

  # @return [Integer] the number of external relocation entries
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def nextrel; end

  # @return [Integer] the number of entries in the indirect symbol table
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def nindirectsyms; end

  # @return [Integer] the number of local symbols
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def nlocalsym; end

  # @return [Integer] the number of local relocation entries
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def nlocrel; end

  # @return [Integer] the number of entries in the module table
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def nmodtab; end

  # @return [Integer] the number of entries in the table of contents
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def ntoc; end

  # @return [Integer] the number of undefined symbols
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def nundefsym; end

  # @return [Hash] a hash representation of this {DysymtabCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#925
  def to_h; end

  # @return [Integer] the file offset to the table of contents
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def tocoff; end
end

# A load command representing the offset to and size of an encrypted
# segment. Corresponds to LC_ENCRYPTION_INFO.
#
# source://ruby-macho//lib/macho/load_commands.rb#1079
class MachO::LoadCommands::EncryptionInfoCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Integer] the encryption system, or 0 if not encrypted yet
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def cryptid; end

  # @return [Integer] the offset to the encrypted segment
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def cryptoff; end

  # @return [Integer] the size of the encrypted segment
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def cryptsize; end

  # @return [Hash] a hash representation of this {EncryptionInfoCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1090
  def to_h; end
end

# A load command representing the offset to and size of an encrypted
# segment. Corresponds to LC_ENCRYPTION_INFO_64.
#
# source://ruby-macho//lib/macho/load_commands.rb#1101
class MachO::LoadCommands::EncryptionInfoCommand64 < ::MachO::LoadCommands::EncryptionInfoCommand
  # @return [Integer] 64-bit padding value
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def pad; end

  # @return [Hash] a hash representation of this {EncryptionInfoCommand64}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1106
  def to_h; end
end

# A load command specifying the offset of main(). Corresponds to LC_MAIN.
#
# source://ruby-macho//lib/macho/load_commands.rb#1316
class MachO::LoadCommands::EntryPointCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Integer] the file (__TEXT) offset of main()
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def entryoff; end

  # @return [Integer] if not 0, the initial stack size.
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def stacksize; end

  # @return [Hash] a hash representation of this {EntryPointCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1324
  def to_h; end
end

# A load command containing a description of a Mach-O that is a constituent of a fileset.
# Each entry is further described by its own Mach header.
# Corresponds to LC_FILESET_ENTRY.
#
# source://ruby-macho//lib/macho/load_commands.rb#1448
class MachO::LoadCommands::FilesetEntryCommand < ::MachO::LoadCommands::LoadCommand
  # @return [LCStr] the entry's ID
  #
  # source://ruby-macho//lib/macho/structure.rb#199
  def entry_id; end

  # @return [Integer] the file offset of the entry
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def fileoff; end

  # @return [void]
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def reserved; end

  # @return [SegmentCommand64, nil] the matching segment command or nil if nothing matches
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1472
  def segment; end

  # @return [Hash] a hash representation of this {FilesetEntryCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1462
  def to_h; end

  # source://ruby-macho//lib/macho/structure.rb#278
  def to_s; end

  # @return [Integer] the virtual memory address of the entry
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def vmaddr; end
end

# An obsolete load command containing the path to a file to be loaded into
# memory. Corresponds to LC_FVMFILE.
#
# source://ruby-macho//lib/macho/load_commands.rb#1385
class MachO::LoadCommands::FvmfileCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Integer] the virtual address being loaded at
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def header_addr; end

  # @return [LCStr] the pathname of the file being loaded
  #
  # source://ruby-macho//lib/macho/structure.rb#199
  def name; end

  # @return [Hash] a hash representation of this {FvmfileCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1393
  def to_h; end

  # source://ruby-macho//lib/macho/structure.rb#278
  def to_s; end
end

# An obsolete load command containing the path to a library to be loaded
# into memory. Corresponds to LC_LOADFVMLIB and LC_IDFVMLIB.
#
# source://ruby-macho//lib/macho/load_commands.rb#1403
class MachO::LoadCommands::FvmlibCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Integer] the library's header address
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def header_addr; end

  # @return [Integer] the library's minor version number
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def minor_version; end

  # @return [LCStr] the library's target pathname
  #
  # source://ruby-macho//lib/macho/structure.rb#199
  def name; end

  # @return [Hash] a hash representation of this {FvmlibCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1414
  def to_h; end

  # source://ruby-macho//lib/macho/structure.rb#278
  def to_s; end
end

# An obsolete load command containing a free format string table. Each
# string is null-terminated and the command is zero-padded to a multiple of
# 4. Corresponds to LC_IDENT.
#
# source://ruby-macho//lib/macho/load_commands.rb#1380
class MachO::LoadCommands::IdentCommand < ::MachO::LoadCommands::LoadCommand; end

# load commands added after OS X 10.1 need to be bitwise ORed with
# LC_REQ_DYLD to be recognized by the dynamic linker (dyld)
#
# @api private
#
# source://ruby-macho//lib/macho/load_commands.rb#9
MachO::LoadCommands::LC_REQ_DYLD = T.let(T.unsafe(nil), Integer)

# association of load command symbols to string representations of classes
#
# @api private
#
# source://ruby-macho//lib/macho/load_commands.rb#95
MachO::LoadCommands::LC_STRUCTURES = T.let(T.unsafe(nil), Hash)

# association of load commands to symbol representations
#
# @api private
#
# source://ruby-macho//lib/macho/load_commands.rb#13
MachO::LoadCommands::LOAD_COMMANDS = T.let(T.unsafe(nil), Hash)

# association of symbol representations to load command constants
#
# @api private
#
# source://ruby-macho//lib/macho/load_commands.rb#73
MachO::LoadCommands::LOAD_COMMAND_CONSTANTS = T.let(T.unsafe(nil), Hash)

# A load command representing the offsets and sizes of a blob of data in
# the __LINKEDIT segment. Corresponds to LC_CODE_SIGNATURE,
# LC_SEGMENT_SPLIT_INFO, LC_FUNCTION_STARTS, LC_DATA_IN_CODE,
# LC_DYLIB_CODE_SIGN_DRS, LC_LINKER_OPTIMIZATION_HINT, LC_DYLD_EXPORTS_TRIE,
# LC_DYLD_CHAINED_FIXUPS, or LC_ATOM_INFO.
#
# source://ruby-macho//lib/macho/load_commands.rb#1061
class MachO::LoadCommands::LinkeditDataCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Integer] offset to the data in the __LINKEDIT segment
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def dataoff; end

  # @return [Integer] size of the data in the __LINKEDIT segment
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def datasize; end

  # @return [Hash] a hash representation of this {LinkeditDataCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1069
  def to_h; end
end

# A load command containing linker options embedded in object files.
# Corresponds to LC_LINKER_OPTION.
#
# source://ruby-macho//lib/macho/load_commands.rb#1303
class MachO::LoadCommands::LinkerOptionCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Integer] the number of strings
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def count; end

  # @return [Hash] a hash representation of this {LinkerOptionCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1308
  def to_h; end
end

# The top-level Mach-O load command structure.
#
# This is the most generic load command -- only the type ID and size are
# represented. Used when a more specific class isn't available or isn't implemented.
#
# source://ruby-macho//lib/macho/load_commands.rb#216
class MachO::LoadCommands::LoadCommand < ::MachO::MachOStructure
  # @return [Integer] the load command's type ID
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def cmd; end

  # @return [Integer] the size of the load command, in bytes
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def cmdsize; end

  # @deprecated use {#view} instead
  # @return [Integer] the load command's offset in the source file
  #
  # source://ruby-macho//lib/macho/load_commands.rb#281
  def offset; end

  # @return [Boolean] whether the load command can be serialized
  #
  # source://ruby-macho//lib/macho/load_commands.rb#263
  def serializable?; end

  # @api private
  # @param context [SerializationContext] the context
  #   to serialize into
  # @raise [LoadCommandNotSerializableError]
  # @return [String, nil] the serialized fields of the load command, or nil
  #   if the load command can't be serialized
  #
  # source://ruby-macho//lib/macho/load_commands.rb#272
  def serialize(context); end

  # @note Children should override this to include additional information.
  # @return [Hash] a hash representation of this load command
  #
  # source://ruby-macho//lib/macho/load_commands.rb#301
  def to_h; end

  # @return [String] a string representation of the load command's
  #   identifying number
  #
  # source://ruby-macho//lib/macho/load_commands.rb#295
  def to_s; end

  # @return [Symbol, nil] a symbol representation of the load command's
  #   type ID, or nil if the ID doesn't correspond to a known load command class
  #
  # source://ruby-macho//lib/macho/load_commands.rb#287
  def to_sym; end

  # @return [Symbol, nil] a symbol representation of the load command's
  #   type ID, or nil if the ID doesn't correspond to a known load command class
  #
  # source://ruby-macho//lib/macho/load_commands.rb#287
  def type; end

  # @return [MachO::MachOView, nil] the raw view associated with the load command,
  #   or nil if the load command was created via {create}.
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def view; end

  class << self
    # Creates a new (viewless) command corresponding to the symbol provided
    #
    # @param cmd_sym [Symbol] the symbol of the load command being created
    # @param args [Array] the arguments for the load command being created
    # @raise [LoadCommandNotCreatableError]
    #
    # source://ruby-macho//lib/macho/load_commands.rb#241
    def create(cmd_sym, *args); end

    # Instantiates a new LoadCommand given a view into its origin Mach-O
    #
    # @api private
    # @param view [MachO::MachOView] the load command's raw view
    # @return [LoadCommand] the new load command
    #
    # source://ruby-macho//lib/macho/load_commands.rb#231
    def new_from_bin(view); end
  end
end

# Represents a Load Command string. A rough analogue to the lc_str
# struct used internally by OS X. This class allows ruby-macho to
# pretend that strings stored in LCs are immediately available without
# explicit operations on the raw Mach-O data.
#
# source://ruby-macho//lib/macho/load_commands.rb#314
class MachO::LoadCommands::LoadCommand::LCStr
  # @api private
  # @param lc [LoadCommand] the load command
  # @param lc_str [Integer, String] the offset to the beginning of the
  #   string, or the string itself if not being initialized with a view.
  # @raise [MachO::LCStrMalformedError] if the string is malformed
  # @return [LCStr] a new instance of LCStr
  # @todo devise a solution such that the `lc_str` parameter is not
  #   interpreted differently depending on `lc.view`. The current behavior
  #   is a hack to allow viewless load command creation.
  #
  # source://ruby-macho//lib/macho/load_commands.rb#323
  def initialize(lc, lc_str); end

  # @return [Hash] a hash representation of this {LCStr}.
  #
  # source://ruby-macho//lib/macho/load_commands.rb#353
  def to_h; end

  # @return [Integer] the offset to the beginning of the string in the
  #   load command
  #
  # source://ruby-macho//lib/macho/load_commands.rb#348
  def to_i; end

  # @return [String] a string representation of the LCStr
  #
  # source://ruby-macho//lib/macho/load_commands.rb#342
  def to_s; end
end

# Represents the contextual information needed by a load command to
# serialize itself correctly into a binary string.
#
# source://ruby-macho//lib/macho/load_commands.rb#363
class MachO::LoadCommands::LoadCommand::SerializationContext
  # @api private
  # @param endianness [Symbol] the endianness of the context
  # @param alignment [Integer] the alignment of the context
  # @return [SerializationContext] a new instance of SerializationContext
  #
  # source://ruby-macho//lib/macho/load_commands.rb#381
  def initialize(endianness, alignment); end

  # @return [Integer] the constant alignment value used to pad the
  #   serialized load command
  #
  # source://ruby-macho//lib/macho/load_commands.rb#369
  def alignment; end

  # @return [Symbol] the endianness of the serialized load command
  #
  # source://ruby-macho//lib/macho/load_commands.rb#365
  def endianness; end

  class << self
    # @param macho [MachO::MachOFile] the file to contextualize
    # @return [SerializationContext] the
    #   resulting context
    #
    # source://ruby-macho//lib/macho/load_commands.rb#374
    def context_for(macho); end
  end
end

# A load command containing an owner name and offset/size for an arbitrary data region.
# Corresponds to LC_NOTE.
#
# source://ruby-macho//lib/macho/load_commands.rb#1425
class MachO::LoadCommands::NoteCommand < ::MachO::LoadCommands::LoadCommand
  # @return [String] the name of the owner for this note
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def data_owner; end

  # @return [Integer] the offset, within the file, of the note
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def offset; end

  # @return [Integer] the size, in bytes, of the note
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def size; end

  # @return [Hash] a hash representation of this {NoteCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1436
  def to_h; end

  # source://ruby-macho//lib/macho/structure.rb#278
  def to_s; end
end

# A load command containing the value of the original checksum for prebound
# files, or zero. Corresponds to LC_PREBIND_CKSUM.
#
# source://ruby-macho//lib/macho/load_commands.rb#1017
class MachO::LoadCommands::PrebindCksumCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Integer] the checksum or 0
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def cksum; end

  # @return [Hash] a hash representation of this {PrebindCksumCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1022
  def to_h; end
end

# A load command used to indicate dynamic libraries used in prebinding.
# Corresponds to LC_PREBOUND_DYLIB.
#
# source://ruby-macho//lib/macho/load_commands.rb#684
class MachO::LoadCommands::PreboundDylibCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Integer] a bit vector of linked modules
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def linked_modules; end

  # @return [LCStr] the library's path
  #   name as an LCStr
  #
  # source://ruby-macho//lib/macho/structure.rb#199
  def name; end

  # @return [Integer] the number of modules in the library
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def nmodules; end

  # @return [Hash] a hash representation of this {PreboundDylibCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#696
  def to_h; end

  # source://ruby-macho//lib/macho/structure.rb#278
  def to_s; end
end

# A load command containing the address of the dynamic shared library
# initialization routine and an index into the module table for the module
# that defines the routine. Corresponds to LC_ROUTINES.
#
# source://ruby-macho//lib/macho/load_commands.rb#714
class MachO::LoadCommands::RoutinesCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Integer] the address of the initialization routine
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def init_address; end

  # @return [Integer] the index into the module table that the init routine
  #   is defined in
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def init_module; end

  # @return [void]
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def reserved1; end

  # @return [void]
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def reserved2; end

  # @return [void]
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def reserved3; end

  # @return [void]
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def reserved4; end

  # @return [void]
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def reserved5; end

  # @return [void]
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def reserved6; end

  # @return [Hash] a hash representation of this {RoutinesCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#741
  def to_h; end
end

# A load command containing the address of the dynamic shared library
# initialization routine and an index into the module table for the module
# that defines the routine. Corresponds to LC_ROUTINES_64.
#
# source://ruby-macho//lib/macho/load_commands.rb#758
class MachO::LoadCommands::RoutinesCommand64 < ::MachO::LoadCommands::RoutinesCommand
  # @return [Integer] the address of the initialization routine
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def init_address; end

  # @return [Integer] the index into the module table that the init routine
  #   is defined in
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def init_module; end

  # @return [void]
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def reserved1; end

  # @return [void]
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def reserved2; end

  # @return [void]
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def reserved3; end

  # @return [void]
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def reserved4; end

  # @return [void]
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def reserved5; end

  # @return [void]
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def reserved6; end
end

# A load command representing an rpath, which specifies a path that should
# be added to the current run path used to find @rpath prefixed dylibs.
# Corresponds to LC_RPATH.
#
# source://ruby-macho//lib/macho/load_commands.rb#1032
class MachO::LoadCommands::RpathCommand < ::MachO::LoadCommands::LoadCommand
  # @return [LCStr] the path to add to the run path as an LCStr
  #
  # source://ruby-macho//lib/macho/structure.rb#199
  def path; end

  # @api private
  # @param context [SerializationContext] the context
  # @return [String] the serialized fields of the load command
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1039
  def serialize(context); end

  # @return [Hash] a hash representation of this {RpathCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1049
  def to_h; end

  # source://ruby-macho//lib/macho/structure.rb#278
  def to_s; end
end

# association of segment flag symbols to values
#
# @api private
#
# source://ruby-macho//lib/macho/load_commands.rb#190
MachO::LoadCommands::SEGMENT_FLAGS = T.let(T.unsafe(nil), Hash)

# association of segment name symbols to names
#
# @api private
#
# source://ruby-macho//lib/macho/load_commands.rb#162
MachO::LoadCommands::SEGMENT_NAMES = T.let(T.unsafe(nil), Hash)

# A load command indicating that part of this file is to be mapped into
# the task's address space. Corresponds to LC_SEGMENT.
#
# source://ruby-macho//lib/macho/load_commands.rb#422
class MachO::LoadCommands::SegmentCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Integer] the file offset of the segment
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def fileoff; end

  # @return [Integer] the amount to map from the file
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def filesize; end

  # @example
  #   puts "this segment relocated in/to it" if sect.flag?(:SG_NORELOC)
  # @param flag [Symbol] a segment flag symbol
  # @return [Boolean] true if `flag` is present in the segment's flag field
  #
  # source://ruby-macho//lib/macho/load_commands.rb#474
  def flag?(flag); end

  # @return [Integer] any flags associated with the segment
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def flags; end

  # Guesses the alignment of the segment.
  #
  # @note See `guess_align` in `cctools/misc/lipo.c`
  # @return [Integer] the guessed alignment, as a power of 2
  #
  # source://ruby-macho//lib/macho/load_commands.rb#485
  def guess_align; end

  # @return [Integer] the initial VM protection
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def initprot; end

  # @return [Integer] the maximum VM protection
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def maxprot; end

  # @return [Integer] the number of sections in the segment
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def nsects; end

  # All sections referenced within this segment.
  #
  # @return [Array<MachO::Sections::Section>] if the Mach-O is 32-bit
  # @return [Array<MachO::Sections::Section64>] if the Mach-O is 64-bit
  #
  # source://ruby-macho//lib/macho/load_commands.rb#453
  def sections; end

  # @return [String] the name of the segment
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def segname; end

  # @return [Hash] a hash representation of this {SegmentCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#503
  def to_h; end

  # source://ruby-macho//lib/macho/structure.rb#278
  def to_s; end

  # @return [Integer] the memory address of the segment
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def vmaddr; end

  # @return [Integer] the memory size of the segment
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def vmsize; end
end

# A load command indicating that part of this file is to be mapped into
# the task's address space. Corresponds to LC_SEGMENT_64.
#
# source://ruby-macho//lib/macho/load_commands.rb#521
class MachO::LoadCommands::SegmentCommand64 < ::MachO::LoadCommands::SegmentCommand
  # @return [Integer] the file offset of the segment
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def fileoff; end

  # @return [Integer] the amount to map from the file
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def filesize; end

  # @return [Integer] the memory address of the segment
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def vmaddr; end

  # @return [Integer] the memory size of the segment
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def vmsize; end
end

# A load command specifying the version of the sources used to build the
# binary. Corresponds to LC_SOURCE_VERSION.
#
# source://ruby-macho//lib/macho/load_commands.rb#1334
class MachO::LoadCommands::SourceVersionCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Hash] a hash representation of this {SourceVersionCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1351
  def to_h; end

  # @return [Integer] the version packed as a24.b10.c10.d10.e10
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def version; end

  # A string representation of the sources used to build the binary.
  #
  # @return [String] a string representation of the version
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1340
  def version_string; end
end

# A load command signifying a shared library that is a subframework of
# an umbrella framework. Corresponds to LC_SUB_CLIENT.
#
# source://ruby-macho//lib/macho/load_commands.rb#829
class MachO::LoadCommands::SubClientCommand < ::MachO::LoadCommands::LoadCommand
  # @return [LCStr] the subclient name as an LCStr
  #
  # source://ruby-macho//lib/macho/structure.rb#199
  def sub_client; end

  # @return [Hash] a hash representation of this {SubClientCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#834
  def to_h; end

  # source://ruby-macho//lib/macho/structure.rb#278
  def to_s; end
end

# A load command signifying membership of a subframework containing the name
# of an umbrella framework. Corresponds to LC_SUB_FRAMEWORK.
#
# source://ruby-macho//lib/macho/load_commands.rb#787
class MachO::LoadCommands::SubFrameworkCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Hash] a hash representation of this {SubFrameworkCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#792
  def to_h; end

  # source://ruby-macho//lib/macho/structure.rb#278
  def to_s; end

  # @return [LCStr] the umbrella framework name as an LCStr
  #
  # source://ruby-macho//lib/macho/structure.rb#199
  def umbrella; end
end

# A load command signifying a sublibrary of a shared library. Corresponds
# to LC_SUB_LIBRARY.
#
# source://ruby-macho//lib/macho/load_commands.rb#815
class MachO::LoadCommands::SubLibraryCommand < ::MachO::LoadCommands::LoadCommand
  # @return [LCStr] the sublibrary name as an LCStr
  #
  # source://ruby-macho//lib/macho/structure.rb#199
  def sub_library; end

  # @return [Hash] a hash representation of this {SubLibraryCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#820
  def to_h; end

  # source://ruby-macho//lib/macho/structure.rb#278
  def to_s; end
end

# A load command signifying membership of a subumbrella containing the name
# of an umbrella framework. Corresponds to LC_SUB_UMBRELLA.
#
# source://ruby-macho//lib/macho/load_commands.rb#801
class MachO::LoadCommands::SubUmbrellaCommand < ::MachO::LoadCommands::LoadCommand
  # @return [LCStr] the subumbrella framework name as an LCStr
  #
  # source://ruby-macho//lib/macho/structure.rb#199
  def sub_umbrella; end

  # @return [Hash] a hash representation of this {SubUmbrellaCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#806
  def to_h; end

  # source://ruby-macho//lib/macho/structure.rb#278
  def to_s; end
end

# An obsolete load command containing the offset and size of the (GNU style)
# symbol table information. Corresponds to LC_SYMSEG.
#
# source://ruby-macho//lib/macho/load_commands.rb#1361
class MachO::LoadCommands::SymsegCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Integer] the offset to the symbol segment
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def offset; end

  # @return [Integer] the size of the symbol segment in bytes
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def size; end

  # @return [Hash] a hash representation of this {SymsegCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1369
  def to_h; end
end

# A load command containing the offsets and sizes of the link-edit 4.3BSD
# "stab" style symbol table information. Corresponds to LC_SYMTAB.
#
# source://ruby-macho//lib/macho/load_commands.rb#843
class MachO::LoadCommands::SymtabCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Integer] the number of symbol table entries
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def nsyms; end

  # @return [Integer] the string table's offset
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def stroff; end

  # @return [Integer] the string table size in bytes
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def strsize; end

  # @return [Integer] the symbol table's offset
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def symoff; end

  # @return [Hash] a hash representation of this {SymtabCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#857
  def to_h; end
end

# A load command used to represent threads.
# out except the common ones (cmd, cmdsize)
#
# @note cctools-870 and onwards have all fields of thread_command commented
#
# source://ruby-macho//lib/macho/load_commands.rb#708
class MachO::LoadCommands::ThreadCommand < ::MachO::LoadCommands::LoadCommand; end

# A load command containing the offset and number of hints in the two-level
# namespace lookup hints table. Corresponds to LC_TWOLEVEL_HINTS.
#
# source://ruby-macho//lib/macho/load_commands.rb#951
class MachO::LoadCommands::TwolevelHintsCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Integer] the offset to the hint table
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def htoffset; end

  # @return [Integer] the number of hints in the hint table
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def nhints; end

  # @return [TwolevelHintsTable] the hint table
  #
  # source://ruby-macho//lib/macho/structure.rb#206
  def table; end

  # @return [Hash] a hash representation of this {TwolevelHintsCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#963
  def to_h; end
end

# A representation of the two-level namespace lookup hints table exposed
# by a {TwolevelHintsCommand} (`LC_TWOLEVEL_HINTS`).
#
# source://ruby-macho//lib/macho/load_commands.rb#973
class MachO::LoadCommands::TwolevelHintsCommand::TwolevelHintsTable
  # @api private
  # @param view [MachO::MachOView] the view into the current Mach-O
  # @param htoffset [Integer] the offset of the hints table
  # @param nhints [Integer] the number of two-level hints in the table
  # @return [TwolevelHintsTable] a new instance of TwolevelHintsTable
  #
  # source://ruby-macho//lib/macho/load_commands.rb#981
  def initialize(view, htoffset, nhints); end

  # @return [Array<TwolevelHint>] all hints in the table
  #
  # source://ruby-macho//lib/macho/load_commands.rb#975
  def hints; end
end

# An individual two-level namespace lookup hint.
#
# source://ruby-macho//lib/macho/load_commands.rb#990
class MachO::LoadCommands::TwolevelHintsCommand::TwolevelHintsTable::TwolevelHint
  # @api private
  # @param blob [Integer] the 32-bit number containing the lookup hint
  # @return [TwolevelHint] a new instance of TwolevelHint
  #
  # source://ruby-macho//lib/macho/load_commands.rb#999
  def initialize(blob); end

  # @return [Integer] the index into the sub-images
  #
  # source://ruby-macho//lib/macho/load_commands.rb#992
  def isub_image; end

  # @return [Integer] the index into the table of contents
  #
  # source://ruby-macho//lib/macho/load_commands.rb#995
  def itoc; end

  # @return [Hash] a hash representation of this {TwolevelHint}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1005
  def to_h; end
end

# A load command containing a single 128-bit unique random number
# identifying an object produced by static link editor. Corresponds to
# LC_UUID.
#
# source://ruby-macho//lib/macho/load_commands.rb#391
class MachO::LoadCommands::UUIDCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Hash] returns a hash representation of this {UUIDCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#412
  def to_h; end

  # @return [String] an alias for uuid_string
  #
  # source://ruby-macho//lib/macho/load_commands.rb#407
  def to_s; end

  # @return [Array<Integer>] the UUID
  #
  # source://ruby-macho//lib/macho/structure.rb#242
  def uuid; end

  # @return [String] a string representation of the UUID
  #
  # source://ruby-macho//lib/macho/load_commands.rb#396
  def uuid_string; end
end

# A load command containing the minimum OS version on which the binary
# was built to run. Corresponds to LC_VERSION_MIN_MACOSX and
# LC_VERSION_MIN_IPHONEOS.
#
# source://ruby-macho//lib/macho/load_commands.rb#1116
class MachO::LoadCommands::VersionMinCommand < ::MachO::LoadCommands::LoadCommand
  # @return [Integer] the SDK version X.Y.Z packed as x16.y8.z8
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def sdk; end

  # A string representation of the binary's SDK version.
  #
  # @return [String] a string representing the SDK version.
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1136
  def sdk_string; end

  # @return [Hash] a hash representation of this {VersionMinCommand}
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1146
  def to_h; end

  # @return [Integer] the version X.Y.Z packed as x16.y8.z8
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def version; end

  # A string representation of the binary's minimum OS version.
  #
  # @return [String] a string representing the minimum OS version.
  #
  # source://ruby-macho//lib/macho/load_commands.rb#1125
  def version_string; end
end

# Raised when a Mach-O is loaded with FatFile.
#
# source://ruby-macho//lib/macho/exceptions.rb#89
class MachO::MachOBinaryError < ::MachO::MachOError
  # @return [MachOBinaryError] a new instance of MachOBinaryError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#90
  def initialize; end
end

# A generic Mach-O error in execution.
#
# source://ruby-macho//lib/macho/exceptions.rb#5
class MachO::MachOError < ::RuntimeError; end

# Represents a Mach-O file, which contains a header and load commands
# as well as binary executable instructions. Mach-O binaries are
# architecture specific.
#
# @see https://en.wikipedia.org/wiki/Mach-O
# @see FatFile
#
# source://ruby-macho//lib/macho/macho_file.rb#11
class MachO::MachOFile
  extend ::Forwardable

  # Creates a new instance from data read from the given filename.
  #
  # @note The `:decompress` option relies on non-default dependencies. Compression
  #   is only used in niche Mach-Os, so leaving this disabled is a reasonable default for
  #   virtually all normal uses.
  # @option opts
  # @option opts
  # @param filename [String] the Mach-O file to load from
  # @param opts [Hash] options to control the parser with
  # @raise [ArgumentError] if the given file does not exist
  # @return [MachOFile] a new instance of MachOFile
  #
  # source://ruby-macho//lib/macho/macho_file.rb#58
  def initialize(filename, **opts); end

  # All load commands of a given name.
  #
  # @example
  #   file.command("LC_LOAD_DYLIB")
  #   file[:LC_LOAD_DYLIB]
  # @param name [String, Symbol] the load command ID
  # @return [Array<LoadCommands::LoadCommand>] an array of load commands
  #   corresponding to `name`
  #
  # source://ruby-macho//lib/macho/macho_file.rb#149
  def [](name); end

  # Appends a new load command to the Mach-O.
  #
  # @note This is public, but methods like {#add_rpath} should be preferred.
  #   Setting `repopulate` to false **will leave the instance in an
  #   inconsistent state** unless {#populate_fields} is called **immediately**
  #   afterwards.
  # @option f
  # @param lc [LoadCommands::LoadCommand] the load command being added
  # @param options [Hash]
  # @param f [Hash] a customizable set of options
  # @return [void]
  # @see #insert_command
  #
  # source://ruby-macho//lib/macho/macho_file.rb#215
  def add_command(lc, options = T.unsafe(nil)); end

  # Add the given runtime path to the Mach-O.
  #
  # @example
  #   file.rpaths # => ["/lib"]
  #   file.add_rpath("/usr/lib")
  #   file.rpaths # => ["/lib", "/usr/lib"]
  # @note `_options` is currently unused and is provided for signature
  #   compatibility with {MachO::FatFile#add_rpath}
  # @param path [String] the new runtime path
  # @param _options [Hash]
  # @raise [RpathExistsError] if the runtime path already exists
  # @return [void]
  #
  # source://ruby-macho//lib/macho/macho_file.rb#405
  def add_rpath(path, _options = T.unsafe(nil)); end

  # @return [Integer] the file's internal alignment
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def alignment(*args, **_arg1, &block); end

  # @return [Boolean] whether or not the file is of type `MH_BUNDLE`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def bundle?(*args, **_arg1, &block); end

  # Changes the shared library `old_name` to `new_name`
  #
  # @example
  #   file.change_install_name("abc.dylib", "def.dylib")
  # @note `_options` is currently unused and is provided for signature
  #   compatibility with {MachO::FatFile#change_install_name}
  # @param old_name [String] the shared library's old name
  # @param new_name [String] the shared library's new name
  # @param _options [Hash]
  # @raise [DylibUnknownError] if no shared library has the old name
  # @return [void]
  #
  # source://ruby-macho//lib/macho/macho_file.rb#354
  def change_dylib(old_name, new_name, _options = T.unsafe(nil)); end

  # Changes the Mach-O's dylib ID to `new_id`. Does nothing if not a dylib.
  #
  # @example
  #   file.change_dylib_id("libFoo.dylib")
  # @note `_options` is currently unused and is provided for signature
  #   compatibility with {MachO::FatFile#change_dylib_id}
  # @param new_id [String] the dylib's new ID
  # @param _options [Hash]
  # @raise [ArgumentError] if `new_id` is not a String
  # @return [void]
  #
  # source://ruby-macho//lib/macho/macho_file.rb#317
  def change_dylib_id(new_id, _options = T.unsafe(nil)); end

  # Changes the shared library `old_name` to `new_name`
  #
  # @example
  #   file.change_install_name("abc.dylib", "def.dylib")
  # @note `_options` is currently unused and is provided for signature
  #   compatibility with {MachO::FatFile#change_install_name}
  # @param old_name [String] the shared library's old name
  # @param new_name [String] the shared library's new name
  # @param _options [Hash]
  # @raise [DylibUnknownError] if no shared library has the old name
  # @return [void]
  #
  # source://ruby-macho//lib/macho/macho_file.rb#354
  def change_install_name(old_name, new_name, _options = T.unsafe(nil)); end

  # Changes the runtime path `old_path` to `new_path`
  #
  # @example
  #   file.change_rpath("/usr/lib", "/usr/local/lib")
  # @option options
  # @param old_path [String] the old runtime path
  # @param new_path [String] the new runtime path
  # @param options [Hash]
  # @raise [RpathUnknownError] if no such old runtime path exists
  # @return [void]
  #
  # source://ruby-macho//lib/macho/macho_file.rb#384
  def change_rpath(old_path, new_path, options = T.unsafe(nil)); end

  # All load commands of a given name.
  #
  # @example
  #   file.command("LC_LOAD_DYLIB")
  #   file[:LC_LOAD_DYLIB]
  # @param name [String, Symbol] the load command ID
  # @return [Array<LoadCommands::LoadCommand>] an array of load commands
  #   corresponding to `name`
  #
  # source://ruby-macho//lib/macho/macho_file.rb#149
  def command(name); end

  # @return [Boolean] whether or not the file is of type `MH_CORE`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def core?(*args, **_arg1, &block); end

  # @return [Symbol] a symbol representation of the Mach-O's CPU subtype
  #
  # source://ruby-macho//lib/macho/macho_file.rb#138
  def cpusubtype; end

  # @return [Symbol] a symbol representation of the Mach-O's CPU type
  #
  # source://ruby-macho//lib/macho/macho_file.rb#133
  def cputype; end

  # Delete a load command from the Mach-O.
  #
  # @note This is public, but methods like {#delete_rpath} should be preferred.
  #   Setting `repopulate` to false **will leave the instance in an
  #   inconsistent state** unless {#populate_fields} is called **immediately**
  #   afterwards.
  # @option options
  # @param lc [LoadCommands::LoadCommand] the load command being deleted
  # @param options [Hash]
  # @return [void]
  #
  # source://ruby-macho//lib/macho/macho_file.rb#229
  def delete_command(lc, options = T.unsafe(nil)); end

  # Delete the given runtime path from the Mach-O.
  #
  # @example
  #   file1.rpaths # => ["/lib", "/usr/lib", "/lib"]
  #   file1.delete_rpath("/lib")
  #   file1.rpaths # => ["/usr/lib", "/lib"]
  #   file2.rpaths # => ["foo", "foo"]
  #   file2.delete_rpath("foo", :uniq => true)
  #   file2.rpaths # => []
  #   file3.rpaths # => ["foo", "bar", "foo"]
  #   file3.delete_rpath("foo", :last => true)
  #   file3.rpaths # => ["foo", "bar"]
  # @option options
  # @option options
  # @param options [Hash]
  # @param path [String] the runtime path to delete
  # @raise [RpathUnknownError] if no such runtime path exists
  # @raise [ArgumentError] if both :uniq and :last are true
  # @return void
  #
  # source://ruby-macho//lib/macho/macho_file.rb#434
  def delete_rpath(path, options = T.unsafe(nil)); end

  # @return [Boolean] whether or not the file is of type `MH_DSYM`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def dsym?(*args, **_arg1, &block); end

  # @return [Boolean] whether or not the file is of type `MH_DYLIB`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def dylib?(*args, **_arg1, &block); end

  # The Mach-O's dylib ID, or `nil` if not a dylib.
  #
  # @example
  #   file.dylib_id # => 'libBar.dylib'
  # @return [String, nil] the Mach-O's dylib ID
  #
  # source://ruby-macho//lib/macho/macho_file.rb#300
  def dylib_id; end

  # Changes the Mach-O's dylib ID to `new_id`. Does nothing if not a dylib.
  #
  # @example
  #   file.change_dylib_id("libFoo.dylib")
  # @note `_options` is currently unused and is provided for signature
  #   compatibility with {MachO::FatFile#change_dylib_id}
  # @param new_id [String] the dylib's new ID
  # @param _options [Hash]
  # @raise [ArgumentError] if `new_id` is not a String
  # @return [void]
  #
  # source://ruby-macho//lib/macho/macho_file.rb#317
  def dylib_id=(new_id, _options = T.unsafe(nil)); end

  # All load commands responsible for loading dylibs.
  #
  # @return [Array<LoadCommands::DylibCommand>] an array of DylibCommands
  #
  # source://ruby-macho//lib/macho/macho_file.rb#254
  def dylib_load_commands; end

  # @return [Boolean] whether or not the file is of type `MH_DYLINKER`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def dylinker?(*args, **_arg1, &block); end

  # @return [Symbol] the endianness of the file, :big or :little
  #
  # source://ruby-macho//lib/macho/macho_file.rb#22
  def endianness; end

  # @return [Boolean] whether or not the file is of type `MH_EXECUTE`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def executable?(*args, **_arg1, &block); end

  # @return [String, nil] the filename loaded from, or nil if loaded from a binary
  #   string
  #
  # source://ruby-macho//lib/macho/macho_file.rb#16
  def filename; end

  # @return [String, nil] the filename loaded from, or nil if loaded from a binary
  #   string
  #
  # source://ruby-macho//lib/macho/macho_file.rb#16
  def filename=(_arg0); end

  # @return [Symbol] a string representation of the Mach-O's filetype
  #
  # source://ruby-macho//lib/macho/macho_file.rb#128
  def filetype; end

  # @return [Integer] the header flags associated with the Mach-O
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def flags(*args, **_arg1, &block); end

  # @return [Boolean] whether or not the file is of type `MH_FVMLIB`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def fvmlib?(*args, **_arg1, &block); end

  # @return [Headers::MachHeader] if the Mach-O is 32-bit
  # @return [Headers::MachHeader64] if the Mach-O is 64-bit
  #
  # source://ruby-macho//lib/macho/macho_file.rb#26
  def header; end

  # Initializes a new MachOFile instance from a binary string with the given options.
  #
  # @api private
  # @see MachO::MachOFile.new_from_bin
  #
  # source://ruby-macho//lib/macho/macho_file.rb#70
  def initialize_from_bin(bin, opts); end

  # Inserts a load command at the given offset.
  # **will leave the object in an inconsistent state**.
  #
  # @note Calling this method with an arbitrary offset in the load command region
  # @option options
  # @param offset [Integer] the offset to insert at
  # @param lc [LoadCommands::LoadCommand] the load command to insert
  # @param options [Hash]
  # @raise [OffsetInsertionError] if the offset is not in the load command region
  # @raise [HeaderPadError] if the new command exceeds the header pad buffer
  #
  # source://ruby-macho//lib/macho/macho_file.rb#165
  def insert_command(offset, lc, options = T.unsafe(nil)); end

  # @return [Boolean] whether or not the file is of type `MH_KEXT_BUNDLE`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def kext?(*args, **_arg1, &block); end

  # All shared libraries linked to the Mach-O.
  #
  # @return [Array<String>] an array of all shared libraries
  #
  # source://ruby-macho//lib/macho/macho_file.rb#336
  def linked_dylibs; end

  # @note load commands are provided in order of ascending offset.
  # @return [Array<LoadCommands::LoadCommand>] an array of the file's load
  #   commands
  #
  # source://ruby-macho//lib/macho/macho_file.rb#31
  def load_commands; end

  # @return [Integer] the magic number
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def magic(*args, **_arg1, &block); end

  # @return [Boolean] true if the Mach-O has 32-bit magic, false otherwise
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def magic32?(*args, **_arg1, &block); end

  # @return [Boolean] true if the Mach-O has 64-bit magic, false otherwise
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def magic64?(*args, **_arg1, &block); end

  # @return [String] a string representation of the file's magic number
  #
  # source://ruby-macho//lib/macho/macho_file.rb#123
  def magic_string; end

  # @return [Integer] the number of load commands in the Mach-O
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def ncmds(*args, **_arg1, &block); end

  # @return [Boolean] whether or not the file is of type `MH_OBJECT`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def object?(*args, **_arg1, &block); end

  # @return [Hash] any parser options that the instance was created with
  #
  # source://ruby-macho//lib/macho/macho_file.rb#19
  def options; end

  # Populate the instance's fields with the raw Mach-O data.
  #
  # @note This method is public, but should (almost) never need to be called.
  #   The exception to this rule is when methods like {#add_command} and
  #   {#delete_command} have been called with `repopulate = false`.
  # @return [void]
  #
  # source://ruby-macho//lib/macho/macho_file.rb#247
  def populate_fields; end

  # @return [Boolean] whether or not the file is of type `MH_PRELOAD`
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def preload?(*args, **_arg1, &block); end

  # Replace a load command with another command in the Mach-O, preserving location.
  #
  # @note This is public, but methods like {#dylib_id=} should be preferred.
  # @param old_lc [LoadCommands::LoadCommand] the load command being replaced
  # @param new_lc [LoadCommands::LoadCommand] the load command being added
  # @raise [HeaderPadError] if the new command exceeds the header pad buffer
  # @return [void]
  # @see #insert_command
  #
  # source://ruby-macho//lib/macho/macho_file.rb#193
  def replace_command(old_lc, new_lc); end

  # All runtime paths searched by the dynamic linker for the Mach-O.
  #
  # @return [Array<String>] an array of all runtime paths
  #
  # source://ruby-macho//lib/macho/macho_file.rb#370
  def rpaths; end

  # The segment alignment for the Mach-O. Guesses conservatively.
  #
  # @note This is **not** the same as {#alignment}!
  # @note See `get_align` and `get_align_64` in `cctools/misc/lipo.c`
  # @return [Integer] the alignment, as a power of 2
  #
  # source://ruby-macho//lib/macho/macho_file.rb#273
  def segment_alignment; end

  # All segment load commands in the Mach-O.
  #
  # @return [Array<LoadCommands::SegmentCommand>] if the Mach-O is 32-bit
  # @return [Array<LoadCommands::SegmentCommand64>] if the Mach-O is 64-bit
  #
  # source://ruby-macho//lib/macho/macho_file.rb#261
  def segments; end

  # The file's raw Mach-O data.
  #
  # @return [String] the raw Mach-O data
  #
  # source://ruby-macho//lib/macho/macho_file.rb#79
  def serialize; end

  # @return [Integer] the size of all load commands, in bytes, in the Mach-O
  #
  # source://forwardable/1.3.3/forwardable.rb#231
  def sizeofcmds(*args, **_arg1, &block); end

  # @return [Hash] a hash representation of this {MachOFile}
  #
  # source://ruby-macho//lib/macho/macho_file.rb#469
  def to_h; end

  # Write all Mach-O data to the given filename.
  #
  # @param filename [String] the file to write to
  # @return [void]
  #
  # source://ruby-macho//lib/macho/macho_file.rb#454
  def write(filename); end

  # Write all Mach-O data to the file used to initialize the instance.
  #
  # @note Overwrites all data in the file!
  # @raise [MachOError] if the instance was initialized without a file
  # @return [void]
  #
  # source://ruby-macho//lib/macho/macho_file.rb#462
  def write!; end

  private

  # Check the file's CPU type/subtype pair.
  #
  # @api private
  # @param cpusubtype [Integer] the CPU subtype
  # @raise [CPUSubtypeError] if the CPU sub-type is unknown
  #
  # source://ruby-macho//lib/macho/macho_file.rb#571
  def check_cpusubtype(cputype, cpusubtype); end

  # Check the file's CPU type.
  #
  # @api private
  # @param cputype [Integer] the CPU type
  # @raise [CPUTypeError] if the CPU type is unknown
  #
  # source://ruby-macho//lib/macho/macho_file.rb#563
  def check_cputype(cputype); end

  # Check the file's type.
  #
  # @api private
  # @param filetype [Integer] the file type
  # @raise [FiletypeError] if the file type is unknown
  #
  # source://ruby-macho//lib/macho/macho_file.rb#580
  def check_filetype(filetype); end

  # Attempt to decompress a Mach-O file from the data specified in a prelinked kernel header.
  #
  # @api private
  # @note This method rewrites the internal state of {MachOFile} to pretend as if it was never
  #   compressed to begin with, allowing all other APIs to transparently act on compressed Mach-Os.
  # @raise [DecompressionError] if decompression is impossible or fails
  # @return [void]
  #
  # source://ruby-macho//lib/macho/macho_file.rb#524
  def decompress_macho_lzvn; end

  # The low file offset (offset to first section data).
  #
  # @api private
  # @return [Integer] the offset
  #
  # source://ruby-macho//lib/macho/macho_file.rb#621
  def low_fileoff; end

  # Read just the file's magic number and check its validity.
  #
  # @api private
  # @raise [MagicError] if the magic is not valid Mach-O magic
  # @raise [FatBinaryError] if the magic is for a Fat file
  # @return [Integer] the magic
  #
  # source://ruby-macho//lib/macho/macho_file.rb#548
  def populate_and_check_magic; end

  # All load commands in the file.
  #
  # @api private
  # @raise [LoadCommandError] if an unknown load command is encountered
  # @return [Array<LoadCommands::LoadCommand>] an array of load commands
  #
  # source://ruby-macho//lib/macho/macho_file.rb#588
  def populate_load_commands; end

  # The file's Mach-O header structure.
  #
  # @api private
  # @raise [TruncatedFileError] if the file is too small to have a valid header
  # @return [Headers::MachHeader] if the Mach-O is 32-bit
  # @return [Headers::MachHeader64] if the Mach-O is 64-bit
  #
  # source://ruby-macho//lib/macho/macho_file.rb#483
  def populate_mach_header; end

  # Read a compressed Mach-O header and check its validity, as well as whether we're able
  # to parse it.
  #
  # @api private
  # @raise [CompressedMachOError] if we weren't asked to perform decompression
  # @raise [DecompressionError] if decompression is impossible or fails
  # @return [void]
  #
  # source://ruby-macho//lib/macho/macho_file.rb#507
  def populate_prelinked_kernel_header; end

  # Updates the number of load commands in the raw data.
  #
  # @api private
  # @param ncmds [Integer] the new number of commands
  # @return [void]
  #
  # source://ruby-macho//lib/macho/macho_file.rb#642
  def update_ncmds(ncmds); end

  # Updates the size of all load commands in the raw data.
  #
  # @api private
  # @param size [Integer] the new size, in bytes
  # @return [void]
  #
  # source://ruby-macho//lib/macho/macho_file.rb#652
  def update_sizeofcmds(size); end

  class << self
    # Creates a new instance from a binary string.
    #
    # @note The `:decompress` option relies on non-default dependencies. Compression
    #   is only used in niche Mach-Os, so leaving this disabled is a reasonable default for
    #   virtually all normal uses.
    # @option opts
    # @option opts
    # @param bin [String] a binary string containing raw Mach-O data
    # @param opts [Hash] options to control the parser with
    # @return [MachOFile] a new MachOFile
    #
    # source://ruby-macho//lib/macho/macho_file.rb#42
    def new_from_bin(bin, **opts); end
  end
end

# A general purpose pseudo-structure. Described in detail in docs/machostructure-dsl.md.
#
# @abstract
#
# source://ruby-macho//lib/macho/structure.rb#6
class MachO::MachOStructure
  # @param args [Array[Value]] list of field parameters
  # @raise [ArgumentError]
  # @return [MachOStructure] a new instance of MachOStructure
  #
  # source://ruby-macho//lib/macho/structure.rb#75
  def initialize(*args); end

  # @return [Hash] a hash representation of this {MachOStructure}.
  #
  # source://ruby-macho//lib/macho/structure.rb#82
  def to_h; end

  class << self
    # source://ruby-macho//lib/macho/structure.rb#108
    def bytesize; end

    # source://ruby-macho//lib/macho/structure.rb#104
    def format; end

    # Returns the value of attribute min_args.
    #
    # source://ruby-macho//lib/macho/structure.rb#92
    def min_args; end

    # @api private
    # @param endianness [Symbol] either `:big` or `:little`
    # @param bin [String] the string to be unpacked into the new structure
    # @return [MachO::MachOStructure] the resulting structure
    #
    # source://ruby-macho//lib/macho/structure.rb#98
    def new_from_bin(endianness, bin); end

    private

    # Generates a reader method for classes that need to be initialized.
    # These classes are defined in the Fields::CLASSES_TO_INIT array.
    #
    # @api private
    # @param name [Symbol] name of internal field
    # @param type [Symbol] type of field in terms of binary size
    # @param idx [Integer] the index of the field value in the @values array
    #
    # source://ruby-macho//lib/macho/structure.rb#196
    def def_class_reader(name, type, idx); end

    # Generates a reader method for fields that have default values.
    #
    # @api private
    # @param name [Symbol] name of internal field
    # @param idx [Integer] the index of the field value in the @values array
    # @param default [Value] the default value
    #
    # source://ruby-macho//lib/macho/structure.rb#255
    def def_default_reader(name, idx, default); end

    # Generates a reader method for fields that need to be bitmasked.
    #
    # @api private
    # @param name [Symbol] name of internal field
    # @param idx [Integer] the index of the field value in the @values array
    # @param mask [Integer] the bitmask
    #
    # source://ruby-macho//lib/macho/structure.rb#227
    def def_mask_reader(name, idx, mask); end

    # Generates an attr_reader like method for a field.
    #
    # @api private
    # @param name [Symbol] name of internal field
    # @param idx [Integer] the index of the field value in the @values array
    #
    # source://ruby-macho//lib/macho/structure.rb#268
    def def_reader(name, idx); end

    # Generates the to_s method based on the named field.
    #
    # @api private
    # @param name [Symbol] name of the field
    #
    # source://ruby-macho//lib/macho/structure.rb#277
    def def_to_s(name); end

    # Generates a reader method for fields that need further unpacking.
    #
    # @api private
    # @param name [Symbol] name of internal field
    # @param idx [Integer] the index of the field value in the @values array
    # @param unpack [String] the format code used for further binary unpacking
    #
    # source://ruby-macho//lib/macho/structure.rb#241
    def def_unpack_reader(name, idx, unpack); end

    # Expected options
    #   :size [Integer] size in bytes
    #   :mask [Integer] bitmask
    #   :unpack [String] string format
    #   :default [Value] default value
    #   :to_s [Boolean] flag for generating #to_s
    #   :endian [Symbol] optionally specify :big or :little endian
    #   :padding [Symbol] optionally specify :null padding
    #
    # @api private
    # @param name [Symbol] name of internal field
    # @param type [Symbol] type of field in terms of binary size
    # @param options [Hash] set of additional options
    # @raise [ArgumentError]
    #
    # source://ruby-macho//lib/macho/structure.rb#144
    def field(name, type, **options); end

    # @api private
    # @param subclass [Class] subclass type
    #
    # source://ruby-macho//lib/macho/structure.rb#116
    def inherited(subclass); end
  end
end

# Constants used for parsing MachOStructure fields
#
# source://ruby-macho//lib/macho/structure.rb#8
module MachO::MachOStructure::Fields; end

# association of field types to byte size
#
# @api private
#
# source://ruby-macho//lib/macho/structure.rb#16
MachO::MachOStructure::Fields::BYTE_SIZE = T.let(T.unsafe(nil), Hash)

# A list of classes that must get initialized
# To add a new class append it here and add the init method to the def_class_reader method
#
# @api private
#
# source://ruby-macho//lib/macho/structure.rb#54
MachO::MachOStructure::Fields::CLASSES_TO_INIT = T.let(T.unsafe(nil), Array)

# association of field types with ruby format codes
# Binary format codes can be found here:
# https://docs.ruby-lang.org/en/2.6.0/String.html#method-i-unpack
#
# The equals sign is used to manually change endianness using
# the Utils#specialize_format() method.
#
# @api private
#
# source://ruby-macho//lib/macho/structure.rb#37
MachO::MachOStructure::Fields::FORMAT_CODE = T.let(T.unsafe(nil), Hash)

# A list of fields that don't require arguments in the initializer
# Used to calculate MachOStructure#min_args
#
# @api private
#
# source://ruby-macho//lib/macho/structure.rb#59
MachO::MachOStructure::Fields::NO_ARG_REQUIRED = T.let(T.unsafe(nil), Array)

# A representation of some unspecified Mach-O data.
#
# source://ruby-macho//lib/macho/view.rb#5
class MachO::MachOView
  # Creates a new MachOView.
  #
  # @param macho_file [MachOFile] the file this view slice is from
  # @param raw_data [String] the raw Mach-O data
  # @param endianness [Symbol] the endianness of the data
  # @param offset [Integer] the offset of the relevant data
  # @return [MachOView] a new instance of MachOView
  #
  # source://ruby-macho//lib/macho/view.rb#23
  def initialize(macho_file, raw_data, endianness, offset); end

  # @return [Symbol] the endianness of the data (`:big` or `:little`)
  #
  # source://ruby-macho//lib/macho/view.rb#13
  def endianness; end

  # source://ruby-macho//lib/macho/view.rb#38
  def inspect; end

  # @return [MachOFile] that this view belongs to
  #
  # source://ruby-macho//lib/macho/view.rb#7
  def macho_file; end

  # @return [Integer] the offset of the relevant data (in {#raw_data})
  #
  # source://ruby-macho//lib/macho/view.rb#16
  def offset; end

  # @return [String] the raw Mach-O data
  #
  # source://ruby-macho//lib/macho/view.rb#10
  def raw_data; end

  # @return [Hash] a hash representation of this {MachOView}.
  #
  # source://ruby-macho//lib/macho/view.rb#31
  def to_h; end
end

# Raised when a file's magic bytes are not valid Mach-O magic.
#
# source://ruby-macho//lib/macho/exceptions.rb#45
class MachO::MagicError < ::MachO::NotAMachOError
  # @param num [Integer] the unknown number
  # @return [MagicError] a new instance of MagicError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#47
  def initialize(magic); end
end

# Raised when a Mach-O file modification fails.
#
# source://ruby-macho//lib/macho/exceptions.rb#9
class MachO::ModificationError < ::MachO::MachOError; end

# Raised when a file is not a Mach-O.
#
# source://ruby-macho//lib/macho/exceptions.rb#34
class MachO::NotAMachOError < ::MachO::MachOError; end

# Raised when a change at an offset is not valid.
#
# source://ruby-macho//lib/macho/exceptions.rb#167
class MachO::OffsetInsertionError < ::MachO::ModificationError
  # @param offset [Integer] the invalid offset
  # @return [OffsetInsertionError] a new instance of OffsetInsertionError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#169
  def initialize(offset); end
end

# Raised when a Mach-O file modification fails but can be recovered when
# operating on multiple Mach-O slices of a fat binary in non-strict mode.
#
# source://ruby-macho//lib/macho/exceptions.rb#19
class MachO::RecoverableModificationError < ::MachO::ModificationError
  # @return [Integer, nil] The index of the Mach-O slice of a fat binary for
  #   which modification failed or `nil` if not a fat binary. This is used to
  #   make the error message more useful.
  #
  # source://ruby-macho//lib/macho/exceptions.rb#23
  def macho_slice; end

  # @return [Integer, nil] The index of the Mach-O slice of a fat binary for
  #   which modification failed or `nil` if not a fat binary. This is used to
  #   make the error message more useful.
  #
  # source://ruby-macho//lib/macho/exceptions.rb#23
  def macho_slice=(_arg0); end

  # @return [String] The exception message.
  #
  # source://ruby-macho//lib/macho/exceptions.rb#26
  def to_s; end
end

# Raised when attempting to add an rpath that already exists.
#
# source://ruby-macho//lib/macho/exceptions.rb#208
class MachO::RpathExistsError < ::MachO::RecoverableModificationError
  # @param path [String] the extant path
  # @return [RpathExistsError] a new instance of RpathExistsError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#210
  def initialize(path); end
end

# Raised when attempting to change an rpath that doesn't exist.
#
# source://ruby-macho//lib/macho/exceptions.rb#200
class MachO::RpathUnknownError < ::MachO::RecoverableModificationError
  # @param path [String] the unknown runtime path
  # @return [RpathUnknownError] a new instance of RpathUnknownError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#202
  def initialize(path); end
end

# Classes and constants for parsing sections in Mach-O binaries.
#
# source://ruby-macho//lib/macho/sections.rb#5
module MachO::Sections; end

# maximum specifiable section alignment, as a power of 2
#
# @note see `MAXSECTALIGN` macro in `cctools/misc/lipo.c`
#
# source://ruby-macho//lib/macho/sections.rb#20
MachO::Sections::MAX_SECT_ALIGN = T.let(T.unsafe(nil), Integer)

# association of section attribute symbols to values
#
# @api private
#
# source://ruby-macho//lib/macho/sections.rb#52
MachO::Sections::SECTION_ATTRIBUTES = T.let(T.unsafe(nil), Hash)

# attributes mask
#
# source://ruby-macho//lib/macho/sections.rb#10
MachO::Sections::SECTION_ATTRIBUTES_MASK = T.let(T.unsafe(nil), Integer)

# system settable attributes mask
#
# source://ruby-macho//lib/macho/sections.rb#16
MachO::Sections::SECTION_ATTRIBUTES_SYS_MASK = T.let(T.unsafe(nil), Integer)

# user settable attributes mask
#
# source://ruby-macho//lib/macho/sections.rb#13
MachO::Sections::SECTION_ATTRIBUTES_USR_MASK = T.let(T.unsafe(nil), Integer)

# association of section flag symbols to values
#
# @api private
#
# source://ruby-macho//lib/macho/sections.rb#67
MachO::Sections::SECTION_FLAGS = T.let(T.unsafe(nil), Hash)

# association of section name symbols to names
#
# @api private
#
# source://ruby-macho//lib/macho/sections.rb#74
MachO::Sections::SECTION_NAMES = T.let(T.unsafe(nil), Hash)

# association of section type symbols to values
#
# @api private
#
# source://ruby-macho//lib/macho/sections.rb#24
MachO::Sections::SECTION_TYPES = T.let(T.unsafe(nil), Hash)

# type mask
#
# source://ruby-macho//lib/macho/sections.rb#7
MachO::Sections::SECTION_TYPE_MASK = T.let(T.unsafe(nil), Integer)

# Represents a section of a segment for 32-bit architectures.
#
# source://ruby-macho//lib/macho/sections.rb#90
class MachO::Sections::Section < ::MachO::MachOStructure
  # @return [Integer] the memory address of the section
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def addr; end

  # @return [Integer] the section alignment (power of 2) of the section
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def align; end

  # @example
  #   puts "pure instructions" if sect.attribute?(:S_ATTR_PURE_INSTRUCTIONS)
  # @param attr_sym [Symbol] a section attribute symbol
  # @return [Boolean] whether this section is of the given type
  #
  # source://ruby-macho//lib/macho/sections.rb#162
  def attribute?(attr_sym); end

  # @return [Integer] the raw numeric attributes of this section
  #
  # source://ruby-macho//lib/macho/sections.rb#154
  def attributes; end

  # @return [Boolean] whether the section is empty (i.e, {size} is 0)
  #
  # source://ruby-macho//lib/macho/sections.rb#136
  def empty?; end

  # @deprecated Use {#type?} or {#attribute?} instead.
  # @example
  #   puts "this section is regular" if sect.flag?(:S_REGULAR)
  # @param flag [Symbol] a section flag symbol
  # @return [Boolean] whether the flag is present in the section's {flags}
  #
  # source://ruby-macho//lib/macho/sections.rb#171
  def flag?(flag); end

  # @return [Integer] flags for type and attributes of the section
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def flags; end

  # @return [Integer] the number of relocation entries
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def nreloc; end

  # @return [Integer] the file offset of the section
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def offset; end

  # @return [Integer] the file offset of the section's relocation entries
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def reloff; end

  # @return [void] reserved (for offset or index)
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def reserved1; end

  # @return [void] reserved (for count or sizeof)
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def reserved2; end

  # @return [String] the section's name
  #
  # source://ruby-macho//lib/macho/sections.rb#126
  def section_name; end

  # @return [String] the name of the section, including null pad bytes
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def sectname; end

  # @return [String] the parent segment's name
  #
  # source://ruby-macho//lib/macho/sections.rb#131
  def segment_name; end

  # @return [String] the name of the segment's section, including null
  #   pad bytes
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def segname; end

  # @return [Integer] the size, in bytes, of the section
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def size; end

  # @return [Hash] a hash representation of this {Section}
  #
  # source://ruby-macho//lib/macho/sections.rb#180
  def to_h; end

  # @return [Integer] the raw numeric type of this section
  #
  # source://ruby-macho//lib/macho/sections.rb#141
  def type; end

  # @example
  #   puts "this section is regular" if sect.type?(:S_REGULAR)
  # @param type_sym [Symbol] a section type symbol
  # @return [Boolean] whether this section is of the given type
  #
  # source://ruby-macho//lib/macho/sections.rb#149
  def type?(type_sym); end
end

# Represents a section of a segment for 64-bit architectures.
#
# source://ruby-macho//lib/macho/sections.rb#198
class MachO::Sections::Section64 < ::MachO::Sections::Section
  # @return [Integer] the memory address of the section
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def addr; end

  # @return [void] reserved
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def reserved3; end

  # @return [Integer] the size, in bytes, of the section
  #
  # source://ruby-macho//lib/macho/structure.rb#269
  def size; end

  # @return [Hash] a hash representation of this {Section64}
  #
  # source://ruby-macho//lib/macho/sections.rb#209
  def to_h; end
end

# A collection of convenient methods for common operations on Mach-O and Fat
# binaries.
#
# source://ruby-macho//lib/macho/tools.rb#6
module MachO::Tools
  class << self
    # Add a runtime path to a Mach-O or Fat binary, overwriting the source file.
    #
    # @option options
    # @param filename [String] the Mach-O or Fat binary being modified
    # @param new_path [String] the new runtime path
    # @param options [Hash]
    # @return [void]
    #
    # source://ruby-macho//lib/macho/tools.rb#71
    def add_rpath(filename, new_path, options = T.unsafe(nil)); end

    # Changes the dylib ID of a Mach-O or Fat binary, overwriting the source
    #  file.
    #
    # @option options
    # @param filename [String] the Mach-O or Fat binary being modified
    # @param new_id [String] the new dylib ID for the binary
    # @param options [Hash]
    # @return [void]
    #
    # source://ruby-macho//lib/macho/tools.rb#23
    def change_dylib_id(filename, new_id, options = T.unsafe(nil)); end

    # Changes a shared library install name in a Mach-O or Fat binary,
    #  overwriting the source file.
    #
    # @option options
    # @param filename [String] the Mach-O or Fat binary being modified
    # @param old_name [String] the old shared library name
    # @param new_name [String] the new shared library name
    # @param options [Hash]
    # @return [void]
    #
    # source://ruby-macho//lib/macho/tools.rb#39
    def change_install_name(filename, old_name, new_name, options = T.unsafe(nil)); end

    # Changes a runtime path in a Mach-O or Fat binary, overwriting the source
    #  file.
    #
    # @option options
    # @option options
    # @param filename [String] the Mach-O or Fat binary being modified
    # @param old_path [String] the old runtime path
    # @param new_path [String] the new runtime path
    # @param options [Hash]
    # @return [void]
    #
    # source://ruby-macho//lib/macho/tools.rb#57
    def change_rpath(filename, old_path, new_path, options = T.unsafe(nil)); end

    # Delete a runtime path from a Mach-O or Fat binary, overwriting the source
    #  file.
    #
    # @option options
    # @option options
    # @param filename [String] the Mach-O or Fat binary being modified
    # @param old_path [String] the old runtime path
    # @param options [Hash]
    # @return [void]
    #
    # source://ruby-macho//lib/macho/tools.rb#88
    def delete_rpath(filename, old_path, options = T.unsafe(nil)); end

    # @param filename [String] the Mach-O or Fat binary being read
    # @return [Array<String>] an array of all dylibs linked to the binary
    #
    # source://ruby-macho//lib/macho/tools.rb#9
    def dylibs(filename); end

    # Merge multiple Mach-Os into one universal (Fat) binary.
    #
    # @param filename [String] the fat binary to create
    # @param files [Array<String>] the files to merge
    # @param fat64 [Boolean] whether to use {Headers::FatArch64}s to represent each slice
    # @return [void]
    #
    # source://ruby-macho//lib/macho/tools.rb#100
    def merge_machos(filename, *files, fat64: T.unsafe(nil)); end
  end
end

# Raised when a file is too short to be a valid Mach-O file.
#
# source://ruby-macho//lib/macho/exceptions.rb#38
class MachO::TruncatedFileError < ::MachO::NotAMachOError
  # @return [TruncatedFileError] a new instance of TruncatedFileError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#39
  def initialize; end
end

# Raised whenever unfinished code is called.
#
# source://ruby-macho//lib/macho/exceptions.rb#216
class MachO::UnimplementedError < ::MachO::MachOError
  # @param thing [String] the thing that is unimplemented
  # @return [UnimplementedError] a new instance of UnimplementedError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#218
  def initialize(thing); end
end

# A collection of utility functions used throughout ruby-macho.
#
# source://ruby-macho//lib/macho/utils.rb#5
module MachO::Utils
  class << self
    # Compares the given number to valid big-endian magic numbers.
    #
    # @param num [Integer] the number being checked
    # @return [Boolean] whether `num` is a valid big-endian magic number
    #
    # source://ruby-macho//lib/macho/utils.rb#121
    def big_magic?(num); end

    # Compares the given number to the known magic number for a compressed Mach-O slice.
    #
    # @param num [Integer] the number being checked
    # @return [Boolean] whether `num` is a valid compressed header magic number
    #
    # source://ruby-macho//lib/macho/utils.rb#128
    def compressed_magic?(num); end

    # Compares the given number to valid 32-bit Fat magic numbers.
    #
    # @param num [Integer] the number being checked
    # @return [Boolean] whether `num` is a valid 32-bit fat magic number
    #
    # source://ruby-macho//lib/macho/utils.rb#86
    def fat_magic32?(num); end

    # Compares the given number to valid 64-bit Fat magic numbers.
    #
    # @param num [Integer] the number being checked
    # @return [Boolean] whether `num` is a valid 64-bit fat magic number
    #
    # source://ruby-macho//lib/macho/utils.rb#93
    def fat_magic64?(num); end

    # Compares the given number to valid Fat magic numbers.
    #
    # @param num [Integer] the number being checked
    # @return [Boolean] whether `num` is a valid Fat magic number
    #
    # source://ruby-macho//lib/macho/utils.rb#79
    def fat_magic?(num); end

    # Compares the given number to valid little-endian magic numbers.
    #
    # @param num [Integer] the number being checked
    # @return [Boolean] whether `num` is a valid little-endian magic number
    #
    # source://ruby-macho//lib/macho/utils.rb#114
    def little_magic?(num); end

    # Compares the given number to valid 32-bit Mach-O magic numbers.
    #
    # @param num [Integer] the number being checked
    # @return [Boolean] whether `num` is a valid 32-bit magic number
    #
    # source://ruby-macho//lib/macho/utils.rb#100
    def magic32?(num); end

    # Compares the given number to valid 64-bit Mach-O magic numbers.
    #
    # @param num [Integer] the number being checked
    # @return [Boolean] whether `num` is a valid 64-bit magic number
    #
    # source://ruby-macho//lib/macho/utils.rb#107
    def magic64?(num); end

    # Compares the given number to valid Mach-O magic numbers.
    #
    # @param num [Integer] the number being checked
    # @return [Boolean] whether `num` is a valid Mach-O magic number
    #
    # source://ruby-macho//lib/macho/utils.rb#72
    def magic?(num); end

    # Returns a string of null bytes of the requested (non-negative) size
    #
    # @param size [Integer] the size of the nullpad
    # @raise [ArgumentError] if a non-positive nullpad is requested
    # @return [String] the null string (or empty string, for `size = 0`)
    #
    # source://ruby-macho//lib/macho/utils.rb#31
    def nullpad(size); end

    # Packs tagged strings into an aligned payload.
    #
    # @param fixed_offset [Integer] the baseline offset for the first packed
    #   string
    # @param alignment [Integer] the alignment value to use for packing
    # @param strings [Hash] the labeled strings to pack
    # @return [Array<String, Hash>] the packed string and labeled offsets
    #
    # source://ruby-macho//lib/macho/utils.rb#53
    def pack_strings(fixed_offset, alignment, strings = T.unsafe(nil)); end

    # Returns the number of bytes needed to pad the given size to the given
    #  alignment.
    #
    # @param size [Integer] the unpadded size
    # @param alignment [Integer] the number to alignment the size with
    # @return [Integer] the number of pad bytes required
    #
    # source://ruby-macho//lib/macho/utils.rb#23
    def padding_for(size, alignment); end

    # Rounds a value to the next multiple of the given round.
    #
    # @param value [Integer] the number being rounded
    # @param round [Integer] the number being rounded with
    # @return [Integer] the rounded value
    # @see http://www.opensource.apple.com/source/cctools/cctools-870/libstuff/rnd.c
    #
    # source://ruby-macho//lib/macho/utils.rb#11
    def round(value, round); end

    # Converts an abstract (native-endian) String#unpack format to big or
    #  little.
    #
    # @param format [String] the format string being converted
    # @param endianness [Symbol] either `:big` or `:little`
    # @return [String] the converted string
    #
    # source://ruby-macho//lib/macho/utils.rb#42
    def specialize_format(format, endianness); end
  end
end

# release version
#
# source://ruby-macho//lib/macho.rb#19
MachO::VERSION = T.let(T.unsafe(nil), String)

# Raised when a a fat Mach-O file has zero architectures
#
# source://ruby-macho//lib/macho/exceptions.rb#60
class MachO::ZeroArchitectureError < ::MachO::NotAMachOError
  # @return [ZeroArchitectureError] a new instance of ZeroArchitectureError
  #
  # source://ruby-macho//lib/macho/exceptions.rb#61
  def initialize; end
end
