{
    "$schema": "../../../../contract.schema.json",
    "released": true,
    "contractName": "RouterProxyFactory",
    "version": "2.1.0",
    "networkAddresses": {
        "42161": {
            "primaryAddress": "0x396614E1050Ffb01E16B4C985b02a7EbB377e0F1",
            "allAddresses": [
                {
                    "address": "0x396614E1050Ffb01E16B4C985b02a7EbB377e0F1",
                    "dependencies": [
                        {
                            "name": "Mangrove",
                            "address": "0x109d9CDFA4aC534354873EF634EF63C235F93f61"
                        }
                    ]
                }
            ]
        },
        "81457": {
            "primaryAddress": "0x79C3F23F210e30F6AA9072F0ddFd2D180C8B7131",
            "allAddresses": [
                {
                    "address": "0x79C3F23F210e30F6AA9072F0ddFd2D180C8B7131",
                    "dependencies": [
                        {
                            "name": "Mangrove",
                            "address": "0xb1a49C54192Ea59B233200eA38aB56650Dfb448C"
                        }
                    ]
                }
            ]
        }
    },
    "abi": [
        {
            "type": "function",
            "name": "computeProxyAddress",
            "inputs": [
                { "name": "owner", "type": "address", "internalType": "address" },
                {
                    "name": "routerImplementation",
                    "type": "address",
                    "internalType": "contract AbstractRouter"
                }
            ],
            "outputs": [
                { "name": "", "type": "address", "internalType": "address payable" }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "deployProxy",
            "inputs": [
                { "name": "owner", "type": "address", "internalType": "address" },
                {
                    "name": "routerImplementation",
                    "type": "address",
                    "internalType": "contract AbstractRouter"
                }
            ],
            "outputs": [
                {
                    "name": "proxy",
                    "type": "address",
                    "internalType": "contract RouterProxy"
                }
            ],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "instantiate",
            "inputs": [
                { "name": "owner", "type": "address", "internalType": "address" },
                {
                    "name": "routerImplementation",
                    "type": "address",
                    "internalType": "contract AbstractRouter"
                }
            ],
            "outputs": [
                {
                    "name": "proxy",
                    "type": "address",
                    "internalType": "contract RouterProxy"
                },
                { "name": "created", "type": "bool", "internalType": "bool" }
            ],
            "stateMutability": "nonpayable"
        },
        {
            "type": "event",
            "name": "ProxyDeployed",
            "inputs": [
                {
                    "name": "proxy",
                    "type": "address",
                    "indexed": false,
                    "internalType": "contract RouterProxy"
                },
                {
                    "name": "owner",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                },
                {
                    "name": "implementation",
                    "type": "address",
                    "indexed": true,
                    "internalType": "contract AbstractRouter"
                }
            ],
            "anonymous": false
        }
    ]
}
