{
  "enums": {
    "attr": {
      "JsName": "STATES",
      "isMask": false
    },
    "branch": {
      "JsName": "BRANCH",
      "isMask": false
    },
    "cert": {
      "JsName": "TYPE",
      "isMask": false
    },
    "clone_local": {
      "isMask": false,
      "values": {
        "GIT_CLONE_LOCAL": {
          "JsName": "LOCAL"
        }
      }
    },
    "describe_strategy": {
      "ignore": true
    },
    "delta": {
      "owner": "Diff"
    },
    "error": {
      "JsName": "ERROR",
      "isMask": false
    },
    "error_code": {
      "values": {
        "GIT_ERROR": {
          "JsName": "ERROR"
        }
      }
    },
    "filemode": {
      "owner": "TreeEntry",
      "values": {
        "GIT_FILEMODE_BLOB_EXECUTABLE": {
          "JsName": "EXECUTABLE"
        }
      }
    },
    "repository_init_flag": {
      "removeString": "INIT_"
    },
    "otype": {
      "JsName": "TYPE",
      "owner": "Object",
      "removeString": "OBJ_"
    },
    "ref": {
      "owner": "Reference",
      "JsName": "TYPE"
    },
    "reset": {
      "JsName": "TYPE",
      "isMask": false
    },
    "sort": {
      "owner": "Revwalk"
    },
    "status": {
      "JsName": "STATUS",
      "isMask": false
    }
  },
  "types":
  {
    "annotated_commit": {
      "functions": {
        "git_annotated_commit_id": {
          "return": {
            "ownedByThis": true
          }
        }
      }
    },
    "attr": {
      "functions": {
        "git_attr_foreach": {
          "ignore": true
        },
        "git_attr_get": {
          "isAsync": true,
          "args": {
            "value_out": {
              "isReturn": true
            }
          }
        },
        "git_attr_get_many": {
          "args": {
            "values_out": {
              "isReturn": true,
              "jsClassName": "Array"
            }
          }
        }
      }
    },
    "blame": {
      "cType": "git_blame",
      "functions": {
        "git_blame_file": {
          "args": {
            "options": {
              "isOptional": true
            }
          }
        }
      }
    },
    "blame_hunk": {
      "fields": {
        "boundary": {
          "ignore": true
        }
      }
    },
    "blob": {
      "selfFreeing": true,
      "functions": {
        "git_blob_create_frombuffer": {
          "isAsync": false,
          "args": {
            "id": {
              "isReturn": true
            },
            "buffer": {
              "cppClassName": "Buffer",
              "jsClassName": "Buffer"
            }
          }
        },
        "git_blob_create_fromchunks": {
          "ignore": true
        },
        "git_blob_filtered_content": {
          "ignore": true
        },
        "git_blob_id": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_blob_rawcontent": {
          "return": {
            "cppClassName": "Wrapper",
            "jsClassName": "Buffer"
          }
        }
      },
      "dependencies": [
        "../include/wrapper.h",
        "node_buffer.h"
      ]
    },
    "branch": {
      "functions": {
        "git_branch_iterator_free": {
          "ignore": true
        },
        "git_branch_create": {
          "args": {
            "force": {
              "isOptional": true
            },
            "signature": {
              "isOptional": true
            },
            "log_message": {
              "isOptional": true
            }
          }
        },
        "git_branch_create_from_annotated": {
          "args": {
            "ref_out": {
              "isReturn": true
            },
            "repository": {},
            "branch_name": {},
            "commit": {},
            "force": {
              "isOptional": true
            }
          }
        },
        "git_branch_next": {
          "ignore": true
        },
        "git_branch_set_upstream": {
          "isAsync": true,
          "args": {
            "upstream_name": {
              "isOptional": true
            }
          },
          "return" : {
            "isReturn": true,
            "isErrorCode": true
          }
        },
        "git_branch_upstream": {
          "isAsync": true,
          "return" : {
            "isReturn": true,
            "isErrorCode": true
          }
        }
      }
    },
    "buf": {
      "functions": {
        "git_buf_grow": {
          "cppFunctionName": "Grow",
          "jsFunctionName": "grow",
          "args": {
            "buffer": {
              "isReturn": true,
              "isSelf": false,
              "shouldAlloc": true
            }
          },
          "return": {
            "cppClassName": "Number",
            "jsClassName": "Number",
            "isErrorCode": true
          },
          "isAsync": true
        },
        "git_buf_set": {
          "cppFunctionName": "Set",
          "jsFunctionName": "set",
          "args": {
            "buffer": {
              "isReturn": true,
              "isSelf": false,
              "shouldAlloc": true
            },
            "data": {
              "cppClassName": "Buffer",
              "jsClassName": "Buffer"
            }
          },
          "return": {
            "cppClassName": "Number",
            "jsClassName": "Number",
            "isErrorCode": true
          },
          "isAsync": true
        }
      },
      "dependencies": [
        "../include/git_buf_converter.h"
      ]
    },
    "cert_hostkey": {
      "fields": {
        "hash_md5": {
          "cppClassName": "String",
          "size": 16
        },
        "hash_sha1": {
          "cppClassName": "String",
          "size": 20
        }
      }
    },
    "cert_x509": {
      "fields": {
        "data": {
          "cppClassName": "Wrapper",
          "jsClassName": "Buffer"
        }
      },
      "dependencies": [
        "../include/wrapper.h",
        "node_buffer.h"
      ]
    },
    "checkout": {
      "functions": {
        "git_checkout_head": {
          "args": {
            "opts": {
              "isOptional": true
            }
          },
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_checkout_index": {
          "args": {
            "opts": {
              "isOptional": true
            }
          },
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_checkout_tree": {
          "args": {
            "treeish": {
              "isOptional": true
            },
            "opts": {
              "isOptional": true
            }
          },
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        }
      }
    },
    "cherrypick": {
      "functions": {
        "git_cherrypick": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        }
      }
    },
    "clone": {
      "functions": {
        "git_clone": {
          "args": {
            "options": {
              "isOptional": true
            }
          }
        }
      }
    },
    "clone_options": {
      "fields": {
        "repository_cb": {
          "ignore": true
        },
        "repository_cb_payload": {
          "ignore": true
        },
        "remote_cb": {
          "ignore": true
        },
        "remote_cb_payload": {
          "ignore": true
        }
      }
    },
    "commit": {
      "selfFreeing": true,
      "functions": {
        "git_commit_amend": {
          "args": {
            "author": {
              "isOptional": true
            },
            "committer": {
              "isOptional": true
            },
            "id": {
              "isReturn": true
            },
            "message_encoding": {
              "isOptional": true
            },
            "message": {
              "isOptional": true
            },
            "tree": {
              "isOptional": true
            },
            "update_ref": {
              "isOptional": true
            }
          }
        },
        "git_commit_author": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_commit_committer": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_commit_create": {
          "args": {
            "id": {
              "isReturn": true
            },
            "message_encoding": {
              "isOptional": true
            },
            "parents": {
              "cType": "const git_commit **",
              "cppClassName": "Array",
              "jsClassName": "Array",
              "arrayElementCppClassName": "GitCommit"
            },
            "update_ref": {
              "isOptional": true
            }
          },
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_commit_create_from_callback": {
          "ignore": true
        },
        "git_commit_create_from_ids": {
          "ignore": true
        },
        "git_commit_create_from_v": {
          "ignore": true
        },
        "git_commit_extract_signature": {
          "ignore": true
        },
        "git_commit_id": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_commit_parent_id": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_commit_tree_id": {
          "return": {
            "ownedByThis": true
          }
        }
      }
    },
    "config": {
      "functions": {
        "git_config_add_backend": {
          "ignore": true
        },
        "git_config_add_file_ondisk": {
          "ignore": true
        },
        "git_config_backend_foreach_match": {
          "ignore": true
        },
        "git_config_delete_entry": {
          "ignore": true
        },
        "git_config_delete_multivar": {
          "ignore": true
        },
        "git_config_entry_free": {
          "ignore": true
        },
        "git_config_find_global": {
          "ignore": true
        },
        "git_config_find_system": {
          "ignore": true
        },
        "git_config_find_xdg": {
          "ignore": true
        },
        "git_config_foreach": {
          "ignore": true
        },
        "git_config_foreach_match": {
          "ignore": true
        },
        "git_config_free": {
          "ignore": true
        },
        "git_config_get_bool": {
          "ignore": true
        },
        "git_config_get_entry": {
          "ignore": true
        },
        "git_config_get_int32": {
          "ignore": true
        },
        "git_config_get_int64": {
          "ignore": true
        },
        "git_config_get_mapped": {
          "ignore": true
        },
        "git_config_get_multivar_foreach": {
          "ignore": true
        },
        "git_config_get_string": {
          "ignore": true
        },
        "git_config_get_string_buf": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_config_get_path": {
          "ignore": true
        },
        "git_config_iterator_free": {
          "ignore": true
        },
        "git_config_iterator_glob_new": {
          "ignore": true
        },
        "git_config_iterator_new": {
          "ignore": true
        },
        "git_config_init_backend": {
          "ignore": true
        },
        "git_config_lookup_map_value": {
          "ignore": true
        },
        "git_config_multivar_iterator_new": {
          "ignore": true
        },
        "git_config_new": {
          "ignore": true
        },
        "git_config_next": {
          "ignore": true
        },
        "git_config_open_default": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_config_open_global": {
          "ignore": true
        },
        "git_config_open_level": {
          "ignore": true
        },
        "git_config_open_ondisk": {
          "ignore": true
        },
        "git_config_parse_bool": {
          "ignore": true
        },
        "git_config_parse_int32": {
          "ignore": true
        },
        "git_config_parse_int64": {
          "ignore": true
        },
        "git_config_parse_path": {
          "ignore": true
        },
        "git_config_refresh": {
          "ignore": true
        },
        "git_config_set_bool": {
          "ignore": true
        },
        "git_config_set_int32": {
          "ignore": true
        },
        "git_config_set_string": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        }
      },
      "dependencies": [
        "../include/git_buf_converter.h"
      ]
    },
    "config_backend": {
      "ignore": true
    },
    "config_iterator": {
      "ignore": true
    },
    "cred": {
      "cType": "git_cred",
      "functions": {
        "git_cred_default_new": {
          "isAsync": false
        },
        "git_cred_ssh_custom_new": {
          "ignore": true
        },
        "git_cred_ssh_interactive_new": {
          "ignore": true
        },
        "git_cred_ssh_key_from_agent": {
          "isAsync": false
        },
        "git_cred_ssh_key_new": {
          "isAsync": false
        },
        "git_cred_userpass": {
          "ignore": true
        },
        "git_cred_userpass_plaintext_new": {
          "isAsync": false
        }
      }
    },
    "cred_ssh_custom": {
      "ignore": true
    },
    "cred_ssh_interactive": {
      "ignore": true
    },
    "cred_ssh_key": {
      "ignore": true
    },
    "cred_username": {
      "fields": {
        "username": {
          "cppClassName": "String",
          "cType": "char *"
        }
      }
    },
    "cred_userpass_payload": {
      "cDependencies": [
        "git2/cred_helpers.h"
      ]
    },
    "cred_userpass_plaintext": {
      "ignore": true
    },
    "describe": {
      "ignore": true
    },
    "diff": {
      "cDependencies": [
        "git2/sys/diff.h"
      ],
      "functions": {
        "git_diff_blob_to_buffer": {
          "args": {
            "old_blob" : {
              "isOptional": true
            },
            "old_as_path" : {
              "isOptional": true
            },
            "buffer" : {
              "isOptional": true
            },
            "buffer_len" : {
              "isOptional": true
            },
            "buffer_as_path" : {
              "isOptional": true
            },
            "options" : {
              "isOptional": true
            },
            "file_cb" : {
              "isOptional": true
            },
            "binary_cb": {
              "isOptional": true
            },
            "hunk_cb" : {
              "isOptional": true
            },
            "line_cb" : {
              "isOptional": true
            }
          },
          "return": {
            "isErrorCode": true
          },
         "isAsync": true
        },
        "git_diff_blobs": {
          "ignore": true
        },
        "git_diff_buffers": {
          "ignore": true
        },
        "git_diff_commit_as_email": {
          "ignore": true
        },
        "git_diff_find_init_options": {
          "ignore": true
        },
        "git_diff_find_similar": {
          "args": {
            "diff": {
              "isSelf": true
            },
            "options": {
              "isOptional": true
            }
          },
          "return": {
            "cppClassName": "Number",
            "jsClassName": "Number",
            "isErrorCode": true
          },
          "isAsync": true
        },
        "git_diff_foreach": {
          "ignore": true
        },
        "git_diff_format_email": {
          "ignore": true
        },
        "git_diff_format_email_init_options": {
          "ignore": true
        },
        "git_diff_free": {
          "ignore": true
        },
        "git_diff_get_stats": {
          "ignore": true
        },
        "git_diff_index_to_workdir": {
          "args": {
            "index": {
              "isOptional": true
            },
            "opts": {
              "isOptional": true
            }
          }
        },
        "git_diff_init_options": {
          "ignore": true
        },
        "git_diff_is_sorted_icase": {
          "ignore": true
        },
        "git_diff_merge": {
          "isAsync": true,
          "args": {
            "onto": {
              "isSelf": true
            }
          },
          "return": {
            "isErrorCode": true
          }
        },
        "git_diff_num_deltas_of_type": {
          "ignore": true
        },
        "git_diff_print": {
          "ignore": true
        },
        "git_diff_print_callback__to_buf": {
          "ignore": true
        },
        "git_diff_print_callback__to_file_handle": {
          "ignore": true
        },
        "git_diff_stats_deletions": {
          "ignore": true
        },
        "git_diff_stats_files_changed": {
          "ignore": true
        },
        "git_diff_stats_free": {
          "ignore": true
        },
        "git_diff_stats_insertions": {
          "ignore": true
        },
        "git_diff_stats_to_buf": {
          "ignore": true
        },
        "git_diff_status_char": {
          "ignore": true
        },
        "git_diff_tree_to_index": {
          "args": {
            "old_tree": {
              "isOptional": true
            },
            "index": {
              "isOptional": true
            },
            "opts": {
              "isOptional": true
            }
          }
        },
        "git_diff_tree_to_tree": {
          "args": {
            "old_tree": {
              "isOptional": true
            },
            "new_tree": {
              "isOptional": true
            },
            "opts": {
              "isOptional": true
            }
          }
        },
        "git_diff_tree_to_workdir": {
          "args": {
            "old_tree": {
              "isOptional": true
            },
            "opts": {
              "isOptional": true
            }
          }
        },
        "git_diff_tree_to_workdir_with_index": {
          "args": {
            "old_tree": {
              "isOptional": true
            },
            "opts": {
              "isOptional": true
            }
          }
        }
      }
    },
    "diff_find_options": {
      "hasConstructor": true,
      "fields": {
        "git_diff_similarity_metric": {
          "ignore": true
        }
      }
    },
    "diff_format_email_options": {
      "ignore": true
    },
    "diff_perfdata": {
      "cDependencies": [
        "git2/sys/diff.h"
      ]
    },
    "diff_similarity_metric": {
      "ignore": true
    },
    "error_code": {
      "values": {
        "GIT_ERROR": {
          "JsName": "ERROR"
        }
      }
    },
    "filter": {
      "functions": {
        "git_filter_list_apply_to_blob": {
          "ignore": true
        },
        "git_filter_list_apply_to_data": {
          "ignore": true
        },
        "git_filter_list_apply_to_file": {
          "ignore": true
        },
        "git_filter_list_free": {
          "ignore": true
        },
        "git_filter_list_load": {
          "ignore": true
        },
        "git_filter_list_push": {
          "ignore": true
        },
        "git_filter_source_filemode": {
          "ignore": true
        },
        "git_filter_source_flags": {
          "ignore": true
        },
        "git_filter_source_id": {
          "ignore": true
        },
        "git_filter_source_mode": {
          "ignore": true
        },
        "git_filter_source_options": {
          "ignore": true
        },
        "git_filter_source_path": {
          "ignore": true
        },
        "git_filter_source_repo": {
          "ignore": true
        }
      },
      "fields": {
        "initialize": {
          "ignore": true
        },
        "shutdown": {
          "ignore": true
        },
        "check": {
          "ignore": true
        },
        "apply": {
          "ignore": true
        },
        "cleanup": {
          "ignore": true
        }
      },
      "cDependencies": [
        "git2/sys/filter.h"
      ]
    },
    "filter_source": {
      "ignore": true
    },
    "graph": {
      "functions": {
        "git_graph_ahead_behind": {
          "args": {
            "ahead": {
              "shouldAlloc": true,
              "isReturn": true
            },
            "behind": {
              "shouldAlloc": true,
              "isReturn": true
            }
          },
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_graph_descendant_of": {
          "isAsync": true,
          "return": {
            "isResultOrError": true
          }
        }
      }
    },
    "hashsig": {
      "cDependencies": [
        "git2/sys/hashsig.h"
      ]
    },
    "ignore": {
      "functions": {
        "git_ignore_path_is_ignored": {
          "args": {
            "ignored": {
              "shouldAlloc": true,
              "isReturn": true
            }
          },
          "isAsync": true
        }
      }
    },
    "index": {
      "functions": {
        "git_index_add": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_index_add_all": {
          "args": {
            "pathspec": {
              "isOptional": true
            },
            "flags": {
              "isOptional": true
            },
            "callback": {
              "isOptional": true
            }
          },
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_index_add_bypath": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_index_add_frombuffer": {
          "ignore": true
        },
        "git_index_checksum": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_index_clear": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_index_conflict_add": {
          "isAsync": true,
          "args": {
            "index": {
              "isSelf": true
            },
            "ancestor_entry": {
              "isOptional": true
            },
            "our_entry": {
              "isOptional": true
            },
            "their_entry": {
              "isOptional": true
            }
          },
          "return": {
            "isErrorCode": true
          }
        },
        "git_index_conflict_cleanup": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_index_conflict_get": {
          "args": {
            "ancestor_out": {
              "isReturn": true
            },
            "our_out": {
              "isReturn": true
            },
            "their_out": {
              "isReturn": true
            }
          },
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_index_conflict_iterator_free": {
          "ignore": true
        },
        "git_index_conflict_iterator_new": {
          "ignore": true
        },
        "git_index_conflict_next": {
          "ignore": true
        },
        "git_index_conflict_remove": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_index_entrycount": {
          "jsFunctionName": "entryCount"
        },
        "git_index_find": {
          "ignore": true
        },
        "git_index_free": {
          "ignore": true
        },
        "git_index_get_bypath": {
          "args": {
            "stage": {
              "isOptional": true
            }
          }
        },
        "git_index_new": {
          "ignore": true
        },
        "git_index_open": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_index_read": {
          "args": {
            "force": {
              "isOptional": true
            }
          },
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_index_read_tree": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_index_remove": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_index_remove_all": {
          "args": {
            "pathspec": {
              "isOptional": true
            },
            "flags": {
              "isOptional": true
            },
            "callback": {
              "isOptional": true
            }
          },
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_index_remove_bypath": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_index_remove_directory": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_index_update_all": {
          "args": {
            "pathspec": {
              "isOptional": true
            },
            "flags": {
              "isOptional": true
            },
            "callback": {
              "isOptional": true
            }
          },
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
   	    },
	      "git_index_write": {
	        "args": {
	          "force": {
	            "isOptional": true
	          }
	        },
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_index_write_tree": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_index_write_tree_to": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        }
      },
      "dependencies": [
        "../include/str_array_converter.h"
      ]
    },
    "index_entry": {
      "hasConstructor": true,
      "ignoreInit": true
    },
    "indexer": {
      "cType": "git_indexer",
      "functions": {
        "git_indexer_append": {
          "ignore": true
        },
        "git_indexer_hash": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_indexer_new": {
          "ignore": true
        }
      }
    },
    "mempack": {
      "functions": {
        "git_mempack_new": {
          "ignore": true
        },
        "git_mempack_reset": {
          "ignore": true
        }
      }
    },
    "merge": {
      "functions": {
        "git_merge": {
          "args": {
            "their_heads": {
              "cType": "const git_annotated_commit **",
              "cppClassName": "Array",
              "jsClassName": "Array",
              "arrayElementCppClassName": "GitAnnotatedCommit"
            }
          }
        },
        "git_merge_analysis": {
          "ignore": true
        },
        "git_merge_base_many": {
          "ignore": true
        },
        "git_merge_bases_many": {
          "ignore": true
        },
        "git_merge_base_octopus": {
          "ignore": true
        },
        "git_merge_commits": {
          "args": {
            "opts": {
              "isOptional": true
            }
          }
        },
        "git_merge_file": {
          "ignore": true
        },
        "git_merge_file_from_index": {
          "ignore": true
        },
        "git_merge_file_init_options": {
          "ignore": true
        },
        "git_merge_file_result_free": {
          "ignore": true
        }
      }
    },
    "message": {
      "functions": {
        "git_message_prettify": {
          "ignore": true
        }
      }
    },
    "note": {
      "functions": {
        "git_note_iterator_free": {
          "ignore": true
        },
        "git_note_create": {
          "args": {
            "out": {
              "shouldAlloc": true
            }
          }
        },
        "git_note_id": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_note_remove": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_note_foreach": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        }
      }
    },
    "object": {
      "functions": {
        "git_object_id": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_object_short_id": {
          "args": {
            "out": {
              "shouldAlloc": true
            }
          }
        }
      }
    },
    "odb": {
      "functions": {
        "git_odb_add_alternate": {
          "ignore": true
        },
        "git_odb_add_backend": {
          "ignore": true
        },
        "git_odb_backend_loose": {
          "ignore": true
        },
        "git_odb_backend_one_pack": {
          "ignore": true
        },
        "git_odb_backend_pack": {
          "ignore": true
        },
        "git_odb_exists": {
          "ignore": true
        },
        "git_odb_exists_prefix": {
          "ignore": true
        },
        "git_odb_foreach": {
          "ignore": true
        },
        "git_odb_get_backend": {
          "ignore": true
        },
        "git_odb_hash": {
          "ignore": true
        },
        "git_odb_hashfile": {
          "ignore": true
        },
        "git_odb_init_backend": {
          "ignore": true
        },
        "git_odb_new": {
          "ignore": true
        },
        "git_odb_num_backends": {
          "ignore": true
        },
        "git_odb_open_rstream": {
          "ignore": true
        },
        "git_odb_open_wstream": {
          "ignore": true
        },
        "git_odb_read_header": {
          "ignore": true
        },
        "git_odb_read_prefix": {
          "ignore": true
        },
        "git_odb_refresh": {
          "ignore": true
        },
        "git_odb_stream_finalize_write": {
          "ignore": true
        },
        "git_odb_stream_free": {
          "ignore": true
        },
        "git_odb_stream_read": {
          "ignore": true
        },
        "git_odb_stream_write": {
          "ignore": true
        },
        "git_odb_write": {
          "args": {
            "data": {
              "cppClassName": "Wrapper",
              "jsClassName": "Buffer"
            }
          }
        },
        "git_odb_write_pack": {
          "ignore": true
        }
      }
    },
    "odb_backend": {
      "fields": {
        "foreach": {
          "ignore": true
        },
        "writepack": {
          "ignore": true
        }
      },
      "ignore": true
    },
    "odb_object": {
      "functions": {
        "git_odb_object_data": {
          "return": {
            "cppClassName": "Wrapper",
            "jsClassName": "Buffer"
          }
        },
        "git_odb_object_id": {
          "return": {
            "ownedByThis": true
          }
        }
      },
      "dependencies": [
        "../include/wrapper.h",
        "node_buffer.h"
      ]
    },
    "odb_stream": {
      "ignore": true
    },
    "odb_writepack": {
      "ignore": true
    },
    "oid": {
      "selfFreeing": true,
      "cpyFunction": "git_oid_cpy",
      "freeFunctionName": "free",
      "shouldAlloc": true,
      "functions": {
        "git_oid_cpy": {
          "args": {
            "out": {
              "isReturn": true
            }
          }
        },
        "git_oid_fmt": {
          "ignore": true
        },
        "git_oid_fromraw": {
          "ignore": true
        },
        "git_oid_fromstr": {
          "isAsync": false
        },
        "git_oid_fromstrn": {
          "ignore": true
        },
        "git_oid_fromstrp": {
          "ignore": true
        },
        "git_oid_nfmt": {
          "ignore": true
        },
        "git_oid_pathfmt": {
          "ignore": true
        },
        "git_oid_shorten_add": {
          "ignore": true
        },
        "git_oid_shorten_free": {
          "ignore": true
        },
        "git_oid_shorten_new": {
          "ignore": true
        },
        "git_oid_tostr": {
          "ignore": true
        }
      },
      "fields": {
        "id": {
          "ignore": true
        }
      }
    },
    "openssl": {
      "cDependencies": [
        "git2/sys/openssl.h"
      ]
    },
    "packbuilder": {
      "functions": {
        "git_packbuilder_foreach": {
          "ignore": true
        },
        "git_packbuilder_hash": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_packbuilder_new": {
          "isAsync": false
        },
        "git_packbuilder_set_callbacks": {
          "ignore": true
        },
        "git_packbuilder_write": {
          "ignore": true
        }
      }
    },
    "patch": {
      "dependencies": [
        "../include/convenient_patch.h"
      ],
      "functions": {
        "git_patch_free": {
          "ignore": true
        },
        "git_patch_from_buffers": {
          "ignore": true
        },
        "git_patch_from_diff": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_patch_get_hunk": {
          "args": {
            "out": {
              "returnName": "hunk"
            },
            "lines_in_hunk": {
              "shouldAlloc": true,
              "returnName": "linesInHunk",
              "isReturn": true
            }
          },
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_patch_get_line_in_hunk": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_patch_line_stats": {
          "args": {
            "total_context": {
              "isReturn": true
            },
            "total_additions": {
              "isReturn": true
            },
            "total_deletions": {
              "isReturn": true
            }
          },
          "return": {
            "isErrorCode": true
          }
        },
        "git_patch_print": {
          "ignore": true
        },
        "git_patch_to_buf": {
          "ignore": true
        }
      }
    },
    "pathspec": {
      "functions": {
        "git_pathspec_match_list_free": {
          "ignore": true
        },
        "git_pathspec_new": {
          "isAsync": false
        }
      }
    },
    "push": {
      "cType": "git_push",
      "functions": {
        "git_push_finish": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_push_set_callbacks": {
          "ignore": true
        },
        "git_push_status_foreach": {
          "ignore": true
        }
      }
    },
    "rebase": {
      "functions": {
        "git_rebase_commit": {
          "args": {
            "id": {
              "isReturn": true,
              "shouldAlloc": true
            },
            "author": {
              "isOptional": true
            },
            "message_encoding": {
              "isOptional": true
            },
            "message": {
              "isOptional": true
            }
          }
        },
        "git_rebase_finish": {
          "args": {
            "signature": {
              "isOptional": true
            }
          }
        },
        "git_rebase_free": {
          "ignore": true
        },
        "git_rebase_init": {
          "args": {
            "upstream": {
              "isOptional": true
            },
            "onto": {
              "isOptional": true
            },
            "signature": {
              "isOptional": true
            },
            "opts": {
              "isOptional": true
            }
          }
        }
      }
    },
    "refdb": {
      "functions": {
        "git_refdb_backend_fs": {
          "ignore": true
        },
        "git_refdb_init_backend": {
          "ignore": true
        },
        "git_refdb_set_backend": {
          "ignore": true
        },
        "git_refdb_new": {
          "ignore": true
        }
      }
    },
    "refdb_backend": {
      "ignore": true
    },
    "reference": {
      "cppClassName": "GitRefs",
      "selfFreeing": true,
      "functions": {
        "git_reference__alloc": {
          "ignore": true
        },
        "git_reference__alloc_symbolic": {
          "ignore": true
        },
        "git_reference_foreach": {
          "ignore": true
        },
        "git_reference_foreach_glob": {
          "ignore": true
        },
        "git_reference_foreach_name": {
          "ignore": true
        },
        "git_reference_free": {
          "ignore": true
        },
        "git_reference_iterator_free": {
          "ignore": true
        },
        "git_reference_iterator_glob_new": {
          "ignore": true
        },
        "git_reference_iterator_new": {
          "ignore": true
        },
        "git_reference_list": {
          "args": {
            "array": {
              "isReturn": true,
              "shouldAlloc": true,
              "cppClassName": "Array",
              "jsClassName": "Array",
              "size": "count",
              "key": "strings"
            }
          },
          "isAsync": true
        },
        "git_reference_next": {
          "ignore": true
        },
        "git_reference_next_name": {
          "ignore": true
        },
        "git_reference_symbolic_set_target": {
          "args": {
            "log_message": {
              "isOptional": true
            }
          }
        },
        "git_reference_target": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_reference_target_peel": {
          "return": {
            "ownedByThis": true
          }
        }
      }
    },
    "reference_iterator": {
      "cDependencies": [
        "git2/sys/refdb_backend.h"
      ],
      "needsForwardDeclaration": false,
      "ignore": true
    },
    "reflog_entry": {
      "functions": {
        "git_reflog_entry_id_new": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_reflog_entry_id_old": {
          "return": {
            "ownedByThis": true
          }
        }
      }
    },
    "refspec": {
      "cType": "git_refspec",
      "functions": {
        "git_refspec_rtransform": {
          "ignore": true
        },
        "git_refspec_string": {
          "ignore": true
        },
        "git_refspec_transform": {
          "ignore": true
        }
      }
    },
    "remote": {
      "cType": "git_remote",
      "selfFreeing": true,
      "functions": {
        "git_remote_create": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_remote_connect": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_remote_disconnect": {
          "isAsync": true
        },
        "git_remote_download": {
          "args": {
            "refspecs": {
              "isOptional": true
            }
          },
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_remote_default_branch": {
          "isAsync": true,
          "args": {
            "out": {
              "isReturn": true
            },
            "remote": {
              "isSelf": true
            }
          },
          "return": {
            "isErrorCode": true
          }
        },
        "git_remote_delete": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_remote_fetch": {
          "args": {
            "reflog_message": {
              "isOptional": true
            },
            "refspecs": {
              "isOptional": true
            }
          },
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_remote_get_fetch_refspecs": {
          "args": {
            "array": {
              "isReturn": true,
              "shouldAlloc": true,
              "cppClassName": "Array",
              "jsClassName": "Array",
              "size": "count",
              "key": "strings"
            }
          },
          "isAsync": true
        },
        "git_remote_get_push_refspecs": {
          "args": {
            "array": {
              "isReturn": true,
              "shouldAlloc": true,
              "cppClassName": "Array",
              "jsClassName": "Array",
              "size": "count",
              "key": "strings"
            }
          },
          "isAsync": true
        },
        "git_remote_get_refspec": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_remote_list": {
          "args": {
            "out": {
              "isReturn": true,
              "shouldAlloc": true,
              "cppClassName": "Array",
              "jsClassName": "Array",
              "size": "count",
              "key": "strings"
            }
          }
        },
        "git_remote_ls": {
          "ignore": true
        },
        "git_remote_rename": {
          "ignore": true
        },
        "git_remote_push": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          },
          "args": {
            "opts": {
              "isOptional": true
            }
          }
        },
        "git_remote_set_fetch_refspecs": {
          "ignore": true
        },
        "git_remote_set_transport": {
          "ignore": true
        },
        "git_remote_set_push_refspecs": {
          "ignore": true
        },
        "git_remote_stats": {
          "return": {
            "ownedByThis": true
          }
        }
      }
    },
    "remote_callbacks": {
      "fields": {
        "completion": {
          "ignore": true
        },
        "pack_progress": {
          "ignore": true
        },
        "push_negotiation": {
          "ignore": true
        },
        "push_transfer_progress": {
          "ignore": true
        },
        "push_update_reference": {
          "ignore": true
        },
        "sideband_progress": {
          "ignore": true
        },
        "update_tips": {
          "ignore": true
        }
      }
    },
    "remote_head": {
      "ignore": true
    },
    "repository": {
      "dependencies": [
        "git2/sys/repository.h"
      ],
      "functions": {
        "git_repository_discover": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_repository_init_init_options": {
          "ignore": true
        },
        "git_repository_fetchhead_foreach": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_repository_hashfile": {
          "ignore": true
        },
        "git_repository_ident": {
          "ignore": true
        },
        "git_repository_mergehead_foreach": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_repository_message": {
          "ignore": true
        },
        "git_repository_new": {
          "ignore": true
        },
        "git_repository_reinit_filesystem": {
          "ignore": true
        },
        "git_repository_set_bare": {
          "ignore": true
        },
        "git_repository_set_config": {
          "ignore": true
        },
        "git_repository_set_head": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_repository_set_index": {
          "args": {
            "index": {
              "isOptional": true
            }
          }
        },
        "git_repository_set_odb": {
          "ignore": true
        },
        "git_repository_set_refdb": {
          "ignore": true
        }
      }
    },
    "revert": {
      "functions": {
        "git_revert": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_revert_commit": {
          "isAsync": true,
          "args": {
            "merge_options": {
              "isOptional": true
            }
          }
        },
        "git_revert_init_options": {
          "ignore": true
        }
      }
    },
    "revparse": {
      "functions": {
        "git_revparse": {
          "ignore": true
        }
      }
    },
    "reset": {
      "functions": {
        "git_reset": {
          "args": {
            "checkout_opts": {
              "isOptional": true
            },
            "log_message": {
              "isOptional": true
            },
            "signature": {
              "isOptional": true
            }
          },
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_reset_default": {
          "args": {
            "target": {
              "isOptional": true
            }
          },
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        }
      }
    },
    "revspec": {
      "ignore": true
    },
    "revwalk": {
      "dependencies": [
        "../include/commit.h",
        "../include/functions/copy.h"
      ],
      "functions": {
        "git_revwalk_add_hide_cb": {
          "ignore": true
        },
        "git_revwalk_free": {
          "ignore": true
        },
        "git_revwalk_new": {
          "isAsync": false
        }
      }
    },
	  "signature": {
      "dupFunction": "git_signature_dup",
	    "functions": {
        "git_signature_default": {
          "isAsync": false
        },
	      "git_signature_new": {
	        "isAsync": false
	      },
        "git_signature_now": {
          "isAsync": false
        }
	    }
	  },
    "smart": {
      "functions": {
        "git_smart_subtransport_git": {
          "ignore": true
        },
        "git_smart_subtransport_http": {
          "ignore": true
        },
        "git_smart_subtransport_ssh": {
          "ignore": true
        }
      }
    },
    "smart_subtransport_definition": {
      "ignore": true
    },
    "stash": {
      "functions": {
        "git_stash_apply": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_stash_drop": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_stash_foreach": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_stash_pop": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_stash_save": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        }
      }
    },
    "status": {
      "cDependencies": [
        "git2/sys/diff.h"
      ],
      "functions": {
        "git_status_byindex": {
          "isAsync": false
        },
        "git_status_file": {
          "args": {
            "status_flags": {
              "isReturn": true
            },
            "return": {
              "isErrorCode": true
            }
          }
        },
        "git_status_foreach": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_status_foreach_ext": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_status_init_options": {
          "ignore": true
        }
      }
    },
    "status_list": {
      "functions": {
        "git_status_list_new": {
          "isAsync": true,
          "args": {
            "opts": {
              "isOptional": true
            }
          },
          "return": {
            "isErrorCode": true
          }
        }
      }
    },
    "strarray": {
      "dependencies": [
        "../include/str_array_converter.h"
      ]
    },
    "stream": {
      "ignore": true,
      "cDependencies": [
        "git2/sys/stream.h"
      ]
    },
    "submodule": {
      "functions": {
        "git_submodule_add_to_index": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_submodule_add_finalize": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_submodule_head_id": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_submodule_init": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_submodule_foreach": {
          "isAsync": true,
          "args": {
            "callback": {
              "type": "git_submodule_cb",
              "cType": "git_submodule_cb",
              "cppClassName": "git_submodule_cb"
            }
          },
          "return": {
            "isErrorCode": true,
            "type": "int"
          }
        },
        "git_submodule_index_id": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_submodule_wd_id": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_submodule_location": {
          "isAsync": true,
          "args": {
            "location_status": {
              "shouldAlloc": true,
              "isReturn": true
            },
            "submodule": {
              "isSelf": true
            }
          },
          "return": {
            "isErrorCode": true
          }
        },
        "git_submodule_open": {
          "isAsync": true,
          "args": {
            "repo": {
              "isReturn": true
            },
            "submodule": {
              "isSelf": true
            }
          },
          "return": {
            "isErrorCode": true
          }
        },
        "git_submodule_update": {
          "isAsync": true,
          "args": {
            "options": {
              "isOptional": true
            }
          },
          "return": {
            "isErrorCode": true
          }
        },
        "git_submodule_set_ignore": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_submodule_set_update": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_submodule_set_url": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        },
        "git_submodule_status": {
          "isAsync": true,
          "args": {
            "status": {
              "isReturn": true,
              "shouldAlloc": true
            }
          },
          "return": {
            "isErrorCode": true
          }
        },
        "git_submodule_sync": {
          "isAsync": true,
          "return": {
            "isErrorCode": true
          }
        }
      }
    },
    "tag": {
      "selfFreeing": true,
      "functions": {
        "git_tag_foreach": {
          "ignore": true
        },
        "git_tag_create": {
          "args": {
            "oid": {
              "isReturn": true
            }
          },
          "return": {
            "isErrorCode": true
          },
          "isAsync": true
        },
        "git_tag_create_frombuffer": {
          "ignore": true
        },
        "git_tag_id": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_tag_create_lightweight": {
          "args": {
            "oid": {
              "isReturn": true
            }
          },
          "return": {
            "isErrorCode": true
          },
          "isAsync": true
        },
        "git_tag_annotation_create": {
          "args": {
            "oid": {
              "isReturn": true
            }
          },
          "return": {
            "isErrorCode": true
          },
          "isAsync": true
        },
        "git_tag_list": {
          "args": {
            "tag_names": {
              "isReturn": true,
              "shouldAlloc": true,
              "cppClassName": "Array",
              "jsClassName": "Array",
              "size": "count",
              "key": "strings"
            }
          },
          "isAsync": true
        },
        "git_tag_tagger": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_tag_target": {
          "args": {
            "target_out": {
              "isReturn": true
            }
          }
        },
        "git_tag_target_id": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_tag_delete": {
          "return": {
            "isErrorCode": true
          },
          "isAsync": true
        }
      }
    },
    "trace": {
      "functions": {
        "git_trace_set": {
          "ignore": true
        }
      }
    },
    "transfer_progress": {
      "dupFunction": "git_transfer_progress_dup"
    },
    "transport": {
      "cType": "git_transport",
      "needsForwardDeclaration": false,
      "functions": {
        "git_transport_dummy": {
          "ignore": true
        },
        "git_transport_local": {
          "ignore": true
        },
        "git_transport_new": {
          "ignore": true
        },
        "git_transport_register": {
          "ignore": true
        },
        "git_transport_smart": {
          "ignore": true
        }
      },
      "cDependencies": [
        "git2/sys/transport.h"
      ]
    },
    "tree": {
      "selfFreeing": true,
      "functions": {
        "git_tree_entry_byid": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_tree_entry_byindex": {
          "jsFunctionName": "_entryByIndex"
        },
        "git_tree_entry_byname": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_tree_entrycount": {
          "jsFunctionName": "entryCount"
        },
        "git_tree_id": {
          "return": {
            "ownedByThis": true
          }
        },
        "git_tree_walk": {
          "ignore": true
        }
      }
    },
    "treebuilder": {
      "functions": {
        "git_treebuilder_filter": {
          "ignore": true
        },
        "git_treebuilder_write": {
          "args": {
            "id": {
              "isReturn": true
            }
          }
        },
        "git_treebuilder_new": {
          "args": {
            "source": {
              "isOptional": true
            }
          }
        }
      }
    },
    "tree_entry": {
      "dupFunction": "git_tree_entry_dup",
      "freeFunctionName": "git_tree_entry_free",
      "functions": {
        "git_tree_entry_id": {
          "return": {
            "ownedByThis": true
          }
        }
      }
    },
    "writestream": {
      "cType": "git_writestream",
      "needsForwardDeclaration": false
    }
  }
}
