[
  {
    "interfaces": [
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [
          {
            "name": "ACK_DELIVERED",
            "value": 0
          },
          {
            "name": "ACK_DECRYPTION_ERROR",
            "value": 1
          },
          {
            "name": "ACK_NOT_DELIVERED",
            "value": 2
          },
          {
            "name": "UNSUBSCRIBE_MANUAL",
            "value": 3
          },
          {
            "name": "UNSUBSCRIBE_QUOTA_EXCEEDED",
            "value": 4
          },
          {
            "name": "UNSUBSCRIBE_PERMISSION_REVOKED",
            "value": 5
          },
          {
            "name": "DELIVERY_UNCAUGHT_EXCEPTION",
            "value": 6
          },
          {
            "name": "DELIVERY_UNHANDLED_REJECTION",
            "value": 7
          },
          {
            "name": "DELIVERY_INTERNAL_ERROR",
            "value": 8
          }
        ],
        "enums": [],
        "id": "nsIPushErrorReporter",
        "members": [
          {
            "args": [
              {
                "name": "messageId",
                "optional": false,
                "type": "string"
              },
              {
                "name": "reason",
                "optional": true,
                "type": "u16"
              }
            ],
            "iid_is": null,
            "name": "reportDeliveryError",
            "type": "void"
          }
        ]
      }
    ],
    "path": "dom/push/nsIPushErrorReporter.idl",
    "typedefs": [
      [
        "PRTime",
        "i64"
      ]
    ]
  },
  {
    "interfaces": [
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIPushNotifier",
        "members": [
          {
            "args": [
              {
                "name": "scope",
                "optional": false,
                "type": "string"
              },
              {
                "name": "principal",
                "optional": false,
                "type": "nsIPrincipal"
              },
              {
                "name": "messageId",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "notifyPush",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "scope",
                "optional": false,
                "type": "string"
              },
              {
                "name": "principal",
                "optional": false,
                "type": "nsIPrincipal"
              },
              {
                "name": "messageId",
                "optional": false,
                "type": "string"
              },
              {
                "name": "data",
                "optional": false,
                "type": "u8[]"
              }
            ],
            "iid_is": null,
            "name": "notifyPushWithData",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "scope",
                "optional": false,
                "type": "string"
              },
              {
                "name": "principal",
                "optional": false,
                "type": "nsIPrincipal"
              },
              {
                "name": "oldSubscription",
                "optional": true,
                "type": "nsIPushSubscription"
              }
            ],
            "iid_is": null,
            "name": "notifySubscriptionChange",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "scope",
                "optional": false,
                "type": "string"
              },
              {
                "name": "principal",
                "optional": false,
                "type": "nsIPrincipal"
              }
            ],
            "iid_is": null,
            "name": "notifySubscriptionModified",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "scope",
                "optional": false,
                "type": "string"
              },
              {
                "name": "principal",
                "optional": false,
                "type": "nsIPrincipal"
              },
              {
                "name": "message",
                "optional": false,
                "type": "string"
              },
              {
                "name": "flags",
                "optional": false,
                "type": "u32"
              }
            ],
            "iid_is": null,
            "name": "notifyError",
            "type": "void"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIPushData",
        "members": [
          {
            "args": [],
            "iid_is": null,
            "name": "text",
            "type": "string"
          },
          {
            "args": [],
            "iid_is": null,
            "name": "json",
            "type": "any"
          },
          {
            "args": [],
            "iid_is": null,
            "name": "binary",
            "type": "u8[]"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIPushMessage",
        "members": [
          {
            "name": "principal",
            "readonly": true,
            "type": "nsIPrincipal"
          },
          {
            "name": "data",
            "readonly": true,
            "type": "nsIPushData"
          }
        ]
      }
    ],
    "path": "dom/push/nsIPushNotifier.idl",
    "typedefs": [
      [
        "PRTime",
        "i64"
      ]
    ]
  },
  {
    "interfaces": [
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIPushSubscription",
        "members": [
          {
            "name": "endpoint",
            "readonly": true,
            "type": "string"
          },
          {
            "name": "pushCount",
            "readonly": true,
            "type": "i64"
          },
          {
            "name": "lastPush",
            "readonly": true,
            "type": "i64"
          },
          {
            "name": "quota",
            "readonly": true,
            "type": "i32"
          },
          {
            "name": "isSystemSubscription",
            "readonly": true,
            "type": "boolean"
          },
          {
            "name": "p256dhPrivateKey",
            "readonly": true,
            "type": "any"
          },
          {
            "args": [],
            "iid_is": null,
            "name": "quotaApplies",
            "type": "boolean"
          },
          {
            "args": [],
            "iid_is": null,
            "name": "isExpired",
            "type": "boolean"
          },
          {
            "args": [
              {
                "name": "name",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "getKey",
            "type": "u8[]"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": true,
        "consts": [],
        "enums": [],
        "id": "nsIPushSubscriptionCallback",
        "members": [
          {
            "args": [
              {
                "name": "status",
                "optional": false,
                "type": "nsresult"
              },
              {
                "name": "subscription",
                "optional": false,
                "type": "nsIPushSubscription"
              }
            ],
            "iid_is": null,
            "name": "onPushSubscription",
            "type": "void"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": true,
        "consts": [],
        "enums": [],
        "id": "nsIUnsubscribeResultCallback",
        "members": [
          {
            "args": [
              {
                "name": "status",
                "optional": false,
                "type": "nsresult"
              },
              {
                "name": "success",
                "optional": false,
                "type": "boolean"
              }
            ],
            "iid_is": null,
            "name": "onUnsubscribe",
            "type": "void"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": true,
        "consts": [],
        "enums": [],
        "id": "nsIPushClearResultCallback",
        "members": [
          {
            "args": [
              {
                "name": "status",
                "optional": false,
                "type": "nsresult"
              }
            ],
            "iid_is": null,
            "name": "onClear",
            "type": "void"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIPushService",
        "members": [
          {
            "name": "pushTopic",
            "readonly": true,
            "type": "string"
          },
          {
            "name": "subscriptionChangeTopic",
            "readonly": true,
            "type": "string"
          },
          {
            "name": "subscriptionModifiedTopic",
            "readonly": true,
            "type": "string"
          },
          {
            "args": [
              {
                "name": "scope",
                "optional": false,
                "type": "string"
              },
              {
                "name": "principal",
                "optional": false,
                "type": "nsIPrincipal"
              },
              {
                "name": "callback",
                "optional": false,
                "type": "nsIPushSubscriptionCallback"
              }
            ],
            "iid_is": null,
            "name": "subscribe",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "scope",
                "optional": false,
                "type": "string"
              },
              {
                "name": "principal",
                "optional": false,
                "type": "nsIPrincipal"
              },
              {
                "name": "key",
                "optional": false,
                "type": "u8[]"
              },
              {
                "name": "callback",
                "optional": false,
                "type": "nsIPushSubscriptionCallback"
              }
            ],
            "iid_is": null,
            "name": "subscribeWithKey",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "scope",
                "optional": false,
                "type": "string"
              },
              {
                "name": "principal",
                "optional": false,
                "type": "nsIPrincipal"
              },
              {
                "name": "callback",
                "optional": false,
                "type": "nsIUnsubscribeResultCallback"
              }
            ],
            "iid_is": null,
            "name": "unsubscribe",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "scope",
                "optional": false,
                "type": "string"
              },
              {
                "name": "principal",
                "optional": false,
                "type": "nsIPrincipal"
              },
              {
                "name": "callback",
                "optional": false,
                "type": "nsIPushSubscriptionCallback"
              }
            ],
            "iid_is": null,
            "name": "getSubscription",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "domain",
                "optional": false,
                "type": "string"
              },
              {
                "name": "originAttributesPattern",
                "optional": false,
                "type": "any"
              },
              {
                "name": "callback",
                "optional": false,
                "type": "nsIPushClearResultCallback"
              }
            ],
            "iid_is": null,
            "name": "clearForDomain",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "principal",
                "optional": false,
                "type": "nsIPrincipal"
              },
              {
                "name": "callback",
                "optional": false,
                "type": "nsIPushClearResultCallback"
              }
            ],
            "iid_is": null,
            "name": "clearForPrincipal",
            "type": "void"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIPushQuotaManager",
        "members": [
          {
            "args": [
              {
                "name": "origin",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "notificationForOriginShown",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "origin",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "notificationForOriginClosed",
            "type": "void"
          }
        ]
      }
    ],
    "path": "dom/push/nsIPushService.idl",
    "typedefs": [
      [
        "PRTime",
        "i64"
      ]
    ]
  }
]