[
  {
    "consts": [
      {
        "name": "ACK_DELIVERED",
        "type": {
          "tag": "TD_UINT16"
        },
        "value": 0
      },
      {
        "name": "ACK_DECRYPTION_ERROR",
        "type": {
          "tag": "TD_UINT16"
        },
        "value": 1
      },
      {
        "name": "ACK_NOT_DELIVERED",
        "type": {
          "tag": "TD_UINT16"
        },
        "value": 2
      },
      {
        "name": "UNSUBSCRIBE_MANUAL",
        "type": {
          "tag": "TD_UINT16"
        },
        "value": 3
      },
      {
        "name": "UNSUBSCRIBE_QUOTA_EXCEEDED",
        "type": {
          "tag": "TD_UINT16"
        },
        "value": 4
      },
      {
        "name": "UNSUBSCRIBE_PERMISSION_REVOKED",
        "type": {
          "tag": "TD_UINT16"
        },
        "value": 5
      },
      {
        "name": "DELIVERY_UNCAUGHT_EXCEPTION",
        "type": {
          "tag": "TD_UINT16"
        },
        "value": 6
      },
      {
        "name": "DELIVERY_UNHANDLED_REJECTION",
        "type": {
          "tag": "TD_UINT16"
        },
        "value": 7
      },
      {
        "name": "DELIVERY_INTERNAL_ERROR",
        "type": {
          "tag": "TD_UINT16"
        },
        "value": 8
      }
    ],
    "flags": [],
    "methods": [
      {
        "flags": [],
        "name": "reportDeliveryError",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_ASTRING"
            }
          },
          {
            "flags": [
              "in",
              "optional"
            ],
            "type": {
              "tag": "TD_UINT16"
            }
          }
        ]
      }
    ],
    "name": "nsIPushErrorReporter",
    "needs_scriptable": [],
    "parent": "nsISupports",
    "uuid": "b58249f9-1a04-48cc-bc20-2c992d64c73e"
  },
  {
    "consts": [],
    "flags": [
      "builtinclass"
    ],
    "methods": [
      {
        "flags": [],
        "name": "notifyPush",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIPrincipal",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_ASTRING"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "notifyPushWithData",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIPrincipal",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_ASTRING"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "element": {
                "tag": "TD_UINT8"
              },
              "tag": "TD_ARRAY"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "notifySubscriptionChange",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIPrincipal",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "in",
              "optional"
            ],
            "type": {
              "name": "nsIPushSubscription",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "notifySubscriptionModified",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIPrincipal",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "notifyError",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_CSTRING"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIPrincipal",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_ASTRING"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_UINT32"
            }
          }
        ]
      }
    ],
    "name": "nsIPushNotifier",
    "needs_scriptable": [
      "nsIPrincipal",
      "nsIPushSubscription"
    ],
    "parent": "nsISupports",
    "uuid": "b00dfdeb-14e5-425b-adc7-b531442e3216"
  },
  {
    "consts": [],
    "flags": [
      "builtinclass"
    ],
    "methods": [
      {
        "flags": [
          "hasretval"
        ],
        "name": "text",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_ASTRING"
            }
          }
        ]
      },
      {
        "flags": [
          "jscontext",
          "hasretval"
        ],
        "name": "json",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_JSVAL"
            }
          }
        ]
      },
      {
        "flags": [
          "hasretval"
        ],
        "name": "binary",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "element": {
                "tag": "TD_UINT8"
              },
              "tag": "TD_ARRAY"
            }
          }
        ]
      }
    ],
    "name": "nsIPushData",
    "needs_scriptable": [],
    "parent": "nsISupports",
    "uuid": "dfc4f151-cead-40df-8eb7-7a7a67c54b16"
  },
  {
    "consts": [],
    "flags": [
      "builtinclass"
    ],
    "methods": [
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "principal",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "name": "nsIPrincipal",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "data",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "name": "nsIPushData",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      }
    ],
    "name": "nsIPushMessage",
    "needs_scriptable": [
      "nsIPrincipal"
    ],
    "parent": "nsISupports",
    "uuid": "b9d063ca-0e3f-4fee-be4b-ea9103263433"
  },
  {
    "consts": [],
    "flags": [],
    "methods": [
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "endpoint",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_ASTRING"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "pushCount",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_INT64"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "lastPush",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_INT64"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "quota",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_INT32"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "isSystemSubscription",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_BOOL"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "p256dhPrivateKey",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_JSVAL"
            }
          }
        ]
      },
      {
        "flags": [
          "hasretval"
        ],
        "name": "quotaApplies",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_BOOL"
            }
          }
        ]
      },
      {
        "flags": [
          "hasretval"
        ],
        "name": "isExpired",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_BOOL"
            }
          }
        ]
      },
      {
        "flags": [
          "hasretval"
        ],
        "name": "getKey",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_ASTRING"
            }
          },
          {
            "flags": [
              "out"
            ],
            "type": {
              "element": {
                "tag": "TD_UINT8"
              },
              "tag": "TD_ARRAY"
            }
          }
        ]
      }
    ],
    "name": "nsIPushSubscription",
    "needs_scriptable": [],
    "parent": "nsISupports",
    "uuid": "1de32d5c-ea88-4c9e-9626-b032bd87f415"
  },
  {
    "consts": [],
    "flags": [
      "function"
    ],
    "methods": [
      {
        "flags": [],
        "name": "onPushSubscription",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_UINT32"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIPushSubscription",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      }
    ],
    "name": "nsIPushSubscriptionCallback",
    "needs_scriptable": [],
    "parent": "nsISupports",
    "uuid": "1799c074-9d52-46b0-ab3c-c09790732f6f"
  },
  {
    "consts": [],
    "flags": [
      "function"
    ],
    "methods": [
      {
        "flags": [],
        "name": "onUnsubscribe",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_UINT32"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_BOOL"
            }
          }
        ]
      }
    ],
    "name": "nsIUnsubscribeResultCallback",
    "needs_scriptable": [],
    "parent": "nsISupports",
    "uuid": "d574118f-61a9-4270-b1f6-4461aa85c4f5"
  },
  {
    "consts": [],
    "flags": [
      "function"
    ],
    "methods": [
      {
        "flags": [],
        "name": "onClear",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_UINT32"
            }
          }
        ]
      }
    ],
    "name": "nsIPushClearResultCallback",
    "needs_scriptable": [],
    "parent": "nsISupports",
    "uuid": "bd47b38e-8bfa-4f92-834e-832a4431e05e"
  },
  {
    "consts": [],
    "flags": [],
    "methods": [
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "pushTopic",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_ASTRING"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "subscriptionChangeTopic",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_ASTRING"
            }
          }
        ]
      },
      {
        "flags": [
          "getter",
          "hasretval"
        ],
        "name": "subscriptionModifiedTopic",
        "params": [
          {
            "flags": [
              "out"
            ],
            "type": {
              "tag": "TD_ASTRING"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "subscribe",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_ASTRING"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIPrincipal",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIPushSubscriptionCallback",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "subscribeWithKey",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_ASTRING"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIPrincipal",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "element": {
                "tag": "TD_UINT8"
              },
              "tag": "TD_ARRAY"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIPushSubscriptionCallback",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "unsubscribe",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_ASTRING"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIPrincipal",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIUnsubscribeResultCallback",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "getSubscription",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_ASTRING"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIPrincipal",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIPushSubscriptionCallback",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "clearForDomain",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_ASTRING"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_JSVAL"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIPushClearResultCallback",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "clearForPrincipal",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIPrincipal",
              "tag": "TD_INTERFACE_TYPE"
            }
          },
          {
            "flags": [
              "in"
            ],
            "type": {
              "name": "nsIPushClearResultCallback",
              "tag": "TD_INTERFACE_TYPE"
            }
          }
        ]
      }
    ],
    "name": "nsIPushService",
    "needs_scriptable": [
      "nsIPrincipal"
    ],
    "parent": "nsISupports",
    "uuid": "678ef584-bf25-47aa-ac84-03efc0865b68"
  },
  {
    "consts": [],
    "flags": [],
    "methods": [
      {
        "flags": [],
        "name": "notificationForOriginShown",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_PSTRING"
            }
          }
        ]
      },
      {
        "flags": [],
        "name": "notificationForOriginClosed",
        "params": [
          {
            "flags": [
              "in"
            ],
            "type": {
              "tag": "TD_PSTRING"
            }
          }
        ]
      }
    ],
    "name": "nsIPushQuotaManager",
    "needs_scriptable": [],
    "parent": "nsISupports",
    "uuid": "a2555e70-46f8-4b52-bf02-d978b979d143"
  }
]