{
  "_format": "hh-sol-artifact-1",
  "contractName": "ExampleComputeLiquidityValue",
  "sourceName": "contracts/periphery/examples/ExampleComputeLiquidityValue.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "factory_",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "truePriceTokenA",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "truePriceTokenB",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "liquidityAmount",
          "type": "uint256"
        }
      ],
      "name": "getGasCostOfGetLiquidityValueAfterArbitrageToPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "liquidityAmount",
          "type": "uint256"
        }
      ],
      "name": "getLiquidityValue",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "tokenAAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokenBAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "truePriceTokenA",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "truePriceTokenB",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "liquidityAmount",
          "type": "uint256"
        }
      ],
      "name": "getLiquidityValueAfterArbitrageToPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "tokenAAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokenBAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "truePriceTokenA",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "truePriceTokenB",
          "type": "uint256"
        }
      ],
      "name": "getReservesAfterArbitrage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "reserveA",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveB",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405234801561001057600080fd5b506040516111523803806111528339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b03166110d761007b600039806101a952806101e7528061022a5280610268528061029252506110d76000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633558e94c1461005c57806369a2fcbd146100b157806380caa353146100f3578063c45a015514610147578063d9b7a6e71461016b575b600080fd5b6100986004803603608081101561007257600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356101a1565b6040805192835260208301919091528051918290030190f35b610098600480360360a08110156100c757600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001356101df565b610135600480360360a081101561010957600080fd5b506001600160a01b0381358116916020810135909116906040810135906060810135906080013561021f565b60408051918252519081900360200190f35b61014f610266565b604080516001600160a01b039092168252519081900360200190f35b6100986004803603606081101561018157600080fd5b506001600160a01b0381358116916020810135909116906040013561028a565b6000806101d17f0000000000000000000000000000000000000000000000000000000000000000878787876102c5565b915091505b94509492505050565b6000806102107f0000000000000000000000000000000000000000000000000000000000000000888888888861038a565b915091505b9550959350505050565b6000805a90506102537f0000000000000000000000000000000000000000000000000000000000000000888888888861038a565b505060005a909103979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806102b97f000000000000000000000000000000000000000000000000000000000000000086868661057b565b91509150935093915050565b6000806102d387878761071d565b909250905081158015906102e75750600081115b6103225760405162461bcd60e51b8152600401808060200182810382526029815260200180610fe66029913960400191505060405180910390fd5b600080610331868686866107eb565b91509150806000141561034657506102159050565b81156103675760006103598286866108d6565b94820194909303925061037e565b60006103748285876108d6565b9094039350918201915b50509550959350505050565b6000806000806001600160a01b0316896001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156103d257600080fd5b505afa1580156103e6573d6000803e3d6000fd5b505050506040513d60208110156103fc57600080fd5b50516001600160a01b03161415905060006104188a8a8a6109c6565b905060008261042857600061048e565b816001600160a01b0316637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046157600080fd5b505afa158015610475573d6000803e3d6000fd5b505050506040513d602081101561048b57600080fd5b50515b90506000826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104cb57600080fd5b505afa1580156104df573d6000803e3d6000fd5b505050506040513d60208110156104f557600080fd5b505190508681108015906105095750600087115b6105445760405162461bcd60e51b81526004018080602001828103825260278152602001806110576027913960400191505060405180910390fd5b6000806105548e8e8e8e8e6102c5565b915091506105668282858c8a89610a86565b97509750505050505050965096945050505050565b60008060008061058c88888861071d565b91509150600061059d8989896109c6565b90506000806001600160a01b03168a6001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156105e457600080fd5b505afa1580156105f8573d6000803e3d6000fd5b505050506040513d602081101561060e57600080fd5b50516001600160a01b03161415905060008161062b576000610691565b826001600160a01b0316637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561066457600080fd5b505afa158015610678573d6000803e3d6000fd5b505050506040513d602081101561068e57600080fd5b50515b90506000836001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106ce57600080fd5b505afa1580156106e2573d6000803e3d6000fd5b505050506040513d60208110156106f857600080fd5b5051905061070a8686838c8787610a86565b9750975050505050505094509492505050565b600080600061072c8585610b5f565b50905060008061073d8888886109c6565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561077557600080fd5b505afa158015610789573d6000803e3d6000fd5b505050506040513d606081101561079f57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b03878116908416146107d95780826107dc565b81815b90999098509650505050505050565b600080856107fa858786610c3d565b109150600061080f858563ffffffff610cf816565b9050600061086161085c61082b846103e863ffffffff610cf816565b866108365789610838565b8a5b6108576103e589610849578d61084b565b8c5b9063ffffffff610cf816565b610c3d565b610d61565b905060006103e5856108845761087f876103e863ffffffff610cf816565b610896565b610896886103e863ffffffff610cf816565b8161089d57fe5b049050808210156108b85750600093508392506101d6915050565b6108c8828263ffffffff610ea916565b935050505094509492505050565b60008084116109165760405162461bcd60e51b81526004018080602001828103825260278152602001806110306027913960400191505060405180910390fd5b6000831180156109265750600082115b6109615760405162461bcd60e51b815260040180806020018281038252602481526020018061107e6024913960400191505060405180910390fd5b6000610975856103e563ffffffff610cf816565b90506000610989828563ffffffff610cf816565b905060006109af836109a3886103e863ffffffff610cf816565b9063ffffffff610ef916565b90508082816109ba57fe5b04979650505050505050565b60008060006109d58585610b5f565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080838015610a965750600083115b15610b1e576000610ab061085c8a8a63ffffffff610cf816565b90506000610abd85610d61565b905080821115610b1b57876000610ada848463ffffffff610ea916565b90506000610af3846109a387600563ffffffff610cf816565b90506000610b02848484610c3d565b9050610b148c8263ffffffff610ef916565b9b50505050505b50505b85610b2f898763ffffffff610cf816565b81610b3657fe5b0486610b48898863ffffffff610cf816565b81610b4f57fe5b0491509150965096945050505050565b600080826001600160a01b0316846001600160a01b03161415610bb35760405162461bcd60e51b815260040180806020018281038252602181526020018061100f6021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610610bd3578284610bd6565b83835b90925090506001600160a01b038216610c36576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b9250929050565b6000806000610c4c8686610f48565b9150915060008480610c5a57fe5b868809905082811115610c6e576001820391505b918290039181610c8c57848381610c8157fe5b049350505050610cf1565b848210610ce0576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610ceb838387610f75565b93505050505b9392505050565b6000811580610d1357505080820282828281610d1057fe5b04145b610d5b576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b600081610d7057506000610ea4565b816001600160801b8210610d895760809190911c9060401b5b680100000000000000008210610da45760409190911c9060201b5b6401000000008210610dbb5760209190911c9060101b5b620100008210610dd05760109190911c9060081b5b6101008210610de45760089190911c9060041b5b60108210610df75760049190911c9060021b5b60088210610e035760011b5b6001818581610e0e57fe5b048201901c90506001818581610e2057fe5b048201901c90506001818581610e3257fe5b048201901c90506001818581610e4457fe5b048201901c90506001818581610e5657fe5b048201901c90506001818581610e6857fe5b048201901c90506001818581610e7a57fe5b048201901c90506000818581610e8c57fe5b049050808210610e9c5780610e9e565b815b93505050505b919050565b80820382811115610d5b576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b80820182811015610d5b576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b6000808060001984860990508385029250828103915082811015610f6d576001820391505b509250929050565b60008181038216808381610f8557fe5b049250808581610f9157fe5b049450808160000381610fa057fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fe41737472614172626974726167654c6962726172793a205a45524f5f504149525f524553455256455341737472614c6962726172793a204944454e544943414c5f41444452455353455341737472614c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54436f6d707574654c697175696469747956616c75653a204c49515549444954595f414d4f554e5441737472614c6962726172793a20494e53554646494349454e545f4c4951554944495459a2646970667358221220cd6309d18d7205238a1a8a8d1524d8efc1e1c6a7fd478a5885df06ba63329d8664736f6c63430006060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633558e94c1461005c57806369a2fcbd146100b157806380caa353146100f3578063c45a015514610147578063d9b7a6e71461016b575b600080fd5b6100986004803603608081101561007257600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356101a1565b6040805192835260208301919091528051918290030190f35b610098600480360360a08110156100c757600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001356101df565b610135600480360360a081101561010957600080fd5b506001600160a01b0381358116916020810135909116906040810135906060810135906080013561021f565b60408051918252519081900360200190f35b61014f610266565b604080516001600160a01b039092168252519081900360200190f35b6100986004803603606081101561018157600080fd5b506001600160a01b0381358116916020810135909116906040013561028a565b6000806101d17f0000000000000000000000000000000000000000000000000000000000000000878787876102c5565b915091505b94509492505050565b6000806102107f0000000000000000000000000000000000000000000000000000000000000000888888888861038a565b915091505b9550959350505050565b6000805a90506102537f0000000000000000000000000000000000000000000000000000000000000000888888888861038a565b505060005a909103979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806102b97f000000000000000000000000000000000000000000000000000000000000000086868661057b565b91509150935093915050565b6000806102d387878761071d565b909250905081158015906102e75750600081115b6103225760405162461bcd60e51b8152600401808060200182810382526029815260200180610fe66029913960400191505060405180910390fd5b600080610331868686866107eb565b91509150806000141561034657506102159050565b81156103675760006103598286866108d6565b94820194909303925061037e565b60006103748285876108d6565b9094039350918201915b50509550959350505050565b6000806000806001600160a01b0316896001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156103d257600080fd5b505afa1580156103e6573d6000803e3d6000fd5b505050506040513d60208110156103fc57600080fd5b50516001600160a01b03161415905060006104188a8a8a6109c6565b905060008261042857600061048e565b816001600160a01b0316637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046157600080fd5b505afa158015610475573d6000803e3d6000fd5b505050506040513d602081101561048b57600080fd5b50515b90506000826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104cb57600080fd5b505afa1580156104df573d6000803e3d6000fd5b505050506040513d60208110156104f557600080fd5b505190508681108015906105095750600087115b6105445760405162461bcd60e51b81526004018080602001828103825260278152602001806110576027913960400191505060405180910390fd5b6000806105548e8e8e8e8e6102c5565b915091506105668282858c8a89610a86565b97509750505050505050965096945050505050565b60008060008061058c88888861071d565b91509150600061059d8989896109c6565b90506000806001600160a01b03168a6001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156105e457600080fd5b505afa1580156105f8573d6000803e3d6000fd5b505050506040513d602081101561060e57600080fd5b50516001600160a01b03161415905060008161062b576000610691565b826001600160a01b0316637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561066457600080fd5b505afa158015610678573d6000803e3d6000fd5b505050506040513d602081101561068e57600080fd5b50515b90506000836001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106ce57600080fd5b505afa1580156106e2573d6000803e3d6000fd5b505050506040513d60208110156106f857600080fd5b5051905061070a8686838c8787610a86565b9750975050505050505094509492505050565b600080600061072c8585610b5f565b50905060008061073d8888886109c6565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561077557600080fd5b505afa158015610789573d6000803e3d6000fd5b505050506040513d606081101561079f57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b03878116908416146107d95780826107dc565b81815b90999098509650505050505050565b600080856107fa858786610c3d565b109150600061080f858563ffffffff610cf816565b9050600061086161085c61082b846103e863ffffffff610cf816565b866108365789610838565b8a5b6108576103e589610849578d61084b565b8c5b9063ffffffff610cf816565b610c3d565b610d61565b905060006103e5856108845761087f876103e863ffffffff610cf816565b610896565b610896886103e863ffffffff610cf816565b8161089d57fe5b049050808210156108b85750600093508392506101d6915050565b6108c8828263ffffffff610ea916565b935050505094509492505050565b60008084116109165760405162461bcd60e51b81526004018080602001828103825260278152602001806110306027913960400191505060405180910390fd5b6000831180156109265750600082115b6109615760405162461bcd60e51b815260040180806020018281038252602481526020018061107e6024913960400191505060405180910390fd5b6000610975856103e563ffffffff610cf816565b90506000610989828563ffffffff610cf816565b905060006109af836109a3886103e863ffffffff610cf816565b9063ffffffff610ef916565b90508082816109ba57fe5b04979650505050505050565b60008060006109d58585610b5f565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080838015610a965750600083115b15610b1e576000610ab061085c8a8a63ffffffff610cf816565b90506000610abd85610d61565b905080821115610b1b57876000610ada848463ffffffff610ea916565b90506000610af3846109a387600563ffffffff610cf816565b90506000610b02848484610c3d565b9050610b148c8263ffffffff610ef916565b9b50505050505b50505b85610b2f898763ffffffff610cf816565b81610b3657fe5b0486610b48898863ffffffff610cf816565b81610b4f57fe5b0491509150965096945050505050565b600080826001600160a01b0316846001600160a01b03161415610bb35760405162461bcd60e51b815260040180806020018281038252602181526020018061100f6021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610610bd3578284610bd6565b83835b90925090506001600160a01b038216610c36576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b9250929050565b6000806000610c4c8686610f48565b9150915060008480610c5a57fe5b868809905082811115610c6e576001820391505b918290039181610c8c57848381610c8157fe5b049350505050610cf1565b848210610ce0576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610ceb838387610f75565b93505050505b9392505050565b6000811580610d1357505080820282828281610d1057fe5b04145b610d5b576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b600081610d7057506000610ea4565b816001600160801b8210610d895760809190911c9060401b5b680100000000000000008210610da45760409190911c9060201b5b6401000000008210610dbb5760209190911c9060101b5b620100008210610dd05760109190911c9060081b5b6101008210610de45760089190911c9060041b5b60108210610df75760049190911c9060021b5b60088210610e035760011b5b6001818581610e0e57fe5b048201901c90506001818581610e2057fe5b048201901c90506001818581610e3257fe5b048201901c90506001818581610e4457fe5b048201901c90506001818581610e5657fe5b048201901c90506001818581610e6857fe5b048201901c90506001818581610e7a57fe5b048201901c90506000818581610e8c57fe5b049050808210610e9c5780610e9e565b815b93505050505b919050565b80820382811115610d5b576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b80820182811015610d5b576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b6000808060001984860990508385029250828103915082811015610f6d576001820391505b509250929050565b60008181038216808381610f8557fe5b049250808581610f9157fe5b049450808160000381610fa057fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fe41737472614172626974726167654c6962726172793a205a45524f5f504149525f524553455256455341737472614c6962726172793a204944454e544943414c5f41444452455353455341737472614c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54436f6d707574654c697175696469747956616c75653a204c49515549444954595f414d4f554e5441737472614c6962726172793a20494e53554646494349454e545f4c4951554944495459a2646970667358221220cd6309d18d7205238a1a8a8d1524d8efc1e1c6a7fd478a5885df06ba63329d8664736f6c63430006060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
