[
  {
    "consts": [],
    "flags": [],
    "methods": [
      {
        "flags": [],
        "name": "onDocumentChange",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "headerFile": "mozilla/dom/BrowsingContext.h",
              "name": "BrowsingContext",
              "native": "mozilla::dom::BrowsingContext",
              "tag": "TD_DOMOBJECT"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_JSVAL"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIURI",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "onHistoryChange",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "headerFile": "mozilla/dom/BrowsingContext.h",
              "name": "BrowsingContext",
              "native": "mozilla::dom::BrowsingContext",
              "tag": "TD_DOMOBJECT"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_JSVAL"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIURI",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_BOOL"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_BOOL"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "onStateChange",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "headerFile": "mozilla/dom/BrowsingContext.h",
              "name": "BrowsingContext",
              "native": "mozilla::dom::BrowsingContext",
              "tag": "TD_DOMOBJECT"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIURI",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_UINT32"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_UINT32"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "onCreatedNavigationTarget",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "headerFile": "mozilla/dom/BrowsingContext.h",
              "name": "BrowsingContext",
              "native": "mozilla::dom::BrowsingContext",
              "tag": "TD_DOMOBJECT"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "headerFile": "mozilla/dom/BrowsingContext.h",
              "name": "BrowsingContext",
              "native": "mozilla::dom::BrowsingContext",
              "tag": "TD_DOMOBJECT"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "onDOMContentLoaded",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "headerFile": "mozilla/dom/BrowsingContext.h",
              "name": "BrowsingContext",
              "native": "mozilla::dom::BrowsingContext",
              "tag": "TD_DOMOBJECT"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIURI",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      }
    ],
    "name": "extIWebNavigation",
    "needs_scriptable": [
      "nsIURI"
    ],
    "parent": "nsISupports",
    "uuid": "5cc10dac-cab3-41dd-b4ce-55e27c43cc40"
  },
  {
    "consts": [],
    "flags": [
      "builtinclass"
    ],
    "methods": [
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "principal",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "name": "nsIPrincipal",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "scriptURL",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_ASTRING"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "clientInfoId",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_ASTRING"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "descriptorId",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_UINT64"
            }
          }
        ]
      }
    ],
    "name": "mozIExtensionServiceWorkerInfo",
    "needs_scriptable": [
      "nsIPrincipal"
    ],
    "parent": "nsISupports",
    "uuid": "e6862533-8844-4207-a6ab-04748a29d859"
  },
  {
    "consts": [
      {
        "name": "NONE",
        "type": {
          "tag": "TD_UINT8"
        },
        "value": 0
      },
      {
        "name": "RUNTIME_PORT",
        "type": {
          "tag": "TD_UINT8"
        },
        "value": 1
      },
      {
        "name": "CALLBACK_NONE",
        "type": {
          "tag": "TD_UINT8"
        },
        "value": 0
      },
      {
        "name": "CALLBACK_SEND_RESPONSE",
        "type": {
          "tag": "TD_UINT8"
        },
        "value": 1
      }
    ],
    "flags": [],
    "methods": [
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "apiObjectType",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_UINT8"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "apiObjectDescriptor",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_JSVAL"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "apiObjectPrepended",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_BOOL"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "callbackType",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_UINT8"
            }
          }
        ]
      },
      {
        "flags": [
          "setter"
        ],
        "name": "callbackType",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_UINT8"
            }
          }
        ]
      }
    ],
    "name": "mozIExtensionListenerCallOptions",
    "needs_scriptable": [],
    "parent": "nsISupports",
    "uuid": "876d45db-5c1b-4c9b-9148-1c86b33d120b"
  },
  {
    "consts": [],
    "flags": [
      "builtinclass"
    ],
    "methods": [
      {
        "flags": [
          "jscontext",
          "hasretval"
        ],
        "name": "callListener",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "element": {
                "tag": "TD_JSVAL"
              },
              "tag": "TD_ARRAY"
            }
          },
          {
            "flags": [
              "in",
              "optional"
            ],
            "type": {
              "name": "mozIExtensionListenerCallOptions",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_PROMISE"
            }
          }
        ]
      }
    ],
    "name": "mozIExtensionEventListener",
    "needs_scriptable": [],
    "parent": "nsISupports",
    "uuid": "e68e3c19-1b35-4112-8faa-5c5b84086a5b"
  },
  {
    "consts": [
      {
        "name": "CALL_FUNCTION",
        "type": {
          "tag": "TD_UINT8"
        },
        "value": 0
      },
      {
        "name": "CALL_FUNCTION_NO_RETURN",
        "type": {
          "tag": "TD_UINT8"
        },
        "value": 1
      },
      {
        "name": "CALL_FUNCTION_ASYNC",
        "type": {
          "tag": "TD_UINT8"
        },
        "value": 2
      },
      {
        "name": "ADD_LISTENER",
        "type": {
          "tag": "TD_UINT8"
        },
        "value": 3
      },
      {
        "name": "REMOVE_LISTENER",
        "type": {
          "tag": "TD_UINT8"
        },
        "value": 4
      },
      {
        "name": "GET_PROPERTY",
        "type": {
          "tag": "TD_UINT8"
        },
        "value": 5
      }
    ],
    "flags": [
      "builtinclass"
    ],
    "methods": [
      {
        "flags": [
          "hasretval"
        ],
        "name": "toString",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_UTF8STRING"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "requestType",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_UTF8STRING"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "apiNamespace",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_UTF8STRING"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "apiName",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_UTF8STRING"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "apiObjectType",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_UTF8STRING"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "apiObjectId",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_UTF8STRING"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "jscontext",
          "hasretval"
        ],
        "name": "args",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_JSVAL"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "jscontext",
          "hasretval"
        ],
        "name": "normalizedArgs",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_JSVAL"
            }
          }
        ]
      },
      {
        "flags": [
          "setter",
          "jscontext"
        ],
        "name": "normalizedArgs",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_JSVAL"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "jscontext",
          "hasretval"
        ],
        "name": "callerSavedFrame",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_JSVAL"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "serviceWorkerInfo",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "name": "mozIExtensionServiceWorkerInfo",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "eventListener",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "name": "mozIExtensionEventListener",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      }
    ],
    "name": "mozIExtensionAPIRequest",
    "needs_scriptable": [],
    "parent": "nsISupports",
    "uuid": "0fee1c8f-e363-46a6-bd0c-d3c3338e2534"
  },
  {
    "consts": [
      {
        "name": "RETURN_VALUE",
        "type": {
          "tag": "TD_UINT8"
        },
        "value": 0
      },
      {
        "name": "EXTENSION_ERROR",
        "type": {
          "tag": "TD_UINT8"
        },
        "value": 1
      }
    ],
    "flags": [],
    "methods": [
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "type",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_UINT8"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "value",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_JSVAL"
            }
          }
        ]
      }
    ],
    "name": "mozIExtensionAPIRequestResult",
    "needs_scriptable": [],
    "parent": "nsISupports",
    "uuid": "59fd4097-d88e-40fd-8664-fedd8ab67ab6"
  },
  {
    "consts": [],
    "flags": [],
    "methods": [
      {
        "flags": [
          "hasretval"
        ],
        "name": "handleAPIRequest",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsISupports",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "mozIExtensionAPIRequest",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "out",
              "optional"
            ],
            "type": {
              "name": "mozIExtensionAPIRequestResult",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "initExtensionWorker",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsISupports",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "mozIExtensionServiceWorkerInfo",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "onExtensionWorkerLoaded",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsISupports",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_UINT64"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "onExtensionWorkerDestroyed",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsISupports",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_UINT64"
            }
          }
        ]
      }
    ],
    "name": "mozIExtensionAPIRequestHandler",
    "needs_scriptable": [],
    "parent": "nsISupports",
    "uuid": "0c61bd33-0557-43a2-9497-96c449f39e33"
  },
  {
    "consts": [],
    "flags": [],
    "methods": [
      {
        "flags": [],
        "name": "preloadContentScript",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsISupports",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      },
      {
        "flags": [
          "hasretval"
        ],
        "name": "loadContentScript",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "headerFile": "mozilla/extensions/WebExtensionContentScript.h",
              "name": "WebExtensionContentScript",
              "native": "mozilla::extensions::WebExtensionContentScript",
              "tag": "TD_DOMOBJECT"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "mozIDOMWindow",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_PROMISE"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "initExtensionDocument",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsISupports",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "headerFile": "mozilla/dom/Document.h",
              "name": "Document",
              "native": "mozilla::dom::Document",
              "tag": "TD_DOMOBJECT"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_BOOL"
            }
          }
        ]
      }
    ],
    "name": "mozIExtensionProcessScript",
    "needs_scriptable": [
      "mozIDOMWindow"
    ],
    "parent": "nsISupports",
    "uuid": "6b09dc51-6caa-4ca7-9d6d-30c87258a630"
  },
  {
    "consts": [],
    "flags": [
      "builtinclass"
    ],
    "methods": [
      {
        "flags": [
          "hasretval"
        ],
        "name": "shouldUse",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_BOOL"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "jscontext",
          "hasretval"
        ],
        "name": "available",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_PROMISE"
            }
          }
        ]
      },
      {
        "flags": [
          "jscontext",
          "hasretval"
        ],
        "name": "createSession",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          },
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_PROMISE"
            }
          }
        ]
      },
      {
        "flags": [
          "jscontext",
          "hasretval"
        ],
        "name": "closeSession",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          },
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_PROMISE"
            }
          }
        ]
      },
      {
        "flags": [
          "jscontext",
          "hasretval"
        ],
        "name": "getManifest",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          },
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_PROMISE"
            }
          }
        ]
      },
      {
        "flags": [
          "jscontext",
          "hasretval"
        ],
        "name": "start",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          },
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_PROMISE"
            }
          }
        ]
      }
    ],
    "name": "nsINativeMessagingPortal",
    "needs_scriptable": [],
    "parent": "nsISupports",
    "uuid": "7c3003e8-6d10-46cc-b754-70cd889871e7"
  },
  {
    "consts": [],
    "flags": [
      "builtinclass"
    ],
    "methods": [
      {
        "flags": [
          "hasretval"
        ],
        "name": "shouldUse",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_BOOL"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "jscontext",
          "hasretval"
        ],
        "name": "available",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_PROMISE"
            }
          }
        ]
      },
      {
        "flags": [
          "jscontext",
          "hasretval"
        ],
        "name": "closeSession",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          },
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_PROMISE"
            }
          }
        ]
      },
      {
        "flags": [
          "jscontext",
          "hasretval"
        ],
        "name": "getManifest",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          },
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_PROMISE"
            }
          }
        ]
      },
      {
        "flags": [
          "jscontext",
          "hasretval"
        ],
        "name": "start",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          },
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_PROMISE"
            }
          }
        ]
      }
    ],
    "name": "nsINativeMessagingProxy",
    "needs_scriptable": [],
    "parent": "nsISupports",
    "uuid": "a89af240-f53f-48c4-8468-168136a628d4"
  }
]