1 line
56 KiB
JSON
1 line
56 KiB
JSON
{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchFetchAllData","inputs":[{"name":"request","type":"tuple","internalType":"struct DataFetcher.BatchRequest","components":[{"name":"v2Pools","type":"address[]","internalType":"address[]"},{"name":"v3Pools","type":"address[]","internalType":"address[]"}]}],"outputs":[{"name":"response","type":"tuple","internalType":"struct DataFetcher.BatchResponse","components":[{"name":"v2Data","type":"tuple[]","internalType":"struct DataFetcher.V2PoolData[]","components":[{"name":"pool","type":"address","internalType":"address"},{"name":"token0","type":"address","internalType":"address"},{"name":"token1","type":"address","internalType":"address"},{"name":"reserve0","type":"uint112","internalType":"uint112"},{"name":"reserve1","type":"uint112","internalType":"uint112"},{"name":"blockTimestampLast","type":"uint32","internalType":"uint32"},{"name":"price0","type":"uint256","internalType":"uint256"},{"name":"price1","type":"uint256","internalType":"uint256"}]},{"name":"v3Data","type":"tuple[]","internalType":"struct DataFetcher.V3PoolData[]","components":[{"name":"pool","type":"address","internalType":"address"},{"name":"token0","type":"address","internalType":"address"},{"name":"token1","type":"address","internalType":"address"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"tick","type":"int24","internalType":"int24"},{"name":"liquidity","type":"uint128","internalType":"uint128"},{"name":"price0","type":"uint256","internalType":"uint256"},{"name":"price1","type":"uint256","internalType":"uint256"}]},{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"batchFetchV2Data","inputs":[{"name":"pools","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"poolData","type":"tuple[]","internalType":"struct DataFetcher.V2PoolData[]","components":[{"name":"pool","type":"address","internalType":"address"},{"name":"token0","type":"address","internalType":"address"},{"name":"token1","type":"address","internalType":"address"},{"name":"reserve0","type":"uint112","internalType":"uint112"},{"name":"reserve1","type":"uint112","internalType":"uint112"},{"name":"blockTimestampLast","type":"uint32","internalType":"uint32"},{"name":"price0","type":"uint256","internalType":"uint256"},{"name":"price1","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"batchFetchV3Data","inputs":[{"name":"pools","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"poolData","type":"tuple[]","internalType":"struct DataFetcher.V3PoolData[]","components":[{"name":"pool","type":"address","internalType":"address"},{"name":"token0","type":"address","internalType":"address"},{"name":"token1","type":"address","internalType":"address"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"tick","type":"int24","internalType":"int24"},{"name":"liquidity","type":"uint128","internalType":"uint128"},{"name":"price0","type":"uint256","internalType":"uint256"},{"name":"price1","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getAmountOut","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"reserveIn","type":"uint256","internalType":"uint256"},{"name":"reserveOut","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isValidV2Pool","inputs":[{"name":"pool","type":"address","internalType":"address"}],"outputs":[{"name":"isValid","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isValidV3Pool","inputs":[{"name":"pool","type":"address","internalType":"address"}],"outputs":[{"name":"isValid","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DataFetched","inputs":[{"name":"blockNumber","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"v2PoolCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"v3PoolCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60808060405234610078573315610063575f8054336001600160a01b03198216811783556040519290916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a361102b908161007d8239f35b631e4fbdf760e01b81525f6004820152602490fd5b5f80fdfe6080604081815260049182361015610015575f80fd5b5f3560e01c908163054d50d41461051a5750806308586b84146104815780632b0bad3f14610415578063715018a6146103be57806371ac5931146101a45780638da5cb5b1461017d578063b72924821461014d578063eed58877146101145763f2fde38b14610082575f80fd5b34610110576020366003190112610110576001600160a01b03823581811693919290849003610110576100b3611000565b83156100fa5750505f54826bffffffffffffffffffffffff60a01b8216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b905f6024925191631e4fbdf760e01b8352820152fd5b5f80fd5b5090346101105760203660031901126101105735906001600160a01b038216820361011057610144602092610b4e565b90519015158152f35b5090346101105760203660031901126101105735906001600160a01b038216820361011057610144602092610a91565b5034610110575f366003190112610110575f5490516001600160a01b039091168152602090f35b5090346101105760209060031982813601126101105781359367ffffffffffffffff80861161011057818685019387360301126101105781519360808501918211858310176103ab57508152606083528383019060608252808401945f8652602460608601975f895261022161021a87806109d6565b9050610897565b8752019061023961023283876109d6565b9050610987565b84525f5b61024786806109d6565b9050811015610295578061028e8161027b61027661027160019661026b8d806109d6565b906108e6565b61090a565b610bd2565b8a5190610288838361091e565b5261091e565b500161023d565b50849086888a5f5b6102a787876109d6565b90508110156102e457806102dd816102d06102cb61027160019661026b8e8e6109d6565b610d86565b8c5190610288838361091e565b500161029d565b50868886610307899796974387524286526102ff83806109d6565b9390506109d6565b90508351918252868201527fc973a5db1e1c754d6a440aa959524bac785dad6e5e78c66a3bb720965bb4fae4834392a281519480865260a0860196519660808288015287518091528160c088019801915f5b82811061038e57505050509461037d9185965190601f19878403019087015261070c565b915160608401525160808301520390f35b90919298826103a06001928c5161069c565b9a0193929101610359565b604190634e487b7160e01b5f525260245ffd5b34610110575f366003190112610110576103d6611000565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b5034610110576104243661064f565b9161042e83610987565b915f5b8481106104515782516020808252819061044d9082018761070c565b0390f35b806104656102cb61027160019489876108e6565b61046f828761091e565b5261047a818661091e565b5001610431565b5034610110576104903661064f565b919061049b83610897565b925f5b8181106104ea57835160208082528651818301819052818801929182880191905f5b8281106104cd5784840385f35b909192826104de600192885161069c565b960195939291016104c0565b806104fe61027661027160019486886108e6565b610508828861091e565b52610513818761091e565b500161049e565b90503461011057606036600319011261011057602480359360443592813590811561060f5750851593841580610606575b156105cb576103e5808302928304036105b95761056890826107b6565b936103e88088029788041417156105a75785018095116105965760208461058f87866107dd565b9051908152f35b601190634e487b7160e01b5f52525ffd5b50601190634e487b7160e01b5f52525ffd5b83601184634e487b7160e01b5f52525ffd5b855162461bcd60e51b815260208185015260168186015275496e73756666696369656e74206c697175696469747960501b6044820152606490fd5b5080151561054b565b62461bcd60e51b81526020838201526019848201527f496e73756666696369656e7420696e70757420616d6f756e74000000000000006044820152606490fd5b9060206003198301126101105760043567ffffffffffffffff9283821161011057806023830112156101105781600401359384116101105760248460051b83010111610110576024019190565b9060e06101009260018060a01b03808251168452806020830151166020850152604082015116604084015260608101516001600160701b038091166060850152608082015116608084015263ffffffff60a08201511660a084015260c081015160c0840152015160e08201520190565b9081518082526020808093019301915f5b82811061072b575050505090565b835180516001600160a01b0390811687528184015181168785015260408083015182169088015260608083015162ffffff16908801526080808301519091169087015260a08082015160020b9087015260c0808201516001600160801b03169087015260e080820151908701526101009081015190860152610120909401939281019260010161071d565b818102929181159184041417156107c957565b634e487b7160e01b5f52601160045260245ffd5b81156107e7570490565b634e487b7160e01b5f52601260045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761081d57604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161081d5760051b60200190565b60405190610100820182811067ffffffffffffffff82111761081d576040525f60e0838281528260208201528260408201528260608201528260808201528260a08201528260c08201520152565b906108a182610831565b6108ae60405191826107fb565b82815280926108bf601f1991610831565b01905f5b8281106108cf57505050565b6020906108da610849565b828285010152016108c3565b91908110156108f65760051b0190565b634e487b7160e01b5f52603260045260245ffd5b356001600160a01b03811681036101105790565b80518210156108f65760209160051b010190565b60405190610120820182811067ffffffffffffffff82111761081d576040525f610100838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201520152565b9061099182610831565b61099e60405191826107fb565b82815280926109af601f1991610831565b01905f5b8281106109bf57505050565b6020906109ca610932565b828285010152016109b3565b903590601e1981360301821215610110570180359067ffffffffffffffff821161011057602001918160051b3603831361011057565b519061ffff8216820361011057565b908160e09103126101105780516001600160a01b0381168103610110579160208201518060020b81036101105791610a5560408201610a0c565b91610a6260608301610a0c565b91610a6f60808201610a0c565b9160a082015160ff811681036101105760c09092015180151581036101105790565b6001600160a01b03168015610aff5760e060049160405192838092633850c7bd851b82525afa9081610acc575b50610ac7575f90565b600190565b610aed9060e03d60e011610af8575b610ae581836107fb565b810190610a1b565b505050505050610abe565b503d610adb565b505f90565b51906001600160701b038216820361011057565b9081606091031261011057610b2c81610b04565b916040610b3b60208401610b04565b92015163ffffffff811681036101105790565b6001600160a01b03168015610aff57606060049160405192838092630240bc6b60e21b82525afa9081610b845750610ac7575f90565b610ba59060603d606011610bac575b610b9d81836107fb565b810190610b18565b5050610abe565b503d610b93565b9081602091031261011057516001600160a01b03811681036101105790565b90610bdb610849565b6001600160a01b0392831680825260408051630dfe168160e01b8152929490926020908181600481875afa908115610d5f579083915f91610d69575b501686820152835163d21220a760e01b81528181600481875afa918215610d5f57916060939160049695935f92610d32575b505016868401528251630240bc6b60e21b815293849182905afa908115610d2957505f80925f92610cfd575b5063ffffffff906001600160701b038091169384606088015216918260808701521660a08501528115801580610cf4575b610caf57505050565b670de0b6b3a76400008083028381048214841517156107c95784610cd2916107dd565b60c08701528084029384041417156107c957610ced916107dd565b60e0830152565b50811515610ca6565b905063ffffffff9250610d1f915060603d606011610bac57610b9d81836107fb565b9290929190610c75565b513d5f823e3d90fd5b610d519250803d10610d58575b610d4981836107fb565b810190610bb3565b5f80610c49565b503d610d3f565b85513d5f823e3d90fd5b610d809150833d8511610d5857610d4981836107fb565b5f610c17565b90610d8f610932565b6001600160a01b0392831680825260408051630dfe168160e01b81529294600493909260209182818781855afa908115610f80579085915f91610fe3575b501687830152825163d21220a760e01b815282818781855afa908115610f80579085915f91610fc6575b501687840152825163ddca3f4360e01b815282818781855afa8015610f80575f90610f8a575b62ffffff166060890152508251633850c7bd60e01b81529360e0858781855afa948515610f80579086949392915f905f97610f55575b509083929116958660808b015260020b60a08a0152835194858092630d34328160e11b82525afa918215610d2957505f91610f10575b506001600160801b031660c08601525080610ea2575050565b80610eac916107b6565b60601c90670de0b6b3a764000080830283159184820414821715610efd5760601c60e0860152610eea57506503782dace9d960721b04610100830152565b601290634e487b7160e01b5f525260245ffd5b601183634e487b7160e01b5f525260245ffd5b905081813d8311610f4e575b610f2681836107fb565b8101031261011057516001600160801b0381168103610110576001600160801b03905f610e89565b503d610f1c565b8493929750610f73915060e03d60e011610af857610ae581836107fb565b5050505050969192610e53565b84513d5f823e3d90fd5b508281813d8311610fbf575b610fa081836107fb565b81010312610110575162ffffff811681036101105762ffffff90610e1d565b503d610f96565b610fdd9150843d8611610d5857610d4981836107fb565b5f610df7565b610ffa9150843d8611610d5857610d4981836107fb565b5f610dcd565b5f546001600160a01b0316330361101357565b60405163118cdaa760e01b8152336004820152602490fd","sourceMap":"816:9744:10:-:0;;;;;;;876:10;1273:26:0;1269:95;;1297:1;816:9744:10;;876:10;-1:-1:-1;;;;;;816:9744:10;;;;;;;;;876:10;;-1:-1:-1;;;;;816:9744:10;;3052:40:0;;1297:1;3052:40;816:9744:10;;;;;;;1269:95:0;-1:-1:-1;;;1322:31:0;;1297:1;1322:31;;;816:9744:10;;;1322:31:0;816:9744:10;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604081815260049182361015610015575f80fd5b5f3560e01c908163054d50d41461051a5750806308586b84146104815780632b0bad3f14610415578063715018a6146103be57806371ac5931146101a45780638da5cb5b1461017d578063b72924821461014d578063eed58877146101145763f2fde38b14610082575f80fd5b34610110576020366003190112610110576001600160a01b03823581811693919290849003610110576100b3611000565b83156100fa5750505f54826bffffffffffffffffffffffff60a01b8216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b905f6024925191631e4fbdf760e01b8352820152fd5b5f80fd5b5090346101105760203660031901126101105735906001600160a01b038216820361011057610144602092610b4e565b90519015158152f35b5090346101105760203660031901126101105735906001600160a01b038216820361011057610144602092610a91565b5034610110575f366003190112610110575f5490516001600160a01b039091168152602090f35b5090346101105760209060031982813601126101105781359367ffffffffffffffff80861161011057818685019387360301126101105781519360808501918211858310176103ab57508152606083528383019060608252808401945f8652602460608601975f895261022161021a87806109d6565b9050610897565b8752019061023961023283876109d6565b9050610987565b84525f5b61024786806109d6565b9050811015610295578061028e8161027b61027661027160019661026b8d806109d6565b906108e6565b61090a565b610bd2565b8a5190610288838361091e565b5261091e565b500161023d565b50849086888a5f5b6102a787876109d6565b90508110156102e457806102dd816102d06102cb61027160019661026b8e8e6109d6565b610d86565b8c5190610288838361091e565b500161029d565b50868886610307899796974387524286526102ff83806109d6565b9390506109d6565b90508351918252868201527fc973a5db1e1c754d6a440aa959524bac785dad6e5e78c66a3bb720965bb4fae4834392a281519480865260a0860196519660808288015287518091528160c088019801915f5b82811061038e57505050509461037d9185965190601f19878403019087015261070c565b915160608401525160808301520390f35b90919298826103a06001928c5161069c565b9a0193929101610359565b604190634e487b7160e01b5f525260245ffd5b34610110575f366003190112610110576103d6611000565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b5034610110576104243661064f565b9161042e83610987565b915f5b8481106104515782516020808252819061044d9082018761070c565b0390f35b806104656102cb61027160019489876108e6565b61046f828761091e565b5261047a818661091e565b5001610431565b5034610110576104903661064f565b919061049b83610897565b925f5b8181106104ea57835160208082528651818301819052818801929182880191905f5b8281106104cd5784840385f35b909192826104de600192885161069c565b960195939291016104c0565b806104fe61027661027160019486886108e6565b610508828861091e565b52610513818761091e565b500161049e565b90503461011057606036600319011261011057602480359360443592813590811561060f5750851593841580610606575b156105cb576103e5808302928304036105b95761056890826107b6565b936103e88088029788041417156105a75785018095116105965760208461058f87866107dd565b9051908152f35b601190634e487b7160e01b5f52525ffd5b50601190634e487b7160e01b5f52525ffd5b83601184634e487b7160e01b5f52525ffd5b855162461bcd60e51b815260208185015260168186015275496e73756666696369656e74206c697175696469747960501b6044820152606490fd5b5080151561054b565b62461bcd60e51b81526020838201526019848201527f496e73756666696369656e7420696e70757420616d6f756e74000000000000006044820152606490fd5b9060206003198301126101105760043567ffffffffffffffff9283821161011057806023830112156101105781600401359384116101105760248460051b83010111610110576024019190565b9060e06101009260018060a01b03808251168452806020830151166020850152604082015116604084015260608101516001600160701b038091166060850152608082015116608084015263ffffffff60a08201511660a084015260c081015160c0840152015160e08201520190565b9081518082526020808093019301915f5b82811061072b575050505090565b835180516001600160a01b0390811687528184015181168785015260408083015182169088015260608083015162ffffff16908801526080808301519091169087015260a08082015160020b9087015260c0808201516001600160801b03169087015260e080820151908701526101009081015190860152610120909401939281019260010161071d565b818102929181159184041417156107c957565b634e487b7160e01b5f52601160045260245ffd5b81156107e7570490565b634e487b7160e01b5f52601260045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761081d57604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161081d5760051b60200190565b60405190610100820182811067ffffffffffffffff82111761081d576040525f60e0838281528260208201528260408201528260608201528260808201528260a08201528260c08201520152565b906108a182610831565b6108ae60405191826107fb565b82815280926108bf601f1991610831565b01905f5b8281106108cf57505050565b6020906108da610849565b828285010152016108c3565b91908110156108f65760051b0190565b634e487b7160e01b5f52603260045260245ffd5b356001600160a01b03811681036101105790565b80518210156108f65760209160051b010190565b60405190610120820182811067ffffffffffffffff82111761081d576040525f610100838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201520152565b9061099182610831565b61099e60405191826107fb565b82815280926109af601f1991610831565b01905f5b8281106109bf57505050565b6020906109ca610932565b828285010152016109b3565b903590601e1981360301821215610110570180359067ffffffffffffffff821161011057602001918160051b3603831361011057565b519061ffff8216820361011057565b908160e09103126101105780516001600160a01b0381168103610110579160208201518060020b81036101105791610a5560408201610a0c565b91610a6260608301610a0c565b91610a6f60808201610a0c565b9160a082015160ff811681036101105760c09092015180151581036101105790565b6001600160a01b03168015610aff5760e060049160405192838092633850c7bd851b82525afa9081610acc575b50610ac7575f90565b600190565b610aed9060e03d60e011610af8575b610ae581836107fb565b810190610a1b565b505050505050610abe565b503d610adb565b505f90565b51906001600160701b038216820361011057565b9081606091031261011057610b2c81610b04565b916040610b3b60208401610b04565b92015163ffffffff811681036101105790565b6001600160a01b03168015610aff57606060049160405192838092630240bc6b60e21b82525afa9081610b845750610ac7575f90565b610ba59060603d606011610bac575b610b9d81836107fb565b810190610b18565b5050610abe565b503d610b93565b9081602091031261011057516001600160a01b03811681036101105790565b90610bdb610849565b6001600160a01b0392831680825260408051630dfe168160e01b8152929490926020908181600481875afa908115610d5f579083915f91610d69575b501686820152835163d21220a760e01b81528181600481875afa918215610d5f57916060939160049695935f92610d32575b505016868401528251630240bc6b60e21b815293849182905afa908115610d2957505f80925f92610cfd575b5063ffffffff906001600160701b038091169384606088015216918260808701521660a08501528115801580610cf4575b610caf57505050565b670de0b6b3a76400008083028381048214841517156107c95784610cd2916107dd565b60c08701528084029384041417156107c957610ced916107dd565b60e0830152565b50811515610ca6565b905063ffffffff9250610d1f915060603d606011610bac57610b9d81836107fb565b9290929190610c75565b513d5f823e3d90fd5b610d519250803d10610d58575b610d4981836107fb565b810190610bb3565b5f80610c49565b503d610d3f565b85513d5f823e3d90fd5b610d809150833d8511610d5857610d4981836107fb565b5f610c17565b90610d8f610932565b6001600160a01b0392831680825260408051630dfe168160e01b81529294600493909260209182818781855afa908115610f80579085915f91610fe3575b501687830152825163d21220a760e01b815282818781855afa908115610f80579085915f91610fc6575b501687840152825163ddca3f4360e01b815282818781855afa8015610f80575f90610f8a575b62ffffff166060890152508251633850c7bd60e01b81529360e0858781855afa948515610f80579086949392915f905f97610f55575b509083929116958660808b015260020b60a08a0152835194858092630d34328160e11b82525afa918215610d2957505f91610f10575b506001600160801b031660c08601525080610ea2575050565b80610eac916107b6565b60601c90670de0b6b3a764000080830283159184820414821715610efd5760601c60e0860152610eea57506503782dace9d960721b04610100830152565b601290634e487b7160e01b5f525260245ffd5b601183634e487b7160e01b5f525260245ffd5b905081813d8311610f4e575b610f2681836107fb565b8101031261011057516001600160801b0381168103610110576001600160801b03905f610e89565b503d610f1c565b8493929750610f73915060e03d60e011610af857610ae581836107fb565b5050505050969192610e53565b84513d5f823e3d90fd5b508281813d8311610fbf575b610fa081836107fb565b81010312610110575162ffffff811681036101105762ffffff90610e1d565b503d610f96565b610fdd9150843d8611610d5857610d4981836107fb565b5f610df7565b610ffa9150843d8611610d5857610d4981836107fb565b5f610dcd565b5f546001600160a01b0316330361101357565b60405163118cdaa760e01b8152336004820152602490fd","sourceMap":"816:9744:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;816:9744:10;;;;-1:-1:-1;;;;;816:9744:10;;;;;;;;;;;;;;1500:62:0;;:::i;:::-;2627:22;;2623:91;;816:9744:10;;;;;;;;;;;;;;3052:40:0;816:9744:10;3052:40:0;;816:9744:10;2623:91:0;816:9744:10;;;;;2672:31:0;;;;;;;;816:9744:10;2672:31:0;816:9744:10;;;;;;;;;;;;-1:-1:-1;;816:9744:10;;;;;;-1:-1:-1;;;;;816:9744:10;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;816:9744:10;;;;;;-1:-1:-1;;;;;816:9744:10;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;816:9744:10;;;;;;;;-1:-1:-1;;;;;816:9744:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5476:15;816:9744;;;;;;;5391:40;5408:15;;;;:::i;:::-;5391:40;;;:::i;:::-;5373:58;;5476:15;;5459:40;5476:15;;;;:::i;:::-;5459:40;;;:::i;:::-;5441:58;;816:9744;5596:3;5572:15;;;;:::i;:::-;5568:26;;;;;;;5653:15;5615:57;5653:15;5636:36;5653:18;;816:9744;5653:15;;;;;:::i;:::-;:18;;:::i;:::-;;:::i;:::-;5636:36;:::i;:::-;5615:15;;:57;;;;;:::i;:::-;;;:::i;:::-;;816:9744;5553:13;;5568:26;;;;;;;816:9744;5779:3;5755:15;;;;:::i;:::-;5751:26;;;;;;;5836:15;5798:57;5836:15;5819:36;5836:18;;816:9744;5836:15;;;;;:::i;:18::-;5819:36;:::i;:::-;5798:15;;:57;;;;;:::i;:::-;;816:9744;5736:13;;5751:26;;;;;6063:15;5751:26;;;;5931:12;816:9744;;5974:15;816:9744;;6039:15;;;;:::i;:::-;6063;;;;:::i;:::-;816:9744;;;;;;;;;;;6013:73;5931:12;;6013:73;;816:9744;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;816:9744:10;;;;1500:62:0;;:::i;:::-;816:9744:10;;;-1:-1:-1;;;;;;816:9744:10;;;;-1:-1:-1;;;;;816:9744:10;3052:40:0;816:9744:10;;3052:40:0;816:9744:10;;;;;;;;;:::i;:::-;4688:30;;;;:::i;:::-;4742:13;816:9744;4757:16;;;;;;816:9744;;;;;;;;;;;;;;:::i;:::-;;;;4775:3;4825:8;4808:26;4825:8;;816:9744;4825:8;;;;:::i;4808:26::-;4794:40;;;;:::i;:::-;;;;;;:::i;:::-;;816:9744;4742:13;;816:9744;;;;;;;;:::i;:::-;4028:30;;;;;:::i;:::-;4082:13;816:9744;4097:16;;;;;;816:9744;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;816:9744:10;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4115:3;4165:8;4148:26;4165:8;;816:9744;4165:8;;;;:::i;4148:26::-;4134:40;;;;:::i;:::-;;;;;;:::i;:::-;;816:9744;4082:13;;816:9744;;;;;;;;-1:-1:-1;;816:9744:10;;;;;;;;;;;;;;6642:12;;816:9744;;6702:13;;;;;;:31;;;816:9744;;;;6853:3;816:9744;;;;;;;;;6886:28;;;;:::i;:::-;6959:4;;816:9744;;;;;;;;;;;;;;;;;;;7013:23;;;;;:::i;:::-;816:9744;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;816:9744:10;;;;;;;;;;;;-1:-1:-1;;;816:9744:10;;;;;;;6702:31;6719:14;;;;6702:31;;816:9744;-1:-1:-1;;;816:9744:10;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;816:9744:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;816:9744:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;816:9744:10;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;;;;816:9744:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;816:9744:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;816:9744:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;816:9744:10;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;816:9744:10;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;816:9744:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;816:9744:10;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;816:9744:10;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10238:320::-;-1:-1:-1;;;;;816:9744:10;10326:18;;10322:36;;816:9744;10381:28;816:9744;;;;;;;;;;10381:28;;;;;;;;10238:320;-1:-1:-1;10377:175:10;;10342:1;10529:12;:::o;10377:175::-;10493:4;10486:11;:::o;10381:28::-;;;816:9744;10381:28;816:9744;10381:28;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;10322:36;10346:12;10342:1;10346:12;:::o;816:9744::-;;;-1:-1:-1;;;;;816:9744:10;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;9667:299::-;-1:-1:-1;;;;;816:9744:10;9755:18;;9751:36;;9810:34;;816:9744;;;;;;;;;;9810:34;;;;;;;;-1:-1:-1;9806:154:10;;9771:1;9937:12;:::o;9810:34::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;816:9744;;;;;;;;;;-1:-1:-1;;;;;816:9744:10;;;;;;;:::o;7315:836::-;;816:9744;;:::i;:::-;-1:-1:-1;;;;;816:9744:10;;;;;;;;;-1:-1:-1;;;7553:13:10;;816:9744;;;;7553:13;;;816:9744;7553:13;816:9744;;7553:13;;;;;;;;;;;;;;7315:836;-1:-1:-1;816:9744:10;7539:11;;;816:9744;;;-1:-1:-1;;;7590:13:10;;7539:11;816:9744;7553:13;816:9744;7590:13;;;;;;;;;7726:18;7590:13;;7553;7590;;;7553;7590;;;7315:836;-1:-1:-1;;816:9744:10;7576:11;;;816:9744;;;-1:-1:-1;;;7726:18:10;;816:9744;;;;;7726:18;;;;;;;;7553:13;;;;7726:18;;;7315:836;816:9744;;;-1:-1:-1;;;;;816:9744:10;;;7754:13;;7726:18;7754:13;;816:9744;;7788:13;;;;;816:9744;;7822:23;;;816:9744;7942:12;;;;:28;;;7315:836;7938:207;;7315:836;;;:::o;7938:207::-;3424:4;816:9744;;;;;;;;;;;;;;8000:53;;;;:::i;:::-;7986:11;;;816:9744;;;;;;;;;;;;8081:53;;;:::i;:::-;816:9744;8067:11;;816:9744;7315:836::o;7942:28::-;7958:12;;;;7942:28;;7726:18;;;816:9744;7726:18;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;816:9744;;7553:13;816:9744;;;;;7590:13;;;;;;-1:-1:-1;7590:13:10;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;816:9744;;;7553:13;816:9744;;;;;7553:13;;;;;;;;;;;;;;:::i;:::-;;;;8435:960;;816:9744;;:::i;:::-;-1:-1:-1;;;;;816:9744:10;;;;;;;;;-1:-1:-1;;;8675:15:10;;816:9744;;8675:15;;816:9744;;8675:15;;;816:9744;8675:15;816:9744;;8675:15;;;;;;;;;;;;;;8435:960;-1:-1:-1;816:9744:10;8661:11;;;816:9744;;;-1:-1:-1;;;8714:15:10;;8661:11;816:9744;8714:15;816:9744;8714:15;;;;;;;;;;;8675;8714;;;8435:960;-1:-1:-1;816:9744:10;8700:11;;;816:9744;;;-1:-1:-1;;;8750:12:10;;;816:9744;8750:12;816:9744;8750:12;;;;;;;8675:15;8750:12;;;8435:960;816:9744;;8739:8;;;816:9744;-1:-1:-1;816:9744:10;;-1:-1:-1;;;8873:14:10;;816:9744;;;8873:14;816:9744;8873:14;;;;;;;;;;;;;;8675:15;;;8873:14;;;8435:960;816:9744;;;;;;8897:17;;;;;816:9744;;;8939:9;;;816:9744;;;;;;;;;;9024:18;;;;;;;;;;8675:15;9024:18;;;8435:960;-1:-1:-1;;;;;;816:9744:10;9007:14;;;816:9744;-1:-1:-1;9111:16:10;9107:282;;8435:960;;:::o;9107:282::-;9210:45;;;;:::i;:::-;8739:8;816:9744;3424:4;;816:9744;;;;;;;;;;;;;;;8739:8;816:9744;;9276:11;;816:9744;;;-1:-1:-1;;;;816:9744:10;9334:11;;;816:9744;8435:960::o;816:9744::-;;;;;;8675:15;816:9744;;;8675:15;816:9744;;;;;;;8675:15;816:9744;;;8675:15;816:9744;9024:18;;;;;;;;;;;;;;;:::i;:::-;;;816:9744;;;;;-1:-1:-1;;;;;816:9744:10;;;;;;-1:-1:-1;;;;;9024:18:10;;;;;;;;;8873:14;;;;;;;;;816:9744;8873:14;816:9744;8873:14;;;;;;;:::i;:::-;;;;;;;;;;;;816:9744;;;8675:15;816:9744;;;;;8750:12;;;;;;;;;;;;;;;:::i;:::-;;;816:9744;;;;;;;;;;;;;8750:12;;;;;;;;8714:15;;;;;;;;;;;;;;:::i;:::-;;;;8675;;;;;;;;;;;;;;:::i;:::-;;;;1796:162:0;1710:6;816:9744:10;-1:-1:-1;;;;;816:9744:10;735:10:1;1855:23:0;1851:101;;1796:162::o;1851:101::-;816:9744:10;;-1:-1:-1;;;1901:40:0;;735:10:1;1901:40:0;;;816:9744:10;;;1901:40:0","linkReferences":{}},"methodIdentifiers":{"batchFetchAllData((address[],address[]))":"71ac5931","batchFetchV2Data(address[])":"08586b84","batchFetchV3Data(address[])":"2b0bad3f","getAmountOut(uint256,uint256,uint256)":"054d50d4","isValidV2Pool(address)":"eed58877","isValidV3Pool(address)":"b7292482","owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"v2PoolCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"v3PoolCount\",\"type\":\"uint256\"}],\"name\":\"DataFetched\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"v2Pools\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"v3Pools\",\"type\":\"address[]\"}],\"internalType\":\"struct DataFetcher.BatchRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"batchFetchAllData\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"blockTimestampLast\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"price0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price1\",\"type\":\"uint256\"}],\"internalType\":\"struct DataFetcher.V2PoolData[]\",\"name\":\"v2Data\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"price0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price1\",\"type\":\"uint256\"}],\"internalType\":\"struct DataFetcher.V3PoolData[]\",\"name\":\"v3Data\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct DataFetcher.BatchResponse\",\"name\":\"response\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"pools\",\"type\":\"address[]\"}],\"name\":\"batchFetchV2Data\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"blockTimestampLast\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"price0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price1\",\"type\":\"uint256\"}],\"internalType\":\"struct DataFetcher.V2PoolData[]\",\"name\":\"poolData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"pools\",\"type\":\"address[]\"}],\"name\":\"batchFetchV3Data\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"price0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price1\",\"type\":\"uint256\"}],\"internalType\":\"struct DataFetcher.V3PoolData[]\",\"name\":\"poolData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isValidV2Pool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isValid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isValidV3Pool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isValid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Provides batch data fetching capabilities for multiple DEX protocols using multicall patterns Optimized for Arbitrum network to minimize gas costs and maximize data retrieval efficiency Key Features: - Batch price fetching from multiple pools simultaneously - Support for Uniswap V2 and V3 reserve/liquidity data - Multicall functionality to reduce RPC calls - Pool pair discovery and validation - Real-time price calculations for arbitrage analysis\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"batchFetchAllData((address[],address[]))\":{\"details\":\"Most efficient method for getting comprehensive DEX data across protocols\",\"params\":{\"request\":\"Batch request containing both V2 and V3 pool addresses\"},\"returns\":{\"response\":\"Complete batch response with all pool data and metadata\"}},\"batchFetchV2Data(address[])\":{\"details\":\"Uses batch processing to efficiently retrieve reserve data from multiple V2 pairs\",\"params\":{\"pools\":\"Array of V2 pool addresses to fetch data from\"},\"returns\":{\"poolData\":\"Array of V2PoolData structures containing all pool information\"}},\"batchFetchV3Data(address[])\":{\"details\":\"Uses batch processing to efficiently retrieve liquidity data from multiple V3 pools\",\"params\":{\"pools\":\"Array of V3 pool addresses to fetch data from\"},\"returns\":{\"poolData\":\"Array of V3PoolData structures containing all pool information\"}},\"getAmountOut(uint256,uint256,uint256)\":{\"details\":\"Uses the constant product formula: (x * y = k) with fees\",\"params\":{\"amountIn\":\"Amount of input token\",\"reserveIn\":\"Reserve of input token\",\"reserveOut\":\"Reserve of output token\"},\"returns\":{\"amountOut\":\"Amount of output token that would be received\"}},\"isValidV2Pool(address)\":{\"details\":\"Performs basic validation by checking if required functions exist\",\"params\":{\"pool\":\"Address to validate\"},\"returns\":{\"isValid\":\"Whether the address appears to be a valid V2 pair\"}},\"isValidV3Pool(address)\":{\"details\":\"Performs basic validation by checking if required functions exist\",\"params\":{\"pool\":\"Address to validate\"},\"returns\":{\"isValid\":\"Whether the address appears to be a valid V3 pool\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"DataFetcher\",\"version\":1},\"userdoc\":{\"events\":{\"DataFetched(uint256,uint256,uint256)\":{\"notice\":\"Event emitted when batch data is fetched\"}},\"kind\":\"user\",\"methods\":{\"batchFetchAllData((address[],address[]))\":{\"notice\":\"Fetches data from both V2 and V3 pools in a single call\"},\"batchFetchV2Data(address[])\":{\"notice\":\"Fetches data from multiple V2 pools in a single call\"},\"batchFetchV3Data(address[])\":{\"notice\":\"Fetches data from multiple V3 pools in a single call\"},\"getAmountOut(uint256,uint256,uint256)\":{\"notice\":\"Calculates the output amount for a V2 swap given input amount\"},\"isValidV2Pool(address)\":{\"notice\":\"Validates that an address is a valid V2 pair\"},\"isValidV3Pool(address)\":{\"notice\":\"Validates that an address is a valid V3 pool\"}},\"notice\":\"Efficient data fetching utility for MEV arbitrage operations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/core/DataFetcher.sol\":\"DataFetcher\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v2-core/=lib/v2-core/contracts/\",\":@uniswap/v3-core/=lib/v3-core/contracts/\",\":Algebra/=lib/Algebra/src/\",\":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\",\":curve-contract/=lib/curve-contract/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":smart-contracts/=lib/smart-contracts/\",\":v2-core/=lib/v2-core/contracts/\",\":v3-core/=lib/v3-core/\",\":v3-periphery/=lib/v3-periphery/contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x75a4ee64c68dbd5f38bddd06e664a64c8271b4caa554fb6f0607dfd672bb4bf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c4e6cb30d3601e2f7af5af09e265508147cb275a8dcd99d6f7363645cc56867\",\"dweb:/ipfs/QmNgFkoXNWoUbAyw71rr1sKQ95Rj2GfvYiWg79xEYDn2NY\"]},\"lib/v2-core/contracts/interfaces/IUniswapV2Pair.sol\":{\"keccak256\":\"0x7c9bc70e5996c763e02ff38905282bc24fb242b0ef2519a003b36824fc524a4b\",\"urls\":[\"bzz-raw://85d5ad2dd23ee127f40907a12865a1e8cb5828814f6f2480285e1827dd72dedf\",\"dweb:/ipfs/QmayKQWJgWmr46DqWseADyUanmqxh662hPNdAkdHRjiQQH\"]},\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"src/core/DataFetcher.sol\":{\"keccak256\":\"0x4e684b9f2302ab896013d2eacff9f0b21717cafb6f154da0e8783e8c421ed502\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f8bf1214c8fffd78f6d06c98a1758144968df410b188ca001a2f030e8a687a4\",\"dweb:/ipfs/QmY8EjfgK6VvNKQEpCyWRppgNtb6fMvLDwQcfZJECzyoBr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256","indexed":true},{"internalType":"uint256","name":"v2PoolCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"v3PoolCount","type":"uint256","indexed":false}],"type":"event","name":"DataFetched","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"struct DataFetcher.BatchRequest","name":"request","type":"tuple","components":[{"internalType":"address[]","name":"v2Pools","type":"address[]"},{"internalType":"address[]","name":"v3Pools","type":"address[]"}]}],"stateMutability":"nonpayable","type":"function","name":"batchFetchAllData","outputs":[{"internalType":"struct DataFetcher.BatchResponse","name":"response","type":"tuple","components":[{"internalType":"struct DataFetcher.V2PoolData[]","name":"v2Data","type":"tuple[]","components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint112","name":"reserve0","type":"uint112"},{"internalType":"uint112","name":"reserve1","type":"uint112"},{"internalType":"uint32","name":"blockTimestampLast","type":"uint32"},{"internalType":"uint256","name":"price0","type":"uint256"},{"internalType":"uint256","name":"price1","type":"uint256"}]},{"internalType":"struct DataFetcher.V3PoolData[]","name":"v3Data","type":"tuple[]","components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"price0","type":"uint256"},{"internalType":"uint256","name":"price1","type":"uint256"}]},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address[]","name":"pools","type":"address[]"}],"stateMutability":"view","type":"function","name":"batchFetchV2Data","outputs":[{"internalType":"struct DataFetcher.V2PoolData[]","name":"poolData","type":"tuple[]","components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint112","name":"reserve0","type":"uint112"},{"internalType":"uint112","name":"reserve1","type":"uint112"},{"internalType":"uint32","name":"blockTimestampLast","type":"uint32"},{"internalType":"uint256","name":"price0","type":"uint256"},{"internalType":"uint256","name":"price1","type":"uint256"}]}]},{"inputs":[{"internalType":"address[]","name":"pools","type":"address[]"}],"stateMutability":"view","type":"function","name":"batchFetchV3Data","outputs":[{"internalType":"struct DataFetcher.V3PoolData[]","name":"poolData","type":"tuple[]","components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"price0","type":"uint256"},{"internalType":"uint256","name":"price1","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"view","type":"function","name":"isValidV2Pool","outputs":[{"internalType":"bool","name":"isValid","type":"bool"}]},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"view","type":"function","name":"isValidV3Pool","outputs":[{"internalType":"bool","name":"isValid","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"batchFetchAllData((address[],address[]))":{"details":"Most efficient method for getting comprehensive DEX data across protocols","params":{"request":"Batch request containing both V2 and V3 pool addresses"},"returns":{"response":"Complete batch response with all pool data and metadata"}},"batchFetchV2Data(address[])":{"details":"Uses batch processing to efficiently retrieve reserve data from multiple V2 pairs","params":{"pools":"Array of V2 pool addresses to fetch data from"},"returns":{"poolData":"Array of V2PoolData structures containing all pool information"}},"batchFetchV3Data(address[])":{"details":"Uses batch processing to efficiently retrieve liquidity data from multiple V3 pools","params":{"pools":"Array of V3 pool addresses to fetch data from"},"returns":{"poolData":"Array of V3PoolData structures containing all pool information"}},"getAmountOut(uint256,uint256,uint256)":{"details":"Uses the constant product formula: (x * y = k) with fees","params":{"amountIn":"Amount of input token","reserveIn":"Reserve of input token","reserveOut":"Reserve of output token"},"returns":{"amountOut":"Amount of output token that would be received"}},"isValidV2Pool(address)":{"details":"Performs basic validation by checking if required functions exist","params":{"pool":"Address to validate"},"returns":{"isValid":"Whether the address appears to be a valid V2 pair"}},"isValidV3Pool(address)":{"details":"Performs basic validation by checking if required functions exist","params":{"pool":"Address to validate"},"returns":{"isValid":"Whether the address appears to be a valid V3 pool"}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"batchFetchAllData((address[],address[]))":{"notice":"Fetches data from both V2 and V3 pools in a single call"},"batchFetchV2Data(address[])":{"notice":"Fetches data from multiple V2 pools in a single call"},"batchFetchV3Data(address[])":{"notice":"Fetches data from multiple V3 pools in a single call"},"getAmountOut(uint256,uint256,uint256)":{"notice":"Calculates the output amount for a V2 swap given input amount"},"isValidV2Pool(address)":{"notice":"Validates that an address is a valid V2 pair"},"isValidV3Pool(address)":{"notice":"Validates that an address is a valid V3 pool"}},"version":1}},"settings":{"remappings":["@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v2-core/=lib/v2-core/contracts/","@uniswap/v3-core/=lib/v3-core/contracts/","Algebra/=lib/Algebra/src/","balancer-v2-monorepo/=lib/balancer-v2-monorepo/","curve-contract/=lib/curve-contract/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","smart-contracts/=lib/smart-contracts/","v2-core/=lib/v2-core/contracts/","v3-core/=lib/v3-core/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/core/DataFetcher.sol":"DataFetcher"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x75a4ee64c68dbd5f38bddd06e664a64c8271b4caa554fb6f0607dfd672bb4bf3","urls":["bzz-raw://0c4e6cb30d3601e2f7af5af09e265508147cb275a8dcd99d6f7363645cc56867","dweb:/ipfs/QmNgFkoXNWoUbAyw71rr1sKQ95Rj2GfvYiWg79xEYDn2NY"],"license":"MIT"},"lib/v2-core/contracts/interfaces/IUniswapV2Pair.sol":{"keccak256":"0x7c9bc70e5996c763e02ff38905282bc24fb242b0ef2519a003b36824fc524a4b","urls":["bzz-raw://85d5ad2dd23ee127f40907a12865a1e8cb5828814f6f2480285e1827dd72dedf","dweb:/ipfs/QmayKQWJgWmr46DqWseADyUanmqxh662hPNdAkdHRjiQQH"],"license":null},"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol":{"keccak256":"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1","urls":["bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5","dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol":{"keccak256":"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634","urls":["bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5","dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol":{"keccak256":"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5","urls":["bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7","dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol":{"keccak256":"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd","urls":["bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03","dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol":{"keccak256":"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7","urls":["bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047","dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol":{"keccak256":"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235","urls":["bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735","dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol":{"keccak256":"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f","urls":["bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f","dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg"],"license":"GPL-2.0-or-later"},"src/core/DataFetcher.sol":{"keccak256":"0x4e684b9f2302ab896013d2eacff9f0b21717cafb6f154da0e8783e8c421ed502","urls":["bzz-raw://4f8bf1214c8fffd78f6d06c98a1758144968df410b188ca001a2f030e8a687a4","dweb:/ipfs/QmY8EjfgK6VvNKQEpCyWRppgNtb6fMvLDwQcfZJECzyoBr"],"license":"MIT"}},"version":1},"id":10} |