{
  "_format": "hh-sol-artifact-1",
  "contractName": "PerpV2Positions",
  "sourceName": "contracts/protocol/integration/lib/PerpV2Positions.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "ISetToken"
        },
        {
          "internalType": "address",
          "name": "_adjustComponent",
          "type": "address"
        },
        {
          "internalType": "int256",
          "name": "_currentExternalPositionUnit",
          "type": "int256"
        },
        {
          "internalType": "int256",
          "name": "_newExternalPositionUnit",
          "type": "int256"
        }
      ],
      "name": "formatAdjustments",
      "outputs": [
        {
          "internalType": "int256[]",
          "name": "",
          "type": "int256[]"
        },
        {
          "internalType": "int256[]",
          "name": "",
          "type": "int256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "ISetToken"
        },
        {
          "internalType": "address[]",
          "name": "_baseTokens",
          "type": "address[]"
        },
        {
          "internalType": "contract IAccountBalance",
          "name": "_perpAccountBalance",
          "type": "IAccountBalance"
        }
      ],
      "name": "getNetQuoteBalance",
      "outputs": [
        {
          "internalType": "int256",
          "name": "netQuoteBalance",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "ISetToken"
        },
        {
          "internalType": "address[]",
          "name": "_baseTokens",
          "type": "address[]"
        },
        {
          "internalType": "contract IAccountBalance",
          "name": "_perpAccountBalance",
          "type": "IAccountBalance"
        }
      ],
      "name": "getPositionNotionalInfo",
      "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": "ISetToken"
        },
        {
          "internalType": "address[]",
          "name": "_baseTokens",
          "type": "address[]"
        },
        {
          "internalType": "contract IAccountBalance",
          "name": "_perpAccountBalance",
          "type": "IAccountBalance"
        }
      ],
      "name": "getPositionUnitInfo",
      "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": "0x610dc7610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c8063271c0fa81461005b5780634e1910b3146100855780638bc70d94146100a5578063ef9f4b9f146100c5575b600080fd5b61006e61006936600461094d565b6100e5565b60405161007c929190610ae1565b60405180910390f35b610098610093366004610992565b610245565b60405161007c9190610b0f565b6100b86100b3366004610992565b61040a565b60405161007c9190610b5d565b6100d86100d3366004610992565b61059a565b60405161007c9190610b9f565b6060806060866001600160a01b03166399d50d5d6040518163ffffffff1660e01b815260040160006040518083038186803b15801561012357600080fd5b505afa158015610137573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261015f91908101906108b8565b90506060815167ffffffffffffffff8111801561017b57600080fd5b506040519080825280602002602001820160405280156101a5578160200160208202803683370190505b5090506060825167ffffffffffffffff811180156101c257600080fd5b506040519080825280602002602001820160405280156101ec578160200160208202803683370190505b509050600080610202858b63ffffffff61065d16565b9150915080156102355761021c888a63ffffffff6106c316565b84838151811061022857fe5b6020026020010181815250505b5091999098509650505050505050565b8151606090818167ffffffffffffffff8111801561026257600080fd5b5060405190808252806020026020018201604052801561029c57816020015b610289610883565b8152602001906001900390816102815790505b50905060005b828110156104005760008682815181106102b857fe5b602002602001015190506040518060600160405280826001600160a01b03168152602001876001600160a01b031663b3bd6e128b856040518363ffffffff1660e01b815260040161030a929190610ac7565b60206040518083038186803b15801561032257600080fd5b505afa158015610336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035a9190610a53565b8152602001876001600160a01b0316637a5b45a08b856040518363ffffffff1660e01b815260040161038d929190610ac7565b60206040518083038186803b1580156103a557600080fd5b505afa1580156103b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dd9190610a53565b8152508383815181106103ec57fe5b6020908102919091010152506001016102a2565b5095945050505050565b60606000610487856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561044a57600080fd5b505afa15801561045e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104829190610a53565b61071b565b90506060610496868686610245565b805190915060608167ffffffffffffffff811180156104b457600080fd5b506040519080825280602002602001820160405280156104ee57816020015b6104db610883565b8152602001906001900390816104d35790505b50905060005b8281101561058e57610504610883565b84828151811061051057fe5b60200260200101519050604051806060016040528082600001516001600160a01b0316815260200161054f88846020015161074490919063ffffffff16565b815260200161056b88846040015161074490919063ffffffff16565b81525083838151811061057a57fe5b6020908102919091010152506001016104f4565b50979650505050505050565b8151600090815b818110156106545761064a846001600160a01b0316637a5b45a0888885815181106105c857fe5b60200260200101516040518363ffffffff1660e01b81526004016105ed929190610ac7565b60206040518083038186803b15801561060557600080fd5b505afa158015610619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063d9190610a53565b849063ffffffff61076e16565b92506001016105a1565b50509392505050565b81516000908190815b818110156106b057846001600160a01b031686828151811061068457fe5b60200260200101516001600160a01b031614156106a8579250600191506106bc9050565b600101610666565b50600019600092509250505b9250929050565b60008183038183128015906106d85750838113155b806106ed57506000831280156106ed57508381135b6107125760405162461bcd60e51b815260040161070990610cb9565b60405180910390fd5b90505b92915050565b6000600160ff1b82106107405760405162461bcd60e51b815260040161070990610c71565b5090565b60006107128261076285670de0b6b3a764000063ffffffff6107b416565b9063ffffffff61081f16565b60008282018183128015906107835750838112155b80610798575060008312801561079857508381125b6107125760405162461bcd60e51b815260040161070990610ba8565b6000826107c357506000610715565b826000191480156107d75750600160ff1b82145b156107f45760405162461bcd60e51b815260040161070990610c2a565b8282028284828161080157fe5b05146107125760405162461bcd60e51b815260040161070990610c2a565b60008161083e5760405162461bcd60e51b815260040161070990610cfd565b816000191480156108525750600160ff1b83145b1561086f5760405162461bcd60e51b815260040161070990610be9565b600082848161087a57fe5b05949350505050565b604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b803561071581610d79565b600060208083850312156108ca578182fd5b825167ffffffffffffffff8111156108e0578283fd5b80840185601f8201126108f1578384fd5b8051915061090661090183610d59565b610d32565b8281528381019082850185850284018601891015610922578687fd5b8693505b8484101561058e57805161093981610d79565b835260019390930192918501918501610926565b60008060008060808587031215610962578283fd5b843561096d81610d79565b9350602085013561097d81610d79565b93969395505050506040820135916060013590565b6000806000606084860312156109a6578283fd5b83356109b181610d79565b925060208481013567ffffffffffffffff8111156109cd578384fd5b80860187601f8201126109de578485fd5b803591506109ee61090183610d59565b82815283810190828501858502840186018b1015610a0a578788fd5b8793505b84841015610a3457610a208b826108ad565b835260019390930192918501918501610a0e565b508096505050505050610a4a85604086016108ad565b90509250925092565b600060208284031215610a64578081fd5b5051919050565b6000815180845260208085019450808401835b83811015610a9a57815187529582019590820190600101610a7e565b509495945050505050565b80516001600160a01b0316825260208082015190830152604090810151910152565b6001600160a01b0392831681529116602082015260400190565b600060408252610af46040830185610a6b565b8281036020840152610b068185610a6b565b95945050505050565b6020808252825182820181905260009190848201906040850190845b81811015610b5157610b3e838551610aa5565b9284019260609290920191600101610b2b565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610b5157610b8c838551610aa5565b9284019260609290920191600101610b79565b90815260200190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526021908201527f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526027908201527f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f604082015266766572666c6f7760c81b606082015260800190565b60208082526028908201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604082015267371034b73a191a9b60c11b606082015260800190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b6020808252818101527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604082015260600190565b60405181810167ffffffffffffffff81118282101715610d5157600080fd5b604052919050565b600067ffffffffffffffff821115610d6f578081fd5b5060209081020190565b6001600160a01b0381168114610d8e57600080fd5b5056fea26469706673582212208c596b50eeb25cb83c557e28829e60aad446b4dc6e739647f9478c0cb31fd8ba64736f6c634300060a0033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c8063271c0fa81461005b5780634e1910b3146100855780638bc70d94146100a5578063ef9f4b9f146100c5575b600080fd5b61006e61006936600461094d565b6100e5565b60405161007c929190610ae1565b60405180910390f35b610098610093366004610992565b610245565b60405161007c9190610b0f565b6100b86100b3366004610992565b61040a565b60405161007c9190610b5d565b6100d86100d3366004610992565b61059a565b60405161007c9190610b9f565b6060806060866001600160a01b03166399d50d5d6040518163ffffffff1660e01b815260040160006040518083038186803b15801561012357600080fd5b505afa158015610137573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261015f91908101906108b8565b90506060815167ffffffffffffffff8111801561017b57600080fd5b506040519080825280602002602001820160405280156101a5578160200160208202803683370190505b5090506060825167ffffffffffffffff811180156101c257600080fd5b506040519080825280602002602001820160405280156101ec578160200160208202803683370190505b509050600080610202858b63ffffffff61065d16565b9150915080156102355761021c888a63ffffffff6106c316565b84838151811061022857fe5b6020026020010181815250505b5091999098509650505050505050565b8151606090818167ffffffffffffffff8111801561026257600080fd5b5060405190808252806020026020018201604052801561029c57816020015b610289610883565b8152602001906001900390816102815790505b50905060005b828110156104005760008682815181106102b857fe5b602002602001015190506040518060600160405280826001600160a01b03168152602001876001600160a01b031663b3bd6e128b856040518363ffffffff1660e01b815260040161030a929190610ac7565b60206040518083038186803b15801561032257600080fd5b505afa158015610336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035a9190610a53565b8152602001876001600160a01b0316637a5b45a08b856040518363ffffffff1660e01b815260040161038d929190610ac7565b60206040518083038186803b1580156103a557600080fd5b505afa1580156103b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dd9190610a53565b8152508383815181106103ec57fe5b6020908102919091010152506001016102a2565b5095945050505050565b60606000610487856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561044a57600080fd5b505afa15801561045e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104829190610a53565b61071b565b90506060610496868686610245565b805190915060608167ffffffffffffffff811180156104b457600080fd5b506040519080825280602002602001820160405280156104ee57816020015b6104db610883565b8152602001906001900390816104d35790505b50905060005b8281101561058e57610504610883565b84828151811061051057fe5b60200260200101519050604051806060016040528082600001516001600160a01b0316815260200161054f88846020015161074490919063ffffffff16565b815260200161056b88846040015161074490919063ffffffff16565b81525083838151811061057a57fe5b6020908102919091010152506001016104f4565b50979650505050505050565b8151600090815b818110156106545761064a846001600160a01b0316637a5b45a0888885815181106105c857fe5b60200260200101516040518363ffffffff1660e01b81526004016105ed929190610ac7565b60206040518083038186803b15801561060557600080fd5b505afa158015610619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063d9190610a53565b849063ffffffff61076e16565b92506001016105a1565b50509392505050565b81516000908190815b818110156106b057846001600160a01b031686828151811061068457fe5b60200260200101516001600160a01b031614156106a8579250600191506106bc9050565b600101610666565b50600019600092509250505b9250929050565b60008183038183128015906106d85750838113155b806106ed57506000831280156106ed57508381135b6107125760405162461bcd60e51b815260040161070990610cb9565b60405180910390fd5b90505b92915050565b6000600160ff1b82106107405760405162461bcd60e51b815260040161070990610c71565b5090565b60006107128261076285670de0b6b3a764000063ffffffff6107b416565b9063ffffffff61081f16565b60008282018183128015906107835750838112155b80610798575060008312801561079857508381125b6107125760405162461bcd60e51b815260040161070990610ba8565b6000826107c357506000610715565b826000191480156107d75750600160ff1b82145b156107f45760405162461bcd60e51b815260040161070990610c2a565b8282028284828161080157fe5b05146107125760405162461bcd60e51b815260040161070990610c2a565b60008161083e5760405162461bcd60e51b815260040161070990610cfd565b816000191480156108525750600160ff1b83145b1561086f5760405162461bcd60e51b815260040161070990610be9565b600082848161087a57fe5b05949350505050565b604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b803561071581610d79565b600060208083850312156108ca578182fd5b825167ffffffffffffffff8111156108e0578283fd5b80840185601f8201126108f1578384fd5b8051915061090661090183610d59565b610d32565b8281528381019082850185850284018601891015610922578687fd5b8693505b8484101561058e57805161093981610d79565b835260019390930192918501918501610926565b60008060008060808587031215610962578283fd5b843561096d81610d79565b9350602085013561097d81610d79565b93969395505050506040820135916060013590565b6000806000606084860312156109a6578283fd5b83356109b181610d79565b925060208481013567ffffffffffffffff8111156109cd578384fd5b80860187601f8201126109de578485fd5b803591506109ee61090183610d59565b82815283810190828501858502840186018b1015610a0a578788fd5b8793505b84841015610a3457610a208b826108ad565b835260019390930192918501918501610a0e565b508096505050505050610a4a85604086016108ad565b90509250925092565b600060208284031215610a64578081fd5b5051919050565b6000815180845260208085019450808401835b83811015610a9a57815187529582019590820190600101610a7e565b509495945050505050565b80516001600160a01b0316825260208082015190830152604090810151910152565b6001600160a01b0392831681529116602082015260400190565b600060408252610af46040830185610a6b565b8281036020840152610b068185610a6b565b95945050505050565b6020808252825182820181905260009190848201906040850190845b81811015610b5157610b3e838551610aa5565b9284019260609290920191600101610b2b565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610b5157610b8c838551610aa5565b9284019260609290920191600101610b79565b90815260200190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526021908201527f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526027908201527f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f604082015266766572666c6f7760c81b606082015260800190565b60208082526028908201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604082015267371034b73a191a9b60c11b606082015260800190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b6020808252818101527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604082015260600190565b60405181810167ffffffffffffffff81118282101715610d5157600080fd5b604052919050565b600067ffffffffffffffff821115610d6f578081fd5b5060209081020190565b6001600160a01b0381168114610d8e57600080fd5b5056fea26469706673582212208c596b50eeb25cb83c557e28829e60aad446b4dc6e739647f9478c0cb31fd8ba64736f6c634300060a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
