{
  "_format": "hh-sol-artifact-1",
  "contractName": "PositionV2Mock",
  "sourceName": "contracts/mocks/PositionV2Mock.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_setTotalSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_componentPreviousBalance",
          "type": "uint256"
        }
      ],
      "name": "testCalculateAndEditDefaultPosition",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_setTokenSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_preTotalNotional",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_postTotalNotional",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_prePositionUnit",
          "type": "uint256"
        }
      ],
      "name": "testCalculateDefaultEditPositionUnit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_newUnit",
          "type": "uint256"
        }
      ],
      "name": "testEditDefaultPosition",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_module",
          "type": "address"
        },
        {
          "internalType": "int256",
          "name": "_newUnit",
          "type": "int256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "testEditExternalPosition",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_setTokenSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_totalNotional",
          "type": "uint256"
        }
      ],
      "name": "testGetDefaultPositionUnit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_setTokenSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_positionUnit",
          "type": "uint256"
        }
      ],
      "name": "testGetDefaultTotalNotional",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        }
      ],
      "name": "testGetDefaultTrackedBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        }
      ],
      "name": "testHasDefaultPosition",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        }
      ],
      "name": "testHasExternalPosition",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_unit",
          "type": "uint256"
        }
      ],
      "name": "testHasSufficientDefaultUnits",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_module",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_unit",
          "type": "uint256"
        }
      ],
      "name": "testHasSufficientExternalUnits",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610baf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063a6c10f7c11610071578063a6c10f7c14610152578063a8dccfa414610165578063ad91431114610185578063c4d66de814610198578063fa688e3d146101ab578063fcab8797146101be576100b4565b8063068f42eb146100b9578063088f08bc146100e25780630cffd362146100f757806314d0d5ef1461011957806326517c481461012c5780634699427b1461013f575b600080fd5b6100cc6100c736600461077d565b6101d1565b6040516100d991906109fe565b60405180910390f35b6100f56100f03660046107b5565b610264565b005b61010a610105366004610922565b6102da565b6040516100d993929190610b30565b6100cc61012736600461077d565b61037c565b6100cc61013a3660046108e2565b6103b8565b6100f561014d3660046108e2565b61044e565b6100cc610160366004610892565b6104be565b61017861017336600461097f565b610557565b6040516100d99190610b19565b61017861019336600461097f565b6105e3565b6100f56101a6366004610761565b61061f565b6101786101b93660046109cd565b610675565b6101786101cc36600461077d565b610705565b60405163015c5a0f60e21b815260009073__$13ece96e109ecca4127c3a43d4737092d3$__90630571683c9061020d9086908690600401610a09565b60206040518083038186803b15801561022557600080fd5b505af4158015610239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025d9190610741565b9392505050565b60405163afc4d07360e01b815273__$13ece96e109ecca4127c3a43d4737092d3$__9063afc4d073906102a39088908890889088908890600401610a23565b60006040518083038186803b1580156102bb57600080fd5b505af41580156102cf573d6000803e3d6000fd5b505050505050505050565b600080600073__$13ece96e109ecca4127c3a43d4737092d3$__63d4a56b79888888886040518563ffffffff1660e01b815260040161031c9493929190610af0565b60606040518083038186803b15801561033457600080fd5b505af4158015610348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036c91906109a0565b9250925092509450945094915050565b6040516303b9474360e41b815260009073__$13ece96e109ecca4127c3a43d4737092d3$__90633b9474309061020d9086908690600401610a09565b6040516315520ea560e11b815260009073__$13ece96e109ecca4127c3a43d4737092d3$__90632aa41d4a906103f690879087908790600401610acc565b60206040518083038186803b15801561040e57600080fd5b505af4158015610422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104469190610741565b949350505050565b60405163054c68df60e31b815273__$13ece96e109ecca4127c3a43d4737092d3$__90632a6346f89061048990869086908690600401610acc565b60006040518083038186803b1580156104a157600080fd5b505af41580156104b5573d6000803e3d6000fd5b50505050505050565b6040516325054fe960e01b815260009073__$13ece96e109ecca4127c3a43d4737092d3$__906325054fe9906104fe908890889088908890600401610aa2565b60206040518083038186803b15801561051657600080fd5b505af415801561052a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e9190610741565b95945050505050565b6040516321b7eacf60e21b815260009073__$13ece96e109ecca4127c3a43d4737092d3$__906386dfab3c906105939086908690600401610b22565b60206040518083038186803b1580156105ab57600080fd5b505af41580156105bf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025d9190610967565b60405163d3d9174b60e01b815260009073__$13ece96e109ecca4127c3a43d4737092d3$__9063d3d9174b906105939086908690600401610b22565b806001600160a01b0316630ffe0f1e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561065a57600080fd5b505af115801561066e573d6000803e3d6000fd5b5050505050565b60405163c763739560e01b815260009073__$13ece96e109ecca4127c3a43d4737092d3$__9063c7637395906106b5908890889088908890600401610b46565b60206040518083038186803b1580156106cd57600080fd5b505af41580156106e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e9190610967565b604051631f73078b60e21b815260009073__$13ece96e109ecca4127c3a43d4737092d3$__90637dcc1e2c906105939086908690600401610a09565b600060208284031215610752578081fd5b8151801515811461025d578182fd5b600060208284031215610772578081fd5b813561025d81610b61565b6000806040838503121561078f578081fd5b823561079a81610b61565b915060208301356107aa81610b61565b809150509250929050565b600080600080600060a086880312156107cc578081fd5b85356107d781610b61565b94506020868101356107e881610b61565b945060408701356107f881610b61565b935060608701359250608087013567ffffffffffffffff8082111561081b578384fd5b8189018a601f82011261082c578485fd5b803592508183111561083c578485fd5b604051601f8401601f191681018501838111828210171561085b578687fd5b60405283815281840185018c1015610871578586fd5b83858301868301378585858301015280955050505050509295509295909350565b600080600080608085870312156108a7578384fd5b84356108b281610b61565b935060208501356108c281610b61565b925060408501356108d281610b61565b9396929550929360600135925050565b6000806000606084860312156108f6578283fd5b833561090181610b61565b9250602084013561091181610b61565b929592945050506040919091013590565b60008060008060808587031215610937578384fd5b843561094281610b61565b9350602085013561095281610b61565b93969395505050506040820135916060013590565b600060208284031215610978578081fd5b5051919050565b60008060408385031215610991578182fd5b50508035926020909101359150565b6000806000606084860312156109b4578283fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156109e2578384fd5b5050823594602084013594506040840135936060013592509050565b901515815260200190565b6001600160a01b0392831681529116602082015260400190565b600060018060a01b038088168352602081881681850152818716604085015285606085015260a06080850152845191508160a0850152825b82811015610a775785810182015185820160c001528101610a5b565b82811115610a88578360c084870101525b5050601f01601f19169190910160c0019695505050505050565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b6001600160a01b0381168114610b7657600080fd5b5056fea264697066735822122033e16c659cf735242d52306a299f95dd6a5863972dac271c10d4130c4dc8a46864736f6c634300060a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063a6c10f7c11610071578063a6c10f7c14610152578063a8dccfa414610165578063ad91431114610185578063c4d66de814610198578063fa688e3d146101ab578063fcab8797146101be576100b4565b8063068f42eb146100b9578063088f08bc146100e25780630cffd362146100f757806314d0d5ef1461011957806326517c481461012c5780634699427b1461013f575b600080fd5b6100cc6100c736600461077d565b6101d1565b6040516100d991906109fe565b60405180910390f35b6100f56100f03660046107b5565b610264565b005b61010a610105366004610922565b6102da565b6040516100d993929190610b30565b6100cc61012736600461077d565b61037c565b6100cc61013a3660046108e2565b6103b8565b6100f561014d3660046108e2565b61044e565b6100cc610160366004610892565b6104be565b61017861017336600461097f565b610557565b6040516100d99190610b19565b61017861019336600461097f565b6105e3565b6100f56101a6366004610761565b61061f565b6101786101b93660046109cd565b610675565b6101786101cc36600461077d565b610705565b60405163015c5a0f60e21b815260009073__$13ece96e109ecca4127c3a43d4737092d3$__90630571683c9061020d9086908690600401610a09565b60206040518083038186803b15801561022557600080fd5b505af4158015610239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025d9190610741565b9392505050565b60405163afc4d07360e01b815273__$13ece96e109ecca4127c3a43d4737092d3$__9063afc4d073906102a39088908890889088908890600401610a23565b60006040518083038186803b1580156102bb57600080fd5b505af41580156102cf573d6000803e3d6000fd5b505050505050505050565b600080600073__$13ece96e109ecca4127c3a43d4737092d3$__63d4a56b79888888886040518563ffffffff1660e01b815260040161031c9493929190610af0565b60606040518083038186803b15801561033457600080fd5b505af4158015610348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036c91906109a0565b9250925092509450945094915050565b6040516303b9474360e41b815260009073__$13ece96e109ecca4127c3a43d4737092d3$__90633b9474309061020d9086908690600401610a09565b6040516315520ea560e11b815260009073__$13ece96e109ecca4127c3a43d4737092d3$__90632aa41d4a906103f690879087908790600401610acc565b60206040518083038186803b15801561040e57600080fd5b505af4158015610422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104469190610741565b949350505050565b60405163054c68df60e31b815273__$13ece96e109ecca4127c3a43d4737092d3$__90632a6346f89061048990869086908690600401610acc565b60006040518083038186803b1580156104a157600080fd5b505af41580156104b5573d6000803e3d6000fd5b50505050505050565b6040516325054fe960e01b815260009073__$13ece96e109ecca4127c3a43d4737092d3$__906325054fe9906104fe908890889088908890600401610aa2565b60206040518083038186803b15801561051657600080fd5b505af415801561052a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e9190610741565b95945050505050565b6040516321b7eacf60e21b815260009073__$13ece96e109ecca4127c3a43d4737092d3$__906386dfab3c906105939086908690600401610b22565b60206040518083038186803b1580156105ab57600080fd5b505af41580156105bf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025d9190610967565b60405163d3d9174b60e01b815260009073__$13ece96e109ecca4127c3a43d4737092d3$__9063d3d9174b906105939086908690600401610b22565b806001600160a01b0316630ffe0f1e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561065a57600080fd5b505af115801561066e573d6000803e3d6000fd5b5050505050565b60405163c763739560e01b815260009073__$13ece96e109ecca4127c3a43d4737092d3$__9063c7637395906106b5908890889088908890600401610b46565b60206040518083038186803b1580156106cd57600080fd5b505af41580156106e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e9190610967565b604051631f73078b60e21b815260009073__$13ece96e109ecca4127c3a43d4737092d3$__90637dcc1e2c906105939086908690600401610a09565b600060208284031215610752578081fd5b8151801515811461025d578182fd5b600060208284031215610772578081fd5b813561025d81610b61565b6000806040838503121561078f578081fd5b823561079a81610b61565b915060208301356107aa81610b61565b809150509250929050565b600080600080600060a086880312156107cc578081fd5b85356107d781610b61565b94506020868101356107e881610b61565b945060408701356107f881610b61565b935060608701359250608087013567ffffffffffffffff8082111561081b578384fd5b8189018a601f82011261082c578485fd5b803592508183111561083c578485fd5b604051601f8401601f191681018501838111828210171561085b578687fd5b60405283815281840185018c1015610871578586fd5b83858301868301378585858301015280955050505050509295509295909350565b600080600080608085870312156108a7578384fd5b84356108b281610b61565b935060208501356108c281610b61565b925060408501356108d281610b61565b9396929550929360600135925050565b6000806000606084860312156108f6578283fd5b833561090181610b61565b9250602084013561091181610b61565b929592945050506040919091013590565b60008060008060808587031215610937578384fd5b843561094281610b61565b9350602085013561095281610b61565b93969395505050506040820135916060013590565b600060208284031215610978578081fd5b5051919050565b60008060408385031215610991578182fd5b50508035926020909101359150565b6000806000606084860312156109b4578283fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156109e2578384fd5b5050823594602084013594506040840135936060013592509050565b901515815260200190565b6001600160a01b0392831681529116602082015260400190565b600060018060a01b038088168352602081881681850152818716604085015285606085015260a06080850152845191508160a0850152825b82811015610a775785810182015185820160c001528101610a5b565b82811115610a88578360c084870101525b5050601f01601f19169190910160c0019695505050505050565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b6001600160a01b0381168114610b7657600080fd5b5056fea264697066735822122033e16c659cf735242d52306a299f95dd6a5863972dac271c10d4130c4dc8a46864736f6c634300060a0033",
  "linkReferences": {
    "contracts/protocol/lib/PositionV2.sol": {
      "PositionV2": [
        {
          "length": 20,
          "start": 515
        },
        {
          "length": 20,
          "start": 659
        },
        {
          "length": 20,
          "start": 769
        },
        {
          "length": 20,
          "start": 942
        },
        {
          "length": 20,
          "start": 1002
        },
        {
          "length": 20,
          "start": 1149
        },
        {
          "length": 20,
          "start": 1264
        },
        {
          "length": 20,
          "start": 1417
        },
        {
          "length": 20,
          "start": 1557
        },
        {
          "length": 20,
          "start": 1703
        },
        {
          "length": 20,
          "start": 1847
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/protocol/lib/PositionV2.sol": {
      "PositionV2": [
        {
          "length": 20,
          "start": 483
        },
        {
          "length": 20,
          "start": 627
        },
        {
          "length": 20,
          "start": 737
        },
        {
          "length": 20,
          "start": 910
        },
        {
          "length": 20,
          "start": 970
        },
        {
          "length": 20,
          "start": 1117
        },
        {
          "length": 20,
          "start": 1232
        },
        {
          "length": 20,
          "start": 1385
        },
        {
          "length": 20,
          "start": 1525
        },
        {
          "length": 20,
          "start": 1671
        },
        {
          "length": 20,
          "start": 1815
        }
      ]
    }
  }
}
