{
	"compiler": {
		"version": "0.8.0+commit.c7dfd78e"
	},
	"language": "Solidity",
	"output": {
		"abi": [
			{
				"inputs": [
					{
						"internalType": "string",
						"name": "codeName",
						"type": "string"
					},
					{
						"internalType": "address",
						"name": "sourceLocation",
						"type": "address"
					},
					{
						"internalType": "uint256",
						"name": "sourceLocationId",
						"type": "uint256"
					},
					{
						"internalType": "address",
						"name": "location",
						"type": "address"
					},
					{
						"internalType": "bool",
						"name": "submitable",
						"type": "bool"
					},
					{
						"internalType": "string",
						"name": "methodSignature",
						"type": "string"
					},
					{
						"internalType": "string",
						"name": "returnAbiParametersArray",
						"type": "string"
					},
					{
						"internalType": "bool",
						"name": "isInternal",
						"type": "bool"
					},
					{
						"internalType": "bool",
						"name": "needsSender",
						"type": "bool"
					},
					{
						"internalType": "uint256",
						"name": "position",
						"type": "uint256"
					}
				],
				"name": "addFunctionality",
				"outputs": [],
				"stateMutability": "nonpayable",
				"type": "function"
			},
			{
				"inputs": [
					{
						"internalType": "string",
						"name": "codeName",
						"type": "string"
					},
					{
						"internalType": "address",
						"name": "sourceLocation",
						"type": "address"
					},
					{
						"internalType": "uint256",
						"name": "sourceLocationId",
						"type": "uint256"
					},
					{
						"internalType": "address",
						"name": "location",
						"type": "address"
					},
					{
						"internalType": "bool",
						"name": "submitable",
						"type": "bool"
					},
					{
						"internalType": "string",
						"name": "methodSignature",
						"type": "string"
					},
					{
						"internalType": "string",
						"name": "returnAbiParametersArray",
						"type": "string"
					},
					{
						"internalType": "bool",
						"name": "isInternal",
						"type": "bool"
					},
					{
						"internalType": "bool",
						"name": "needsSender",
						"type": "bool"
					}
				],
				"name": "addFunctionality",
				"outputs": [],
				"stateMutability": "nonpayable",
				"type": "function"
			},
			{
				"inputs": [],
				"name": "clearCallingContext",
				"outputs": [],
				"stateMutability": "nonpayable",
				"type": "function"
			},
			{
				"inputs": [],
				"name": "functionalitiesToJSON",
				"outputs": [
					{
						"internalType": "string",
						"name": "",
						"type": "string"
					}
				],
				"stateMutability": "view",
				"type": "function"
			},
			{
				"inputs": [
					{
						"internalType": "uint256",
						"name": "start",
						"type": "uint256"
					},
					{
						"internalType": "uint256",
						"name": "l",
						"type": "uint256"
					}
				],
				"name": "functionalitiesToJSON",
				"outputs": [
					{
						"internalType": "string",
						"name": "functionsJSONArray",
						"type": "string"
					}
				],
				"stateMutability": "view",
				"type": "function"
			},
			{
				"inputs": [],
				"name": "functionalityNames",
				"outputs": [
					{
						"internalType": "string",
						"name": "",
						"type": "string"
					}
				],
				"stateMutability": "view",
				"type": "function"
			},
			{
				"inputs": [
					{
						"internalType": "uint256",
						"name": "start",
						"type": "uint256"
					},
					{
						"internalType": "uint256",
						"name": "l",
						"type": "uint256"
					}
				],
				"name": "functionalityNames",
				"outputs": [
					{
						"internalType": "string",
						"name": "functionsJSONArray",
						"type": "string"
					}
				],
				"stateMutability": "view",
				"type": "function"
			},
			{
				"inputs": [
					{
						"internalType": "string",
						"name": "codeName",
						"type": "string"
					}
				],
				"name": "functionalityToJSON",
				"outputs": [
					{
						"internalType": "string",
						"name": "",
						"type": "string"
					}
				],
				"stateMutability": "view",
				"type": "function"
			},
			{
				"inputs": [],
				"name": "getFunctionalitiesAmount",
				"outputs": [
					{
						"internalType": "uint256",
						"name": "",
						"type": "uint256"
					}
				],
				"stateMutability": "view",
				"type": "function"
			},
			{
				"inputs": [
					{
						"internalType": "string",
						"name": "codeName",
						"type": "string"
					}
				],
				"name": "getFunctionalityData",
				"outputs": [
					{
						"internalType": "address",
						"name": "",
						"type": "address"
					},
					{
						"internalType": "uint256",
						"name": "",
						"type": "uint256"
					},
					{
						"internalType": "string",
						"name": "",
						"type": "string"
					},
					{
						"internalType": "address",
						"name": "",
						"type": "address"
					},
					{
						"internalType": "uint256",
						"name": "",
						"type": "uint256"
					}
				],
				"stateMutability": "view",
				"type": "function"
			},
			{
				"inputs": [],
				"name": "getProxy",
				"outputs": [
					{
						"internalType": "address",
						"name": "",
						"type": "address"
					}
				],
				"stateMutability": "view",
				"type": "function"
			},
			{
				"inputs": [
					{
						"internalType": "string",
						"name": "codeName",
						"type": "string"
					}
				],
				"name": "hasFunctionality",
				"outputs": [
					{
						"internalType": "bool",
						"name": "",
						"type": "bool"
					}
				],
				"stateMutability": "view",
				"type": "function"
			},
			{
				"inputs": [
					{
						"internalType": "address",
						"name": "sourceLocation",
						"type": "address"
					},
					{
						"internalType": "uint256",
						"name": "getMinimumBlockNumberSourceLocationId",
						"type": "uint256"
					},
					{
						"internalType": "address",
						"name": "getMinimumBlockNumberFunctionalityAddress",
						"type": "address"
					},
					{
						"internalType": "uint256",
						"name": "getEmergencyMinimumBlockNumberSourceLocationId",
						"type": "uint256"
					},
					{
						"internalType": "address",
						"name": "getEmergencyMinimumBlockNumberFunctionalityAddress",
						"type": "address"
					},
					{
						"internalType": "uint256",
						"name": "getEmergencySurveyStakingSourceLocationId",
						"type": "uint256"
					},
					{
						"internalType": "address",
						"name": "getEmergencySurveyStakingFunctionalityAddress",
						"type": "address"
					},
					{
						"internalType": "uint256",
						"name": "checkVoteResultSourceLocationId",
						"type": "uint256"
					},
					{
						"internalType": "address",
						"name": "checkVoteResultFunctionalityAddress",
						"type": "address"
					}
				],
				"name": "init",
				"outputs": [],
				"stateMutability": "nonpayable",
				"type": "function"
			},
			{
				"inputs": [
					{
						"internalType": "address",
						"name": "functionality",
						"type": "address"
					}
				],
				"name": "isAuthorizedFunctionality",
				"outputs": [
					{
						"internalType": "bool",
						"name": "",
						"type": "bool"
					}
				],
				"stateMutability": "view",
				"type": "function"
			},
			{
				"inputs": [
					{
						"internalType": "address",
						"name": "functionality",
						"type": "address"
					}
				],
				"name": "isValidFunctionality",
				"outputs": [
					{
						"internalType": "bool",
						"name": "",
						"type": "bool"
					}
				],
				"stateMutability": "view",
				"type": "function"
			},
			{
				"inputs": [
					{
						"internalType": "string",
						"name": "codeName",
						"type": "string"
					},
					{
						"internalType": "bytes",
						"name": "data",
						"type": "bytes"
					},
					{
						"internalType": "uint8",
						"name": "submitable",
						"type": "uint8"
					},
					{
						"internalType": "address",
						"name": "sender",
						"type": "address"
					},
					{
						"internalType": "uint256",
						"name": "value",
						"type": "uint256"
					}
				],
				"name": "preConditionCheck",
				"outputs": [
					{
						"internalType": "address",
						"name": "location",
						"type": "address"
					},
					{
						"internalType": "bytes",
						"name": "payload",
						"type": "bytes"
					}
				],
				"stateMutability": "view",
				"type": "function"
			},
			{
				"inputs": [
					{
						"internalType": "string",
						"name": "codeName",
						"type": "string"
					}
				],
				"name": "removeFunctionality",
				"outputs": [
					{
						"internalType": "bool",
						"name": "removed",
						"type": "bool"
					},
					{
						"internalType": "uint256",
						"name": "position",
						"type": "uint256"
					}
				],
				"stateMutability": "nonpayable",
				"type": "function"
			},
			{
				"inputs": [
					{
						"internalType": "address",
						"name": "location",
						"type": "address"
					}
				],
				"name": "setCallingContext",
				"outputs": [
					{
						"internalType": "bool",
						"name": "",
						"type": "bool"
					}
				],
				"stateMutability": "nonpayable",
				"type": "function"
			},
			{
				"inputs": [],
				"name": "setProxy",
				"outputs": [],
				"stateMutability": "nonpayable",
				"type": "function"
			},
			{
				"inputs": [
					{
						"internalType": "address",
						"name": "proposalAddress",
						"type": "address"
					}
				],
				"name": "setupFunctionality",
				"outputs": [
					{
						"internalType": "bool",
						"name": "",
						"type": "bool"
					}
				],
				"stateMutability": "nonpayable",
				"type": "function"
			}
		],
		"devdoc": {
			"kind": "dev",
			"methods": {},
			"version": 1
		},
		"userdoc": {
			"kind": "user",
			"methods": {},
			"version": 1
		}
	},
	"settings": {
		"compilationTarget": {
			"localhost/proxy/contracts/interfaces/IMVDFunctionalitiesManager.sol": "IMVDFunctionalitiesManager"
		},
		"evmVersion": "istanbul",
		"libraries": {},
		"metadata": {
			"bytecodeHash": "ipfs"
		},
		"optimizer": {
			"enabled": true,
			"runs": 9999
		},
		"remappings": []
	},
	"sources": {
		"localhost/proxy/contracts/interfaces/IMVDFunctionalitiesManager.sol": {
			"keccak256": "0xc07ad49260b32894e0235ad4917a11c03ee928252a682266c0e81ee9d2d2f803",
			"license": "UNLICENSED",
			"urls": [
				"bzz-raw://bca3227e43cf8af93fb42ca0789c24983d5b86b8c783e466daaa5b32d9a295c0",
				"dweb:/ipfs/QmZrysPYJGYtqv2979Liynmz3Y5ivNaSVbgfVjhkLBMrVh"
			]
		}
	},
	"version": 1
}