{
  "contractName": "ICurve",
  "abi": [
    {
      "inputs": [],
      "name": "A",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "A_precise",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "fee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "i",
          "type": "uint256"
        }
      ],
      "name": "coins",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "i",
          "type": "uint256"
        }
      ],
      "name": "balances",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int128",
          "name": "i",
          "type": "int128"
        },
        {
          "internalType": "int128",
          "name": "j",
          "type": "int128"
        },
        {
          "internalType": "uint256",
          "name": "dx",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "min_dy",
          "type": "uint256"
        }
      ],
      "name": "exchange",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int128",
          "name": "i",
          "type": "int128"
        },
        {
          "internalType": "int128",
          "name": "j",
          "type": "int128"
        },
        {
          "internalType": "uint256",
          "name": "dx",
          "type": "uint256"
        }
      ],
      "name": "get_dy",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "get_virtual_price",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.8+commit.0bbfe453\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"A\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"A_precise\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"}],\"name\":\"balances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"}],\"name\":\"coins\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int128\",\"name\":\"i\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"j\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"dx\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_dy\",\"type\":\"uint256\"}],\"name\":\"exchange\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int128\",\"name\":\"i\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"j\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"dx\",\"type\":\"uint256\"}],\"name\":\"get_dy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"get_virtual_price\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/interfaces/curve/ICurve.sol\":\"ICurve\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"project:/contracts/interfaces/curve/ICurve.sol\":{\"keccak256\":\"0x9e3eb4830baa051648e505de0eb31b517f84c10109a13285f219bafbbce4425a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c88db4a8b700a4de178805cebb9a23b8c2bfbaaac932c943cb9a205a1440602\",\"dweb:/ipfs/QmdpAhgyaRxbmog5QtFpRKUTccFseRrryTrff7qWAjjQhY\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.6.8;\n\ninterface ICurve {\n    function A() external view returns (uint256);\n\n    function A_precise() external view returns (uint256);\n\n    function fee() external view returns (uint256);\n\n    function coins(uint256 i) external view returns (address);\n\n    function balances(uint256 i) external view returns (uint256);\n\n    function exchange(\n        int128 i,\n        int128 j,\n        uint256 dx,\n        uint256 min_dy\n    ) external returns (uint256);\n\n    function get_dy(\n        int128 i,\n        int128 j,\n        uint256 dx\n    ) external view returns (uint256);\n\n    function get_virtual_price() external view returns (uint256);\n}\n",
  "sourcePath": "/home/thezviad_gmail_com/src/swappa/contracts/interfaces/curve/ICurve.sol",
  "ast": {
    "absolutePath": "project:/contracts/interfaces/curve/ICurve.sol",
    "exportedSymbols": {
      "ICurve": [
        1544
      ]
    },
    "id": 1545,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1485,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".8"
        ],
        "nodeType": "PragmaDirective",
        "src": "32:23:12"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 1544,
        "linearizedBaseContracts": [
          1544
        ],
        "name": "ICurve",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "f446c1d0",
            "id": 1490,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "A",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1486,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "90:2:12"
            },
            "returnParameters": {
              "id": 1489,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1488,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1490,
                  "src": "116:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1487,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "116:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "115:9:12"
            },
            "scope": 1544,
            "src": "80:45:12",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "76a2f0f0",
            "id": 1495,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "A_precise",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1491,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "149:2:12"
            },
            "returnParameters": {
              "id": 1494,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1493,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1495,
                  "src": "175:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1492,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "175:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "174:9:12"
            },
            "scope": 1544,
            "src": "131:53:12",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "ddca3f43",
            "id": 1500,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "fee",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1496,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "202:2:12"
            },
            "returnParameters": {
              "id": 1499,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1498,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1500,
                  "src": "228:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1497,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "228:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "227:9:12"
            },
            "scope": 1544,
            "src": "190:47:12",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "c6610657",
            "id": 1507,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "coins",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1503,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1502,
                  "mutability": "mutable",
                  "name": "i",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1507,
                  "src": "258:9:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1501,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "258:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "257:11:12"
            },
            "returnParameters": {
              "id": 1506,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1505,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1507,
                  "src": "292:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1504,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "292:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "291:9:12"
            },
            "scope": 1544,
            "src": "243:58:12",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "4903b0d1",
            "id": 1514,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "balances",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1510,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1509,
                  "mutability": "mutable",
                  "name": "i",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1514,
                  "src": "325:9:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1508,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "325:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "324:11:12"
            },
            "returnParameters": {
              "id": 1513,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1512,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1514,
                  "src": "359:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1511,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "359:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "358:9:12"
            },
            "scope": 1544,
            "src": "307:61:12",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "3df02124",
            "id": 1527,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "exchange",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1523,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1516,
                  "mutability": "mutable",
                  "name": "i",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1527,
                  "src": "401:8:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int128",
                    "typeString": "int128"
                  },
                  "typeName": {
                    "id": 1515,
                    "name": "int128",
                    "nodeType": "ElementaryTypeName",
                    "src": "401:6:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1518,
                  "mutability": "mutable",
                  "name": "j",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1527,
                  "src": "419:8:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int128",
                    "typeString": "int128"
                  },
                  "typeName": {
                    "id": 1517,
                    "name": "int128",
                    "nodeType": "ElementaryTypeName",
                    "src": "419:6:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1520,
                  "mutability": "mutable",
                  "name": "dx",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1527,
                  "src": "437:10:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1519,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "437:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1522,
                  "mutability": "mutable",
                  "name": "min_dy",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1527,
                  "src": "457:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1521,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "457:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "391:86:12"
            },
            "returnParameters": {
              "id": 1526,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1525,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1527,
                  "src": "496:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1524,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "496:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "495:9:12"
            },
            "scope": 1544,
            "src": "374:131:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "5e0d443f",
            "id": 1538,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "get_dy",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1529,
                  "mutability": "mutable",
                  "name": "i",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1538,
                  "src": "536:8:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int128",
                    "typeString": "int128"
                  },
                  "typeName": {
                    "id": 1528,
                    "name": "int128",
                    "nodeType": "ElementaryTypeName",
                    "src": "536:6:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1531,
                  "mutability": "mutable",
                  "name": "j",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1538,
                  "src": "554:8:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int128",
                    "typeString": "int128"
                  },
                  "typeName": {
                    "id": 1530,
                    "name": "int128",
                    "nodeType": "ElementaryTypeName",
                    "src": "554:6:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1533,
                  "mutability": "mutable",
                  "name": "dx",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1538,
                  "src": "572:10:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1532,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "572:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "526:62:12"
            },
            "returnParameters": {
              "id": 1537,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1536,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1538,
                  "src": "612:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1535,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "612:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "611:9:12"
            },
            "scope": 1544,
            "src": "511:110:12",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "bb7b8b80",
            "id": 1543,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "get_virtual_price",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1539,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "653:2:12"
            },
            "returnParameters": {
              "id": 1542,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1541,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1543,
                  "src": "679:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1540,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "679:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "678:9:12"
            },
            "scope": 1544,
            "src": "627:61:12",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 1545,
        "src": "57:633:12"
      }
    ],
    "src": "32:659:12"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "project:/contracts/interfaces/curve/ICurve.sol",
      "exportedSymbols": {
        "ICurve": [
          1544
        ]
      },
      "license": "MIT"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.6",
            ".8"
          ]
        },
        "id": 1485,
        "name": "PragmaDirective",
        "src": "32:23:12"
      },
      {
        "attributes": {
          "abstract": false,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "interface",
          "documentation": null,
          "fullyImplemented": false,
          "linearizedBaseContracts": [
            1544
          ],
          "name": "ICurve",
          "scope": 1545
        },
        "children": [
          {
            "attributes": {
              "body": null,
              "documentation": null,
              "functionSelector": "f446c1d0",
              "implemented": false,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "A",
              "overrides": null,
              "scope": 1544,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1486,
                "name": "ParameterList",
                "src": "90:2:12"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 1490,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1487,
                        "name": "ElementaryTypeName",
                        "src": "116:7:12"
                      }
                    ],
                    "id": 1488,
                    "name": "VariableDeclaration",
                    "src": "116:7:12"
                  }
                ],
                "id": 1489,
                "name": "ParameterList",
                "src": "115:9:12"
              }
            ],
            "id": 1490,
            "name": "FunctionDefinition",
            "src": "80:45:12"
          },
          {
            "attributes": {
              "body": null,
              "documentation": null,
              "functionSelector": "76a2f0f0",
              "implemented": false,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "A_precise",
              "overrides": null,
              "scope": 1544,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1491,
                "name": "ParameterList",
                "src": "149:2:12"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 1495,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1492,
                        "name": "ElementaryTypeName",
                        "src": "175:7:12"
                      }
                    ],
                    "id": 1493,
                    "name": "VariableDeclaration",
                    "src": "175:7:12"
                  }
                ],
                "id": 1494,
                "name": "ParameterList",
                "src": "174:9:12"
              }
            ],
            "id": 1495,
            "name": "FunctionDefinition",
            "src": "131:53:12"
          },
          {
            "attributes": {
              "body": null,
              "documentation": null,
              "functionSelector": "ddca3f43",
              "implemented": false,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "fee",
              "overrides": null,
              "scope": 1544,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1496,
                "name": "ParameterList",
                "src": "202:2:12"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 1500,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1497,
                        "name": "ElementaryTypeName",
                        "src": "228:7:12"
                      }
                    ],
                    "id": 1498,
                    "name": "VariableDeclaration",
                    "src": "228:7:12"
                  }
                ],
                "id": 1499,
                "name": "ParameterList",
                "src": "227:9:12"
              }
            ],
            "id": 1500,
            "name": "FunctionDefinition",
            "src": "190:47:12"
          },
          {
            "attributes": {
              "body": null,
              "documentation": null,
              "functionSelector": "c6610657",
              "implemented": false,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "coins",
              "overrides": null,
              "scope": 1544,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "i",
                      "overrides": null,
                      "scope": 1507,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1501,
                        "name": "ElementaryTypeName",
                        "src": "258:7:12"
                      }
                    ],
                    "id": 1502,
                    "name": "VariableDeclaration",
                    "src": "258:9:12"
                  }
                ],
                "id": 1503,
                "name": "ParameterList",
                "src": "257:11:12"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 1507,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 1504,
                        "name": "ElementaryTypeName",
                        "src": "292:7:12"
                      }
                    ],
                    "id": 1505,
                    "name": "VariableDeclaration",
                    "src": "292:7:12"
                  }
                ],
                "id": 1506,
                "name": "ParameterList",
                "src": "291:9:12"
              }
            ],
            "id": 1507,
            "name": "FunctionDefinition",
            "src": "243:58:12"
          },
          {
            "attributes": {
              "body": null,
              "documentation": null,
              "functionSelector": "4903b0d1",
              "implemented": false,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "balances",
              "overrides": null,
              "scope": 1544,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "i",
                      "overrides": null,
                      "scope": 1514,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1508,
                        "name": "ElementaryTypeName",
                        "src": "325:7:12"
                      }
                    ],
                    "id": 1509,
                    "name": "VariableDeclaration",
                    "src": "325:9:12"
                  }
                ],
                "id": 1510,
                "name": "ParameterList",
                "src": "324:11:12"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 1514,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1511,
                        "name": "ElementaryTypeName",
                        "src": "359:7:12"
                      }
                    ],
                    "id": 1512,
                    "name": "VariableDeclaration",
                    "src": "359:7:12"
                  }
                ],
                "id": 1513,
                "name": "ParameterList",
                "src": "358:9:12"
              }
            ],
            "id": 1514,
            "name": "FunctionDefinition",
            "src": "307:61:12"
          },
          {
            "attributes": {
              "body": null,
              "documentation": null,
              "functionSelector": "3df02124",
              "implemented": false,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "exchange",
              "overrides": null,
              "scope": 1544,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "i",
                      "overrides": null,
                      "scope": 1527,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int128",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int128",
                          "type": "int128"
                        },
                        "id": 1515,
                        "name": "ElementaryTypeName",
                        "src": "401:6:12"
                      }
                    ],
                    "id": 1516,
                    "name": "VariableDeclaration",
                    "src": "401:8:12"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "j",
                      "overrides": null,
                      "scope": 1527,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int128",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int128",
                          "type": "int128"
                        },
                        "id": 1517,
                        "name": "ElementaryTypeName",
                        "src": "419:6:12"
                      }
                    ],
                    "id": 1518,
                    "name": "VariableDeclaration",
                    "src": "419:8:12"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "dx",
                      "overrides": null,
                      "scope": 1527,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1519,
                        "name": "ElementaryTypeName",
                        "src": "437:7:12"
                      }
                    ],
                    "id": 1520,
                    "name": "VariableDeclaration",
                    "src": "437:10:12"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "min_dy",
                      "overrides": null,
                      "scope": 1527,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1521,
                        "name": "ElementaryTypeName",
                        "src": "457:7:12"
                      }
                    ],
                    "id": 1522,
                    "name": "VariableDeclaration",
                    "src": "457:14:12"
                  }
                ],
                "id": 1523,
                "name": "ParameterList",
                "src": "391:86:12"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 1527,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1524,
                        "name": "ElementaryTypeName",
                        "src": "496:7:12"
                      }
                    ],
                    "id": 1525,
                    "name": "VariableDeclaration",
                    "src": "496:7:12"
                  }
                ],
                "id": 1526,
                "name": "ParameterList",
                "src": "495:9:12"
              }
            ],
            "id": 1527,
            "name": "FunctionDefinition",
            "src": "374:131:12"
          },
          {
            "attributes": {
              "body": null,
              "documentation": null,
              "functionSelector": "5e0d443f",
              "implemented": false,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "get_dy",
              "overrides": null,
              "scope": 1544,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "i",
                      "overrides": null,
                      "scope": 1538,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int128",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int128",
                          "type": "int128"
                        },
                        "id": 1528,
                        "name": "ElementaryTypeName",
                        "src": "536:6:12"
                      }
                    ],
                    "id": 1529,
                    "name": "VariableDeclaration",
                    "src": "536:8:12"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "j",
                      "overrides": null,
                      "scope": 1538,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int128",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int128",
                          "type": "int128"
                        },
                        "id": 1530,
                        "name": "ElementaryTypeName",
                        "src": "554:6:12"
                      }
                    ],
                    "id": 1531,
                    "name": "VariableDeclaration",
                    "src": "554:8:12"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "dx",
                      "overrides": null,
                      "scope": 1538,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1532,
                        "name": "ElementaryTypeName",
                        "src": "572:7:12"
                      }
                    ],
                    "id": 1533,
                    "name": "VariableDeclaration",
                    "src": "572:10:12"
                  }
                ],
                "id": 1534,
                "name": "ParameterList",
                "src": "526:62:12"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 1538,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1535,
                        "name": "ElementaryTypeName",
                        "src": "612:7:12"
                      }
                    ],
                    "id": 1536,
                    "name": "VariableDeclaration",
                    "src": "612:7:12"
                  }
                ],
                "id": 1537,
                "name": "ParameterList",
                "src": "611:9:12"
              }
            ],
            "id": 1538,
            "name": "FunctionDefinition",
            "src": "511:110:12"
          },
          {
            "attributes": {
              "body": null,
              "documentation": null,
              "functionSelector": "bb7b8b80",
              "implemented": false,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "get_virtual_price",
              "overrides": null,
              "scope": 1544,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1539,
                "name": "ParameterList",
                "src": "653:2:12"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 1543,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1540,
                        "name": "ElementaryTypeName",
                        "src": "679:7:12"
                      }
                    ],
                    "id": 1541,
                    "name": "VariableDeclaration",
                    "src": "679:7:12"
                  }
                ],
                "id": 1542,
                "name": "ParameterList",
                "src": "678:9:12"
              }
            ],
            "id": 1543,
            "name": "FunctionDefinition",
            "src": "627:61:12"
          }
        ],
        "id": 1544,
        "name": "ContractDefinition",
        "src": "57:633:12"
      }
    ],
    "id": 1545,
    "name": "SourceUnit",
    "src": "32:659:12"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.8+commit.0bbfe453.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-02-07T17:50:42.769Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}