{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "StargazeMsgWrapper",
  "description": "StargazeMsg is an override of CosmosMsg::Custom to add support for Stargaze's custom message types",
  "type": "object",
  "required": [
    "msg_data",
    "route",
    "version"
  ],
  "properties": {
    "msg_data": {
      "$ref": "#/definitions/StargazeMsg"
    },
    "route": {
      "$ref": "#/definitions/StargazeRoute"
    },
    "version": {
      "type": "string"
    }
  },
  "definitions": {
    "ClaimAction": {
      "type": "string",
      "enum": [
        "mint_nft",
        "bid_nft"
      ]
    },
    "Coin": {
      "type": "object",
      "required": [
        "amount",
        "denom"
      ],
      "properties": {
        "amount": {
          "$ref": "#/definitions/Uint128"
        },
        "denom": {
          "type": "string"
        }
      }
    },
    "StargazeMsg": {
      "oneOf": [
        {
          "type": "object",
          "required": [
            "claim_for"
          ],
          "properties": {
            "claim_for": {
              "type": "object",
              "required": [
                "action",
                "address"
              ],
              "properties": {
                "action": {
                  "$ref": "#/definitions/ClaimAction"
                },
                "address": {
                  "type": "string"
                }
              }
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "fund_community_pool"
          ],
          "properties": {
            "fund_community_pool": {
              "type": "object",
              "required": [
                "amount"
              ],
              "properties": {
                "amount": {
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/Coin"
                  }
                }
              }
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "fund_fairburn_pool"
          ],
          "properties": {
            "fund_fairburn_pool": {
              "type": "object",
              "required": [
                "amount"
              ],
              "properties": {
                "amount": {
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/Coin"
                  }
                }
              }
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "StargazeRoute": {
      "description": "StargazeRoute is enum type to represent stargaze query route path",
      "type": "string",
      "enum": [
        "alloc",
        "claim",
        "distribution"
      ]
    },
    "Uint128": {
      "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```",
      "type": "string"
    }
  }
}
