{
	"compiler": {
		"version": "0.5.17+commit.d19bba13"
	},
	"language": "Solidity",
	"output": {
		"abi": [
			{
				"inputs": [
					{
						"internalType": "bytes",
						"name": "_initCode",
						"type": "bytes"
					},
					{
						"internalType": "address",
						"name": "_authereumEnsManagerAddress",
						"type": "address"
					}
				],
				"payable": false,
				"stateMutability": "nonpayable",
				"type": "constructor"
			},
			{
				"anonymous": false,
				"inputs": [
					{
						"indexed": true,
						"internalType": "address",
						"name": "authereumEnsManager",
						"type": "address"
					}
				],
				"name": "AuthereumEnsManagerChanged",
				"type": "event"
			},
			{
				"anonymous": false,
				"inputs": [
					{
						"indexed": false,
						"internalType": "bytes",
						"name": "initCode",
						"type": "bytes"
					}
				],
				"name": "InitCodeChanged",
				"type": "event"
			},
			{
				"anonymous": false,
				"inputs": [
					{
						"indexed": true,
						"internalType": "address",
						"name": "_newOwner",
						"type": "address"
					}
				],
				"name": "OwnerChanged",
				"type": "event"
			},
			{
				"constant": false,
				"inputs": [
					{
						"internalType": "address",
						"name": "_newOwner",
						"type": "address"
					}
				],
				"name": "changeOwner",
				"outputs": [],
				"payable": false,
				"stateMutability": "nonpayable",
				"type": "function"
			},
			{
				"constant": false,
				"inputs": [
					{
						"internalType": "uint256",
						"name": "_salt",
						"type": "uint256"
					},
					{
						"internalType": "string",
						"name": "_label",
						"type": "string"
					},
					{
						"internalType": "bytes[]",
						"name": "_initData",
						"type": "bytes[]"
					},
					{
						"internalType": "address",
						"name": "_implementation",
						"type": "address"
					}
				],
				"name": "createProxy",
				"outputs": [
					{
						"internalType": "contract AuthereumProxy",
						"name": "",
						"type": "address"
					}
				],
				"payable": false,
				"stateMutability": "nonpayable",
				"type": "function"
			},
			{
				"constant": true,
				"inputs": [],
				"name": "getAuthereumEnsManager",
				"outputs": [
					{
						"internalType": "address",
						"name": "",
						"type": "address"
					}
				],
				"payable": false,
				"stateMutability": "view",
				"type": "function"
			},
			{
				"constant": true,
				"inputs": [],
				"name": "getInitCode",
				"outputs": [
					{
						"internalType": "bytes",
						"name": "",
						"type": "bytes"
					}
				],
				"payable": false,
				"stateMutability": "view",
				"type": "function"
			},
			{
				"constant": true,
				"inputs": [
					{
						"internalType": "address",
						"name": "_potentialOwner",
						"type": "address"
					}
				],
				"name": "isOwner",
				"outputs": [
					{
						"internalType": "bool",
						"name": "",
						"type": "bool"
					}
				],
				"payable": false,
				"stateMutability": "view",
				"type": "function"
			},
			{
				"constant": true,
				"inputs": [],
				"name": "name",
				"outputs": [
					{
						"internalType": "string",
						"name": "",
						"type": "string"
					}
				],
				"payable": false,
				"stateMutability": "view",
				"type": "function"
			},
			{
				"constant": true,
				"inputs": [],
				"name": "owner",
				"outputs": [
					{
						"internalType": "address",
						"name": "",
						"type": "address"
					}
				],
				"payable": false,
				"stateMutability": "view",
				"type": "function"
			},
			{
				"constant": false,
				"inputs": [
					{
						"internalType": "address",
						"name": "_authereumEnsManagerAddress",
						"type": "address"
					}
				],
				"name": "setAuthereumEnsManager",
				"outputs": [],
				"payable": false,
				"stateMutability": "nonpayable",
				"type": "function"
			},
			{
				"constant": false,
				"inputs": [
					{
						"internalType": "bytes",
						"name": "_initCode",
						"type": "bytes"
					}
				],
				"name": "setInitCode",
				"outputs": [],
				"payable": false,
				"stateMutability": "nonpayable",
				"type": "function"
			},
			{
				"constant": true,
				"inputs": [],
				"name": "version",
				"outputs": [
					{
						"internalType": "string",
						"name": "",
						"type": "string"
					}
				],
				"payable": false,
				"stateMutability": "view",
				"type": "function"
			}
		],
		"devdoc": {
			"author": "Authereum Labs, Inc.",
			"details": "A factory that creates Authereum Proxies.",
			"methods": {
				"changeOwner(address)": {
					"details": "Lets the owner transfer ownership of the contract to a new owner",
					"params": {
						"_newOwner": "The new owner"
					}
				},
				"constructor": {
					"details": "Constructor",
					"params": {
						"_authereumEnsManagerAddress": "Address for the Authereum ENS Manager contract",
						"_initCode": "Init code of the AuthereumProxy without the constructor arguments"
					}
				},
				"createProxy(uint256,string,bytes[],address)": {
					"details": "Create an Authereum Proxy and iterate through initialize data",
					"params": {
						"_implementation": "Address of the logic contract that the proxy will point to",
						"_initData": "Array of initialize data",
						"_label": "Label for the user's Authereum ENS subdomain",
						"_salt": "A uint256 value to add randomness to the account creation"
					}
				},
				"getAuthereumEnsManager()": {
					"details": "Getter for the private authereumEnsManager variable",
					"return": "Authereum Ens Manager"
				},
				"getInitCode()": {
					"details": "Getter for the proxy initCode without the constructor arguments",
					"return": "Init code"
				},
				"isOwner(address)": {
					"details": "Return the ownership status of an address",
					"params": {
						"_potentialOwner": "Address being checked"
					},
					"return": "True if the _potentialOwner is the owner"
				},
				"setAuthereumEnsManager(address)": {
					"details": "Setter for the Authereum ENS Manager address",
					"params": {
						"_authereumEnsManagerAddress": "Address of the new Authereum ENS Manager"
					}
				},
				"setInitCode(bytes)": {
					"details": "Setter for the proxy initCode without the constructor arguments",
					"params": {
						"_initCode": "Init code of the AuthereumProxy without the constructor arguments"
					}
				}
			},
			"title": "AuthereumProxyFactory"
		},
		"userdoc": {
			"methods": {
				"createProxy(uint256,string,bytes[],address)": {
					"notice": "The bytes[] _initData is an array of initialize functions. This is used when a user creates an account e.g. on V5, but V1,2,3, etc. have state vars that need to be included."
				}
			}
		}
	},
	"settings": {
		"compilationTarget": {
			"localhost/contracts/upgradeability/AuthereumProxyFactory.sol": "AuthereumProxyFactory"
		},
		"evmVersion": "istanbul",
		"libraries": {},
		"optimizer": {
			"enabled": false,
			"runs": 200
		},
		"remappings": []
	},
	"sources": {
		"localhost/contracts/base/Owned.sol": {
			"keccak256": "0xf7a1c2649ae7c8f837a47a0ba3637180c988ba6324e52d97d81d5d758d0cbec3",
			"urls": [
				"bzz-raw://fe6b986a6ece292ee972d748ee205d53caa513e21a98cf396032c9d3fe70b6b8",
				"dweb:/ipfs/QmZRh5nVzHCZkCVokHGLZNBkQk7mRhDCgxQN66keUxmArm"
			]
		},
		"localhost/contracts/upgradeability/AuthereumProxy.sol": {
			"keccak256": "0x30dcc7c6cf85b8af1d680b2f4cab0057fc90e4dfe1d7cbda29c6334bc0431e1d",
			"urls": [
				"bzz-raw://52d3c0aaab237ecce8ba0c457d53e1c65eee72d5aca6404fd37206f6c7b3018c",
				"dweb:/ipfs/QmZNLtWoBmtjAvHgpUYBatHWFBwDWTGeFq2xS4DTfLM7W8"
			]
		},
		"localhost/contracts/upgradeability/AuthereumProxyFactory.sol": {
			"keccak256": "0x91f1cfaa5f638218191e41f55927d6e8b74d9c67c966fed40d7849b8a8bb13e1",
			"urls": [
				"bzz-raw://fabc2706a40f6e3bd1bb395873835cf232e9917951fd57863964e68bef1c2ad2",
				"dweb:/ipfs/QmQbHmxw7bfHEJ7DPxxezTppy5MRFxYVPasbG1UHc7hokb"
			]
		}
	},
	"version": 1
}