{
  "_format": "hh-sol-artifact-1",
  "contractName": "PerpV2PositionsMock",
  "sourceName": "contracts/mocks/protocol/integration/lib/PerpV2PositionsMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        }
      ],
      "name": "initializeModuleOnSet",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_adjustmentComponent",
          "type": "address"
        },
        {
          "internalType": "int256",
          "name": "_currentExternalPositionUnit",
          "type": "int256"
        },
        {
          "internalType": "int256",
          "name": "_newExternalPositionUnit",
          "type": "int256"
        }
      ],
      "name": "testFormatAdjustments",
      "outputs": [
        {
          "internalType": "int256[]",
          "name": "",
          "type": "int256[]"
        },
        {
          "internalType": "int256[]",
          "name": "",
          "type": "int256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "_baseTokens",
          "type": "address[]"
        },
        {
          "internalType": "contract IAccountBalance",
          "name": "_perpAccountBalance",
          "type": "address"
        }
      ],
      "name": "testGetNetQuoteBalance",
      "outputs": [
        {
          "internalType": "int256",
          "name": "netQuoteBalance",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "_baseTokens",
          "type": "address[]"
        },
        {
          "internalType": "contract IAccountBalance",
          "name": "_perpAccountBalance",
          "type": "address"
        }
      ],
      "name": "testGetPositionNotionalInfo",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "baseToken",
              "type": "address"
            },
            {
              "internalType": "int256",
              "name": "baseBalance",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quoteBalance",
              "type": "int256"
            }
          ],
          "internalType": "struct PerpV2Positions.PositionNotionalInfo[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "_baseTokens",
          "type": "address[]"
        },
        {
          "internalType": "contract IAccountBalance",
          "name": "_perpAccountBalance",
          "type": "address"
        }
      ],
      "name": "testGetPositionUnitInfo",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "baseToken",
              "type": "address"
            },
            {
              "internalType": "int256",
              "name": "baseUnit",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quoteUnit",
              "type": "int256"
            }
          ],
          "internalType": "struct PerpV2Positions.PositionUnitInfo[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610896806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80631e24a3fc1461005c57806324ebbaf1146100855780632fa4e244146100a5578063d6409d94146100c5578063e08789dc146100da575b600080fd5b61006f61006a366004610575565b6100fb565b60405161007c91906107f8565b60405180910390f35b610098610093366004610575565b610191565b60405161007c91906106d8565b6100b86100b3366004610575565b610223565b60405161007c9190610726565b6100d86100d336600461050d565b610261565b005b6100ed6100e8366004610530565b6102b7565b60405161007c9291906106aa565b60405163ef9f4b9f60e01b815260009073__$2aa9f85261a450f4a764d4c5a0e33a5378$__9063ef9f4b9f9061013990879087908790600401610791565b60206040518083038186803b15801561015157600080fd5b505af4158015610165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101899190610636565b949350505050565b604051634e1910b360e01b815260609073__$2aa9f85261a450f4a764d4c5a0e33a5378$__90634e1910b3906101cf90879087908790600401610791565b60006040518083038186803b1580156101e757600080fd5b505af41580156101fb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261018991908101906104da565b6040516322f1c36560e21b815260609073__$2aa9f85261a450f4a764d4c5a0e33a5378$__90638bc70d94906101cf90879087908790600401610791565b806001600160a01b0316630ffe0f1e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b5050505050565b60608073__$2aa9f85261a450f4a764d4c5a0e33a5378$__63271c0fa8878787876040518563ffffffff1660e01b81526004016102f79493929190610768565b60006040518083038186803b15801561030f57600080fd5b505af4158015610323573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261034b9190810190610479565b9150915094509492505050565b803561036381610848565b92915050565b600082601f830112610379578081fd5b815161038c61038782610828565b610801565b8181529150602080830190848101818402860182018710156103ad57600080fd5b60005b848110156103cc578151845292820192908201906001016103b0565b505050505092915050565b600082601f8301126103e7578081fd5b81516103f561038782610828565b818152915060208083019084810160608085028701830188101561041857600080fd5b6000805b8681101561046c5782848b031215610432578182fd5b61043b83610801565b845161044681610848565b81528486015186820152604080860151908201528652948401949282019260010161041c565b5050505050505092915050565b6000806040838503121561048b578182fd5b825167ffffffffffffffff808211156104a2578384fd5b6104ae86838701610369565b935060208501519150808211156104c3578283fd5b506104d085828601610369565b9150509250929050565b6000602082840312156104eb578081fd5b815167ffffffffffffffff811115610501578182fd5b610189848285016103d7565b60006020828403121561051e578081fd5b813561052981610848565b9392505050565b60008060008060808587031215610545578182fd5b843561055081610848565b9350602085013561056081610848565b93969395505050506040820135916060013590565b600080600060608486031215610589578283fd5b833561059481610848565b925060208481013567ffffffffffffffff8111156105b0578384fd5b80860187601f8201126105c1578485fd5b803591506105d161038783610828565b82815283810190828501858502840186018b10156105ed578788fd5b8793505b84841015610617576106038b82610358565b8352600193909301929185019185016105f1565b50809650505050505061062d8560408601610358565b90509250925092565b600060208284031215610647578081fd5b5051919050565b6000815180845260208085019450808401835b8381101561067d57815187529582019590820190600101610661565b509495945050505050565b80516001600160a01b0316825260208082015190830152604090810151910152565b6000604082526106bd604083018561064e565b82810360208401526106cf818561064e565b95945050505050565b6020808252825182820181905260009190848201906040850190845b8181101561071a57610707838551610688565b92840192606092909201916001016106f4565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561071a57610755838551610688565b9284019260609290920191600101610742565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b038481168252606060208084018290528551918401829052600092868201929091906080860190855b818110156107df5785518516835294830194918301916001016107c1565b5050809450505080851660408501525050949350505050565b90815260200190565b60405181810167ffffffffffffffff8111828210171561082057600080fd5b604052919050565b600067ffffffffffffffff82111561083e578081fd5b5060209081020190565b6001600160a01b038116811461085d57600080fd5b5056fea2646970667358221220670538c9394c76ebb23292e30adc956683dd23814c474bfbfd32a8f529d3377f64736f6c634300060a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80631e24a3fc1461005c57806324ebbaf1146100855780632fa4e244146100a5578063d6409d94146100c5578063e08789dc146100da575b600080fd5b61006f61006a366004610575565b6100fb565b60405161007c91906107f8565b60405180910390f35b610098610093366004610575565b610191565b60405161007c91906106d8565b6100b86100b3366004610575565b610223565b60405161007c9190610726565b6100d86100d336600461050d565b610261565b005b6100ed6100e8366004610530565b6102b7565b60405161007c9291906106aa565b60405163ef9f4b9f60e01b815260009073__$2aa9f85261a450f4a764d4c5a0e33a5378$__9063ef9f4b9f9061013990879087908790600401610791565b60206040518083038186803b15801561015157600080fd5b505af4158015610165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101899190610636565b949350505050565b604051634e1910b360e01b815260609073__$2aa9f85261a450f4a764d4c5a0e33a5378$__90634e1910b3906101cf90879087908790600401610791565b60006040518083038186803b1580156101e757600080fd5b505af41580156101fb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261018991908101906104da565b6040516322f1c36560e21b815260609073__$2aa9f85261a450f4a764d4c5a0e33a5378$__90638bc70d94906101cf90879087908790600401610791565b806001600160a01b0316630ffe0f1e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b5050505050565b60608073__$2aa9f85261a450f4a764d4c5a0e33a5378$__63271c0fa8878787876040518563ffffffff1660e01b81526004016102f79493929190610768565b60006040518083038186803b15801561030f57600080fd5b505af4158015610323573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261034b9190810190610479565b9150915094509492505050565b803561036381610848565b92915050565b600082601f830112610379578081fd5b815161038c61038782610828565b610801565b8181529150602080830190848101818402860182018710156103ad57600080fd5b60005b848110156103cc578151845292820192908201906001016103b0565b505050505092915050565b600082601f8301126103e7578081fd5b81516103f561038782610828565b818152915060208083019084810160608085028701830188101561041857600080fd5b6000805b8681101561046c5782848b031215610432578182fd5b61043b83610801565b845161044681610848565b81528486015186820152604080860151908201528652948401949282019260010161041c565b5050505050505092915050565b6000806040838503121561048b578182fd5b825167ffffffffffffffff808211156104a2578384fd5b6104ae86838701610369565b935060208501519150808211156104c3578283fd5b506104d085828601610369565b9150509250929050565b6000602082840312156104eb578081fd5b815167ffffffffffffffff811115610501578182fd5b610189848285016103d7565b60006020828403121561051e578081fd5b813561052981610848565b9392505050565b60008060008060808587031215610545578182fd5b843561055081610848565b9350602085013561056081610848565b93969395505050506040820135916060013590565b600080600060608486031215610589578283fd5b833561059481610848565b925060208481013567ffffffffffffffff8111156105b0578384fd5b80860187601f8201126105c1578485fd5b803591506105d161038783610828565b82815283810190828501858502840186018b10156105ed578788fd5b8793505b84841015610617576106038b82610358565b8352600193909301929185019185016105f1565b50809650505050505061062d8560408601610358565b90509250925092565b600060208284031215610647578081fd5b5051919050565b6000815180845260208085019450808401835b8381101561067d57815187529582019590820190600101610661565b509495945050505050565b80516001600160a01b0316825260208082015190830152604090810151910152565b6000604082526106bd604083018561064e565b82810360208401526106cf818561064e565b95945050505050565b6020808252825182820181905260009190848201906040850190845b8181101561071a57610707838551610688565b92840192606092909201916001016106f4565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561071a57610755838551610688565b9284019260609290920191600101610742565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b038481168252606060208084018290528551918401829052600092868201929091906080860190855b818110156107df5785518516835294830194918301916001016107c1565b5050809450505080851660408501525050949350505050565b90815260200190565b60405181810167ffffffffffffffff8111828210171561082057600080fd5b604052919050565b600067ffffffffffffffff82111561083e578081fd5b5060209081020190565b6001600160a01b038116811461085d57600080fd5b5056fea2646970667358221220670538c9394c76ebb23292e30adc956683dd23814c474bfbfd32a8f529d3377f64736f6c634300060a0033",
  "linkReferences": {
    "contracts/protocol/integration/lib/PerpV2Positions.sol": {
      "PerpV2Positions": [
        {
          "length": 20,
          "start": 301
        },
        {
          "length": 20,
          "start": 451
        },
        {
          "length": 20,
          "start": 597
        },
        {
          "length": 20,
          "start": 732
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/protocol/integration/lib/PerpV2Positions.sol": {
      "PerpV2Positions": [
        {
          "length": 20,
          "start": 269
        },
        {
          "length": 20,
          "start": 419
        },
        {
          "length": 20,
          "start": 565
        },
        {
          "length": 20,
          "start": 700
        }
      ]
    }
  }
}
