{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "InstantiateMsg",
  "type": "object",
  "required": [
    "decimals",
    "initial_balances",
    "name",
    "symbol"
  ],
  "properties": {
    "decimals": {
      "type": "integer",
      "format": "uint8",
      "minimum": 0.0
    },
    "initial_balances": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/Cw20Coin"
      }
    },
    "marketing": {
      "anyOf": [
        {
          "$ref": "#/definitions/InstantiateMarketingInfo"
        },
        {
          "type": "null"
        }
      ]
    },
    "mint": {
      "anyOf": [
        {
          "$ref": "#/definitions/MinterResponse"
        },
        {
          "type": "null"
        }
      ]
    },
    "name": {
      "type": "string"
    },
    "symbol": {
      "type": "string"
    }
  },
  "definitions": {
    "Binary": {
      "description": "Binary is a wrapper around Vec<u8> to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec<u8>",
      "type": "string"
    },
    "Cw20Coin": {
      "type": "object",
      "required": [
        "address",
        "amount"
      ],
      "properties": {
        "address": {
          "type": "string"
        },
        "amount": {
          "$ref": "#/definitions/Uint128"
        }
      }
    },
    "EmbeddedLogo": {
      "description": "This is used to store the logo on the blockchain in an accepted format. Enforce maximum size of 5KB on all variants.",
      "anyOf": [
        {
          "description": "Store the Logo as an SVG file. The content must conform to the spec at https://en.wikipedia.org/wiki/Scalable_Vector_Graphics (The contract should do some light-weight sanity-check validation)",
          "type": "object",
          "required": [
            "svg"
          ],
          "properties": {
            "svg": {
              "$ref": "#/definitions/Binary"
            }
          },
          "additionalProperties": false
        },
        {
          "description": "Store the Logo as a PNG file. This will likely only support up to 64x64 or so within the 5KB limit.",
          "type": "object",
          "required": [
            "png"
          ],
          "properties": {
            "png": {
              "$ref": "#/definitions/Binary"
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "InstantiateMarketingInfo": {
      "type": "object",
      "properties": {
        "description": {
          "type": [
            "string",
            "null"
          ]
        },
        "logo": {
          "anyOf": [
            {
              "$ref": "#/definitions/Logo"
            },
            {
              "type": "null"
            }
          ]
        },
        "marketing": {
          "type": [
            "string",
            "null"
          ]
        },
        "project": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "Logo": {
      "description": "This is used for uploading logo data, or setting it in InstantiateData",
      "anyOf": [
        {
          "description": "A reference to an externally hosted logo. Must be a valid HTTP or HTTPS URL.",
          "type": "object",
          "required": [
            "url"
          ],
          "properties": {
            "url": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "description": "Logo content stored on the blockchain. Enforce maximum size of 5KB on all variants",
          "type": "object",
          "required": [
            "embedded"
          ],
          "properties": {
            "embedded": {
              "$ref": "#/definitions/EmbeddedLogo"
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "MinterResponse": {
      "type": "object",
      "required": [
        "minter"
      ],
      "properties": {
        "cap": {
          "description": "cap is a hard cap on total supply that can be achieved by minting. Note that this refers to total_supply. If None, there is unlimited cap.",
          "anyOf": [
            {
              "$ref": "#/definitions/Uint128"
            },
            {
              "type": "null"
            }
          ]
        },
        "minter": {
          "type": "string"
        }
      }
    },
    "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"
    }
  }
}
