[
  {
    "interfaces": [
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [
          {
            "id": "RecoveryStrategy",
            "variants": [
              {
                "name": "ERROR",
                "value": 0
              },
              {
                "name": "DISCARD",
                "value": 1
              },
              {
                "name": "RENAME",
                "value": 2
              }
            ]
          }
        ],
        "id": "nsIKeyValueService",
        "members": [
          {
            "args": [
              {
                "name": "callback",
                "optional": false,
                "type": "nsIKeyValueDatabaseCallback"
              },
              {
                "name": "path",
                "optional": false,
                "type": "string"
              },
              {
                "name": "name",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "getOrCreate",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "callback",
                "optional": false,
                "type": "nsIKeyValueDatabaseCallback"
              },
              {
                "name": "path",
                "optional": false,
                "type": "string"
              },
              {
                "name": "name",
                "optional": false,
                "type": "string"
              },
              {
                "name": "recoveryStrategy",
                "optional": true,
                "type": "nsIKeyValueService.RecoveryStrategy"
              }
            ],
            "iid_is": null,
            "name": "getOrCreateWithOptions",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "type",
                "optional": false,
                "type": "string"
              },
              {
                "name": "path",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "createImporter",
            "type": "nsIKeyValueImporter"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIKeyValueImportSourceSpec",
        "members": [
          {
            "name": "path",
            "readonly": true,
            "type": "string"
          },
          {
            "args": [
              {
                "name": "name",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "addDatabase",
            "type": "nsIKeyValueDatabaseImportOptions"
          },
          {
            "args": [],
            "iid_is": null,
            "name": "addAllDatabases",
            "type": "nsIKeyValueDatabaseImportOptions"
          }
        ]
      },
      {
        "base": "nsIKeyValueImportSourceSpec",
        "callable": false,
        "consts": [],
        "enums": [
          {
            "id": "ConflictPolicy",
            "variants": [
              {
                "name": "ERROR_ON_CONFLICT",
                "value": 0
              },
              {
                "name": "IGNORE_ON_CONFLICT",
                "value": 1
              },
              {
                "name": "REPLACE_ON_CONFLICT",
                "value": 2
              }
            ]
          },
          {
            "id": "CleanupPolicy",
            "variants": [
              {
                "name": "KEEP_AFTER_IMPORT",
                "value": 0
              },
              {
                "name": "DELETE_AFTER_IMPORT",
                "value": 1
              }
            ]
          }
        ],
        "id": "nsIKeyValueImporter",
        "members": [
          {
            "name": "type",
            "readonly": true,
            "type": "string"
          },
          {
            "args": [
              {
                "name": "path",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "addPath",
            "type": "nsIKeyValueImportSourceSpec"
          },
          {
            "args": [
              {
                "name": "callback",
                "optional": false,
                "type": "nsIKeyValueVoidCallback"
              }
            ],
            "iid_is": null,
            "name": "import",
            "type": "void"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIKeyValueDatabaseImportOptions",
        "members": [
          {
            "args": [
              {
                "name": "conflictPolicy",
                "optional": false,
                "type": "nsIKeyValueImporter.ConflictPolicy"
              }
            ],
            "iid_is": null,
            "name": "setConflictPolicy",
            "type": "nsIKeyValueDatabaseImportOptions"
          },
          {
            "args": [
              {
                "name": "cleanupPolicy",
                "optional": false,
                "type": "nsIKeyValueImporter.CleanupPolicy"
              }
            ],
            "iid_is": null,
            "name": "setCleanupPolicy",
            "type": "nsIKeyValueDatabaseImportOptions"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIKeyValueDatabase",
        "members": [
          {
            "args": [
              {
                "name": "callback",
                "optional": false,
                "type": "nsIKeyValueVariantCallback"
              }
            ],
            "iid_is": null,
            "name": "isEmpty",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "callback",
                "optional": false,
                "type": "nsIKeyValueVariantCallback"
              }
            ],
            "iid_is": null,
            "name": "count",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "callback",
                "optional": false,
                "type": "nsIKeyValueVariantCallback"
              }
            ],
            "iid_is": null,
            "name": "size",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "callback",
                "optional": false,
                "type": "nsIKeyValueVoidCallback"
              },
              {
                "name": "key",
                "optional": false,
                "type": "string"
              },
              {
                "name": "value",
                "optional": false,
                "type": "nsIVariant"
              }
            ],
            "iid_is": null,
            "name": "put",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "callback",
                "optional": false,
                "type": "nsIKeyValueVoidCallback"
              },
              {
                "name": "pairs",
                "optional": false,
                "type": "nsIKeyValuePair[]"
              }
            ],
            "iid_is": null,
            "name": "writeMany",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "callback",
                "optional": false,
                "type": "nsIKeyValueVariantCallback"
              },
              {
                "name": "key",
                "optional": false,
                "type": "string"
              },
              {
                "name": "defaultValue",
                "optional": true,
                "type": "nsIVariant"
              }
            ],
            "iid_is": null,
            "name": "get",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "callback",
                "optional": false,
                "type": "nsIKeyValueVariantCallback"
              },
              {
                "name": "key",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "has",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "callback",
                "optional": false,
                "type": "nsIKeyValueVoidCallback"
              },
              {
                "name": "key",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "delete",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "callback",
                "optional": false,
                "type": "nsIKeyValueVoidCallback"
              },
              {
                "name": "fromKey",
                "optional": true,
                "type": "string"
              },
              {
                "name": "toKey",
                "optional": true,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "deleteRange",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "callback",
                "optional": false,
                "type": "nsIKeyValueVoidCallback"
              }
            ],
            "iid_is": null,
            "name": "clear",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "callback",
                "optional": false,
                "type": "nsIKeyValueEnumeratorCallback"
              },
              {
                "name": "fromKey",
                "optional": true,
                "type": "string"
              },
              {
                "name": "toKey",
                "optional": true,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "enumerate",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "callback",
                "optional": false,
                "type": "nsIKeyValueVoidCallback"
              }
            ],
            "iid_is": null,
            "name": "close",
            "type": "void"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIKeyValuePair",
        "members": [
          {
            "name": "key",
            "readonly": true,
            "type": "string"
          },
          {
            "name": "value",
            "readonly": true,
            "type": "nsIVariant"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIKeyValueEnumerator",
        "members": [
          {
            "args": [],
            "iid_is": null,
            "name": "hasMoreElements",
            "type": "boolean"
          },
          {
            "args": [],
            "iid_is": null,
            "name": "getNext",
            "type": "nsIKeyValuePair"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIKeyValueDatabaseCallback",
        "members": [
          {
            "args": [
              {
                "name": "database",
                "optional": false,
                "type": "nsIKeyValueDatabase"
              }
            ],
            "iid_is": null,
            "name": "resolve",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "message",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "reject",
            "type": "void"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIKeyValueEnumeratorCallback",
        "members": [
          {
            "args": [
              {
                "name": "enumerator",
                "optional": false,
                "type": "nsIKeyValueEnumerator"
              }
            ],
            "iid_is": null,
            "name": "resolve",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "message",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "reject",
            "type": "void"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIKeyValuePairCallback",
        "members": [
          {
            "args": [
              {
                "name": "pair",
                "optional": false,
                "type": "nsIKeyValuePair"
              }
            ],
            "iid_is": null,
            "name": "resolve",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "message",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "reject",
            "type": "void"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIKeyValueVariantCallback",
        "members": [
          {
            "args": [
              {
                "name": "result",
                "optional": false,
                "type": "nsIVariant"
              }
            ],
            "iid_is": null,
            "name": "resolve",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "message",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "reject",
            "type": "void"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIKeyValueVoidCallback",
        "members": [
          {
            "args": [],
            "iid_is": null,
            "name": "resolve",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "message",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "reject",
            "type": "void"
          }
        ]
      }
    ],
    "path": "toolkit/components/kvstore/nsIKeyValue.idl",
    "typedefs": [
      [
        "PRTime",
        "i64"
      ]
    ]
  }
]