{
  "namespace": "tabThemeColor",
  "types": [
    {
      "id": "tabThemeColor.BoardThemeAvailabilityState",
      "type": "string",
      "enum": [
        "loading",
        "login-required",
        "unavailable",
        "ready"
      ]
    },
    {
      "id": "tabThemeColor.BoardThemeAvailability",
      "type": "object",
      "properties": {
        "state": {
          "$ref": "tabThemeColor.BoardThemeAvailabilityState"
        },
        "listenerId": {
          "type": "integer",
          "optional": true
        },
        "selectedThemeId": {
          "type": "string",
          "optional": true
        }
      }
    },
    {
      "id": "tabThemeColor.SkColor",
      "type": "object",
      "properties": {
        "value": {
          "type": "integer"
        }
      },
      "ignoreAdditionalProperties": true
    },
    {
      "id": "tabThemeColor.ThemeColors",
      "type": "object",
      "properties": {
        "primary_color": {
          "$ref": "tabThemeColor.SkColor"
        },
        "background_color": {
          "$ref": "tabThemeColor.SkColor"
        },
        "text_color": {
          "$ref": "tabThemeColor.SkColor"
        },
        "accent_color": {
          "$ref": "tabThemeColor.SkColor"
        },
        "is_dark_mode": {
          "type": "boolean"
        }
      },
      "ignoreAdditionalProperties": true
    },
    {
      "id": "tabThemeColor.UserColor",
      "type": "object",
      "properties": {
        "user_color": {
          "$ref": "tabThemeColor.SkColor"
        },
        "is_dark_mode": {
          "type": "boolean"
        }
      },
      "ignoreAdditionalProperties": true
    }
  ],
  "functions": [
    {
      "name": "setBoardThemeAvailability",
      "type": "function",
      "parameters": [
        {
          "name": "availability",
          "$ref": "tabThemeColor.BoardThemeAvailability"
        }
      ]
    },
    {
      "name": "getColors",
      "type": "function",
      "parameters": [],
      "returns_async": {
        "name": "callback",
        "parameters": [
          {
            "name": "colors",
            "$ref": "tabThemeColor.ThemeColors"
          }
        ]
      }
    },
    {
      "name": "showCustomizePanel",
      "type": "function",
      "parameters": []
    },
    {
      "name": "toggleCustomizePanel",
      "type": "function",
      "parameters": []
    },
    {
      "name": "getUserColor",
      "type": "function",
      "parameters": [],
      "returns_async": {
        "name": "callback",
        "parameters": [
          {
            "name": "userColor",
            "$ref": "tabThemeColor.UserColor"
          }
        ]
      }
    },
    {
      "name": "setUserColor",
      "type": "function",
      "parameters": [
        {
          "name": "color",
          "$ref": "tabThemeColor.SkColor"
        }
      ]
    },
    {
      "name": "setDarkMode",
      "type": "function",
      "parameters": [
        {
          "name": "enabled",
          "type": "boolean"
        }
      ]
    }
  ],
  "events": [
    {
      "name": "onChanged",
      "type": "function",
      "parameters": [
        {
          "name": "colors",
          "$ref": "tabThemeColor.ThemeColors"
        }
      ]
    },
    {
      "name": "onUserColorChanged",
      "type": "function",
      "parameters": [
        {
          "name": "userColor",
          "$ref": "tabThemeColor.UserColor"
        }
      ]
    }
  ]
}