{
  "librawVersion": "0.22.2",
  "naming": "camelCase",
  "notes": "Public C++ APIs are mirrored when their ownership and lifetime can be represented safely in JavaScript. Callback registrations become events and native memory becomes owned Buffer copies.",
  "operations": [
    { "upstreamName": "imgdata", "jsName": "getImgData", "signature": "() => Promise<LibRawImageDataSnapshot>", "status": "supported" },
    { "upstreamName": "LibRaw", "jsName": "constructor", "signature": "({ flags?: number }) => LibRaw", "status": "supported" },
    { "upstreamName": "output_params_ptr", "jsName": null, "signature": "libraw_output_params_t*", "status": "excluded", "reason": "A mutable native pointer cannot be exposed safely to JavaScript; use getOutputParams and setOutputParams." },
    { "upstreamName": "open_file", "jsName": "openFile", "signature": "(path, options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "open_buffer", "jsName": "openBuffer", "signature": "(input, options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "open_datastream", "jsName": null, "signature": "(LibRaw_abstract_datastream*) => int", "status": "excluded", "reason": "The API requires a native virtual pointer and caller-managed lifetime that JavaScript cannot represent safely." },
    { "upstreamName": "open_bayer", "jsName": "openBayer", "signature": "(input, descriptor, options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "error_count", "jsName": "errorCount", "signature": "() => Promise<number>", "status": "supported" },
    { "upstreamName": "recycle_datastream", "jsName": "recycleDatastream", "signature": "() => Promise<void>", "status": "supported" },
    { "upstreamName": "unpack", "jsName": "unpack", "signature": "(options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "unpack_thumb", "jsName": "unpackThumb", "signature": "(options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "unpack_thumb_ex", "jsName": "unpackThumbEx", "signature": "(index, options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "thumbOK", "jsName": "thumbOk", "signature": "(maxSize?) => Promise<number>", "status": "supported" },
    { "upstreamName": "adjust_sizes_info_only", "jsName": "adjustSizesInfoOnly", "signature": "(options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "subtract_black", "jsName": "subtractBlack", "signature": "(options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "subtract_black_internal", "jsName": "subtractBlackInternal", "signature": "(options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "raw2image", "jsName": "raw2Image", "signature": "(options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "raw2image_ex", "jsName": "raw2ImageEx", "signature": "(subtractBlack, options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "raw2image_start", "jsName": "raw2ImageStart", "signature": "(options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "free_image", "jsName": "freeImage", "signature": "() => Promise<void>", "status": "supported" },
    { "upstreamName": "adjust_maximum", "jsName": "adjustMaximum", "signature": "(options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "adjust_to_raw_inset_crop", "jsName": "adjustToRawInsetCrop", "signature": "(mask, maxCrop?, options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "set_exifparser_handler", "jsName": "exifTag", "signature": "Event<ExifTagEvent>", "status": "supported" },
    { "upstreamName": "set_makernotes_handler", "jsName": "makerNote", "signature": "Event<MakerNoteEvent>", "status": "supported" },
    { "upstreamName": "set_dataerror_handler", "jsName": "dataError", "signature": "Event<DataErrorEvent>", "status": "supported" },
    { "upstreamName": "set_progress_handler", "jsName": "progress", "signature": "Event<ProgressEvent>", "status": "supported" },
    { "upstreamName": "cameramakeridx2maker", "jsName": "cameraMakerIndexToMaker", "signature": "(index) => string | null", "status": "supported" },
    { "upstreamName": "setMakeFromIndex", "jsName": "setMakeFromIndex", "signature": "(index, options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "convertFloatToInt", "jsName": "convertFloatToInt", "signature": "(min?, max?, target?, options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "simplify_make_model", "jsName": "simplifyMakeModel", "signature": "(makerIndex, make, model) => SimplifiedCameraName", "status": "supported" },
    { "upstreamName": "capabilities", "jsName": "capabilities", "signature": "() => number", "status": "supported" },
    { "upstreamName": "version", "jsName": "version", "signature": "() => string", "status": "supported" },
    { "upstreamName": "versionNumber", "jsName": "versionNumber", "signature": "() => number", "status": "supported" },
    { "upstreamName": "cameraList", "jsName": "cameraList", "signature": "() => readonly string[]", "status": "supported" },
    { "upstreamName": "cameraCount", "jsName": "cameraCount", "signature": "() => number", "status": "supported" },
    { "upstreamName": "strprogress", "jsName": "strProgress", "signature": "(progress) => string", "status": "supported" },
    { "upstreamName": "strerror", "jsName": "strError", "signature": "(code) => string", "status": "supported" },
    { "upstreamName": "dcraw_ppm_tiff_writer", "jsName": "dcrawPpmTiffWriter", "signature": "(path, options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "dcraw_thumb_writer", "jsName": "dcrawThumbWriter", "signature": "(path, options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "dcraw_process", "jsName": "dcrawProcess", "signature": "(options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "is_fuji_rotated", "jsName": "isFujiRotated", "signature": "() => Promise<boolean>", "status": "supported" },
    { "upstreamName": "is_sraw", "jsName": "isSraw", "signature": "() => Promise<boolean>", "status": "supported" },
    { "upstreamName": "sraw_midpoint", "jsName": "srawMidpoint", "signature": "() => Promise<number>", "status": "supported" },
    { "upstreamName": "is_nikon_sraw", "jsName": "isNikonSraw", "signature": "() => Promise<boolean>", "status": "supported" },
    { "upstreamName": "is_coolscan_nef", "jsName": "isCoolscanNef", "signature": "() => Promise<boolean>", "status": "supported" },
    { "upstreamName": "is_jpeg_thumb", "jsName": "isJpegThumb", "signature": "() => Promise<boolean>", "status": "supported" },
    { "upstreamName": "is_floating_point", "jsName": "isFloatingPoint", "signature": "() => Promise<boolean>", "status": "supported" },
    { "upstreamName": "have_fpdata", "jsName": "haveFpData", "signature": "() => Promise<boolean>", "status": "supported" },
    { "upstreamName": "dcraw_make_mem_image", "jsName": "dcrawMakeMemImage", "signature": "(options?) => Promise<ProcessedImage>", "status": "supported" },
    { "upstreamName": "dcraw_make_mem_thumb", "jsName": "dcrawMakeMemThumb", "signature": "(options?) => Promise<ProcessedImage>", "status": "supported" },
    { "upstreamName": "dcraw_clear_mem", "jsName": null, "signature": "(libraw_processed_image_t*) => void", "status": "excluded", "reason": "Returned native pointers are copied and released before JavaScript receives a Buffer, so exposing this pointer-lifetime API would be unsafe." },
    { "upstreamName": "get_mem_image_format", "jsName": "getMemImageFormat", "signature": "() => Promise<MemoryImageFormat>", "status": "supported" },
    { "upstreamName": "copy_mem_image", "jsName": "copyMemImage", "signature": "(destination, stride, bgr?, options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "recycle", "jsName": "recycle", "signature": "() => Promise<void>", "status": "supported" },
    { "upstreamName": "~LibRaw", "jsName": "close", "signature": "() => Promise<void>", "status": "supported" },
    { "upstreamName": "COLOR", "jsName": "colorAt", "signature": "(row, column) => Promise<number>", "status": "supported" },
    { "upstreamName": "FC", "jsName": "filterColorAt", "signature": "(row, column) => Promise<number>", "status": "supported" },
    { "upstreamName": "fcol", "jsName": "fcol", "signature": "(row, column) => Promise<number>", "status": "supported" },
    { "upstreamName": "unpack_function_name", "jsName": "unpackFunctionName", "signature": "() => Promise<string>", "status": "supported" },
    { "upstreamName": "get_decoder_info", "jsName": "getDecoderInfo", "signature": "() => Promise<DecoderInfo>", "status": "supported" },
    { "upstreamName": "get_internal_data_pointer", "jsName": null, "signature": "() => libraw_internal_data_t*", "status": "excluded", "reason": "Internal native pointers and their lifetime cannot be represented safely in JavaScript." },
    { "upstreamName": "powf_lim", "jsName": "powfLimited", "signature": "(base, exponent, limit) => number", "status": "supported" },
    { "upstreamName": "libraw_powf64l", "jsName": "powf64Limited", "signature": "(base, exponent) => number", "status": "supported" },
    { "upstreamName": "sgetn", "jsName": "readBigEndianUnsigned", "signature": "(length, input) => number", "status": "supported" },
    { "upstreamName": "phase_one_subtract_black", "jsName": "phaseOneSubtractBlack", "signature": "(source, options?) => Promise<Buffer>", "status": "supported" },
    { "upstreamName": "phase_one_correct", "jsName": "phaseOneCorrect", "signature": "(options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "set_rawspeed_camerafile", "jsName": null, "signature": "(path) => int", "status": "excluded", "reason": "RawSpeed is disabled in the stable v1 build profile, so the upstream method compiles to a no-op and cannot be represented as a meaningful SDK operation." },
    { "upstreamName": "setCancelFlag", "jsName": "setCancelFlag", "signature": "() => void", "status": "supported" },
    { "upstreamName": "clearCancelFlag", "jsName": "clearCancelFlag", "signature": "() => void", "status": "supported" },
    { "upstreamName": "adobe_coeff", "jsName": "adobeCoeff", "signature": "(makerIndex, model, internalOnly?, options?) => Promise<void>", "status": "supported" },
    { "upstreamName": "set_dng_host", "jsName": null, "signature": "(void*) => void", "status": "excluded", "reason": "The API accepts an untyped native pointer whose lifetime cannot be represented safely in JavaScript." }
  ]
}
