{
  "namespace": "tabLocalFilePreview",
  "types": [
    {
      "id": "tabLocalFilePreview.FileInfo",
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "extension": {
          "type": "string"
        },
        "size": {
          "type": "number"
        },
        "writable": {
          "type": "boolean"
        },
        "expiresAt": {
          "type": "number"
        }
      }
    },
    {
      "id": "tabLocalFilePreview.WriteOptions",
      "type": "object",
      "properties": {
        "replace": {
          "type": "boolean",
          "optional": true
        }
      }
    },
    {
      "id": "tabLocalFilePreview.SystemOpenState",
      "type": "string",
      "enum": [
        "default",
        "not_default",
        "unknown"
      ]
    },
    {
      "id": "tabLocalFilePreview.SetSystemDefaultResult",
      "type": "string",
      "enum": [
        "requested",
        "opened_settings",
        "unsupported",
        "failed"
      ]
    },
    {
      "id": "tabLocalFilePreview.SystemOpenInfo",
      "type": "object",
      "properties": {
        "extension": {
          "type": "string"
        },
        "state": {
          "$ref": "tabLocalFilePreview.SystemOpenState"
        },
        "handlerName": {
          "type": "string",
          "optional": true
        },
        "canSetDefault": {
          "type": "boolean"
        }
      }
    }
  ],
  "functions": [
    {
      "name": "getFileInfo",
      "type": "function",
      "parameters": [
        {
          "name": "token",
          "type": "string"
        }
      ],
      "returns_async": {
        "name": "callback",
        "parameters": [
          {
            "name": "info",
            "$ref": "tabLocalFilePreview.FileInfo"
          }
        ]
      }
    },
    {
      "name": "readFile",
      "type": "function",
      "parameters": [
        {
          "name": "token",
          "type": "string"
        },
        {
          "name": "offset",
          "type": "number"
        },
        {
          "name": "size",
          "type": "integer"
        }
      ],
      "returns_async": {
        "name": "callback",
        "parameters": [
          {
            "name": "data",
            "type": "binary"
          }
        ]
      }
    },
    {
      "name": "writeFile",
      "type": "function",
      "parameters": [
        {
          "name": "token",
          "type": "string"
        },
        {
          "name": "data",
          "type": "binary"
        },
        {
          "name": "options",
          "$ref": "tabLocalFilePreview.WriteOptions",
          "optional": true
        }
      ],
      "returns_async": {
        "name": "callback",
        "parameters": [
          {
            "name": "written",
            "type": "integer"
          }
        ]
      }
    },
    {
      "name": "releaseToken",
      "type": "function",
      "parameters": [
        {
          "name": "token",
          "type": "string"
        }
      ],
      "returns_async": {
        "name": "callback",
        "parameters": [
          {
            "name": "released",
            "type": "boolean"
          }
        ]
      }
    },
    {
      "name": "getSystemOpenInfo",
      "type": "function",
      "parameters": [
        {
          "name": "extensions",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ],
      "returns_async": {
        "name": "callback",
        "parameters": [
          {
            "name": "infos",
            "type": "array",
            "items": {
              "$ref": "tabLocalFilePreview.SystemOpenInfo"
            }
          }
        ]
      }
    },
    {
      "name": "requestSetSystemDefault",
      "type": "function",
      "parameters": [
        {
          "name": "extension",
          "type": "string"
        }
      ],
      "returns_async": {
        "name": "callback",
        "parameters": [
          {
            "name": "result",
            "$ref": "tabLocalFilePreview.SetSystemDefaultResult"
          }
        ]
      }
    }
  ]
}