{
	"$schema": "https://json-schema.org/draft-07/schema",
	"additionalProperties": false,
	"definitions": {
		"currencyAction": {
			"additionalProperties": false,
			"properties": {
				"amount": {
					"type": "number"
				},
				"id": {
					"enum": ["bit", "coin", "gem", "mote", "north-star", "pest", "usd"],
					"type": "string"
				},
				"type": {
					"const": "currency"
				}
			},
			"required": ["amount", "id", "type"]
		},
		"itemAction": {
			"additionalProperties": false,
			"properties": {
				"amount": {
					"type": "number"
				},
				"id": {
					"type": "string"
				},
				"type": {
					"const": "item"
				}
			},
			"required": ["id", "amount", "type"],
			"type": "object"
		}
	},
	"properties": {
		"$schema": {
			"type": "string"
		},
		"actions": {
			"items": {
				"additionalProperties": false,
				"properties": {
					"inputs": {
						"items": {
							"oneOf": [
								{ "$ref": "#/definitions/currencyAction" },
								{ "$ref": "#/definitions/itemAction" }
							],
							"type": "object"
						},
						"type": "array"
					},
					"outputs": {
						"items": {
							"oneOf": [
								{ "$ref": "#/definitions/currencyAction" },
								{ "$ref": "#/definitions/itemAction" }
							],
							"type": "object"
						},
						"type": "array"
					},
					"place": {
						"items": {
							"oneOf": [
								{
									"additionalProperties": false,
									"properties": {
										"id": {
											"type": "string"
										},
										"type": {
											"const": "item"
										}
									},
									"required": ["id", "type"],
									"type": "object"
								},
								{
									"additionalProperties": false,
									"properties": {
										"id": {
											"type": "string"
										},
										"type": {
											"const": "npc"
										}
									},
									"required": ["id", "type"],
									"type": "object"
								},
								{
									"additionalProperties": false,
									"properties": {
										"type": {
											"const": "website"
										},
										"url": {
											"type": "string"
										}
									},
									"required": ["type", "url"],
									"type": "object"
								},
								{
									"additionalProperties": false,
									"properties": {
										"grid": {
											"items": {
												"maxLength": 9,
												"minLength": 9,
												"oneOf": [
													{ "$ref": "#/definitions/itemAction" },
													{ "type": "null" }
												]
											},
											"type": "array"
										},
										"type": {
											"const": "workbench"
										}
									},
									"required": ["type", "grid"],
									"type": "object"
								},
								{
									"additionalProperties": false,
									"properties": {
										"left": {
											"$ref": "#/definitions/itemAction",
											"type": "object"
										},
										"right": {
											"$ref": "#/definitions/itemAction",
											"type": "object"
										},
										"type": {
											"const": "anvil"
										}
									},
									"required": ["type", "left", "right"],
									"type": "object"
								}
							],
							"type": "object"
						},
						"type": "array"
					},
					"requirements": {
						"items": {},
						"type": "array"
					}
				},
				"required": ["inputs", "outputs", "place"],
				"type": "object"
			},
			"type": "array"
		}
	},
	"required": ["actions"],
	"type": "object"
}
