@defi-wonderland/keep3r-v2
Version:
The Keep3r Network is a decentralized network for projects that need external devops, and for external teams to find keeper jobs
714 lines • 203 kB
JSON
{
"address": "0xD36Ac9Ff5562abb541F51345f340FB650547a661",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_keep3rV2",
"type": "address"
},
{
"internalType": "address",
"name": "_governance",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "InvalidKp3rPool",
"type": "error"
},
{
"inputs": [],
"name": "LiquidityPairInvalid",
"type": "error"
},
{
"inputs": [],
"name": "NoGovernanceZeroAddress",
"type": "error"
},
{
"inputs": [],
"name": "OnlyGovernance",
"type": "error"
},
{
"inputs": [],
"name": "OnlyPendingGovernance",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "_pendingGovernance",
"type": "address"
}
],
"name": "GovernanceProposal",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "_governance",
"type": "address"
}
],
"name": "GovernanceSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "_keep3rV2",
"type": "address"
}
],
"name": "Keep3rV2Change",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "_address",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "_isKP3RToken0",
"type": "bool"
}
],
"name": "Kp3rWethPoolChange",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_maxBoost",
"type": "uint256"
}
],
"name": "MaxBoostChange",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_minBoost",
"type": "uint256"
}
],
"name": "MinBoostChange",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint32",
"name": "_quoteTwapTime",
"type": "uint32"
}
],
"name": "QuoteTwapTimeChange",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_targetBond",
"type": "uint256"
}
],
"name": "TargetBondChange",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_workExtraGas",
"type": "uint256"
}
],
"name": "WorkExtraGasChange",
"type": "event"
},
{
"inputs": [],
"name": "BOOST_BASE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "KP3R",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "acceptGovernance",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_keeper",
"type": "address"
}
],
"name": "bonds",
"outputs": [
{
"internalType": "uint256",
"name": "_amountBonded",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_liquidityAmount",
"type": "uint256"
},
{
"internalType": "int56",
"name": "_tickDifference",
"type": "int56"
},
{
"internalType": "uint256",
"name": "_timeInterval",
"type": "uint256"
}
],
"name": "getKP3RsAtTick",
"outputs": [
{
"internalType": "uint256",
"name": "_kp3rAmount",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_bonds",
"type": "uint256"
}
],
"name": "getPaymentParams",
"outputs": [
{
"internalType": "uint256",
"name": "_boost",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_oneEthQuote",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_extra",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_pool",
"type": "address"
}
],
"name": "getPoolTokens",
"outputs": [
{
"internalType": "address",
"name": "_token0",
"type": "address"
},
{
"internalType": "address",
"name": "_token1",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint128",
"name": "_baseAmount",
"type": "uint128"
},
{
"internalType": "int56",
"name": "_tickDifference",
"type": "int56"
},
{
"internalType": "uint256",
"name": "_timeInterval",
"type": "uint256"
}
],
"name": "getQuoteAtTick",
"outputs": [
{
"internalType": "uint256",
"name": "_quoteAmount",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_gasUsed",
"type": "uint256"
}
],
"name": "getRewardAmount",
"outputs": [
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_keeper",
"type": "address"
},
{
"internalType": "uint256",
"name": "_gasUsed",
"type": "uint256"
}
],
"name": "getRewardAmountFor",
"outputs": [
{
"internalType": "uint256",
"name": "_kp3r",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_bonds",
"type": "uint256"
}
],
"name": "getRewardBoostFor",
"outputs": [
{
"internalType": "uint256",
"name": "_rewardBoost",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "governance",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_pool",
"type": "address"
}
],
"name": "isKP3RToken0",
"outputs": [
{
"internalType": "bool",
"name": "_isKP3RToken0",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "keep3rV2",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "kp3rWethPool",
"outputs": [
{
"internalType": "address",
"name": "poolAddress",
"type": "address"
},
{
"internalType": "bool",
"name": "isKP3RToken0",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "maxBoost",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "minBoost",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_pool",
"type": "address"
},
{
"internalType": "uint32[]",
"name": "_secondsAgo",
"type": "uint32[]"
}
],
"name": "observe",
"outputs": [
{
"internalType": "int56",
"name": "_tickCumulative1",
"type": "int56"
},
{
"internalType": "int56",
"name": "_tickCumulative2",
"type": "int56"
},
{
"internalType": "bool",
"name": "_success",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pendingGovernance",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eth",
"type": "uint256"
}
],
"name": "quote",
"outputs": [
{
"internalType": "uint256",
"name": "_amountOut",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "quoteTwapTime",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_governance",
"type": "address"
}
],
"name": "setGovernance",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_keep3rV2",
"type": "address"
}
],
"name": "setKeep3rV2",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_poolAddress",
"type": "address"
}
],
"name": "setKp3rWethPool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_maxBoost",
"type": "uint256"
}
],
"name": "setMaxBoost",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minBoost",
"type": "uint256"
}
],
"name": "setMinBoost",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "_quoteTwapTime",
"type": "uint32"
}
],
"name": "setQuoteTwapTime",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_targetBond",
"type": "uint256"
}
],
"name": "setTargetBond",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_workExtraGas",
"type": "uint256"
}
],
"name": "setWorkExtraGas",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "targetBond",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "workExtraGas",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"transactionHash": "0x6fd953802a5823400833bc4194cc22ae1450ed664b0768ea4dfcc3c674183a4a",
"receipt": {
"to": null,
"from": "0x54054EA2db6eDC336cB87966815FD66Cc337f224",
"contractAddress": "0xD36Ac9Ff5562abb541F51345f340FB650547a661",
"transactionIndex": 215,
"gasUsed": "1730918",
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"blockHash": "0x5bf3ae13d15a8e7b25e67749025a2fd968d810527b09ef7cc481a497bd6521bc",
"transactionHash": "0x6fd953802a5823400833bc4194cc22ae1450ed664b0768ea4dfcc3c674183a4a",
"logs": [],
"blockNumber": 14524581,
"cumulativeGasUsed": "24579260",
"status": 1,
"byzantium": true
},
"args": [
"0xeb02addCfD8B773A5FFA6B9d1FE99c566f8c44CC",
"0x0D5Dc686d0a2ABBfDaFDFb4D0533E886517d4E83"
],
"numDeployments": 2,
"solcInputHash": "b8876691210a06f2046b37f0b14142fa",
"metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_keep3rV2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_governance\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidKp3rPool\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LiquidityPairInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoGovernanceZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyGovernance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPendingGovernance\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_pendingGovernance\",\"type\":\"address\"}],\"name\":\"GovernanceProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_governance\",\"type\":\"address\"}],\"name\":\"GovernanceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_keep3rV2\",\"type\":\"address\"}],\"name\":\"Keep3rV2Change\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_isKP3RToken0\",\"type\":\"bool\"}],\"name\":\"Kp3rWethPoolChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_maxBoost\",\"type\":\"uint256\"}],\"name\":\"MaxBoostChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_minBoost\",\"type\":\"uint256\"}],\"name\":\"MinBoostChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"_quoteTwapTime\",\"type\":\"uint32\"}],\"name\":\"QuoteTwapTimeChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_targetBond\",\"type\":\"uint256\"}],\"name\":\"TargetBondChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_workExtraGas\",\"type\":\"uint256\"}],\"name\":\"WorkExtraGasChange\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BOOST_BASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"KP3R\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_keeper\",\"type\":\"address\"}],\"name\":\"bonds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_amountBonded\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_liquidityAmount\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"_tickDifference\",\"type\":\"int56\"},{\"internalType\":\"uint256\",\"name\":\"_timeInterval\",\"type\":\"uint256\"}],\"name\":\"getKP3RsAtTick\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_kp3rAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bonds\",\"type\":\"uint256\"}],\"name\":\"getPaymentParams\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_boost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_oneEthQuote\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_extra\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_pool\",\"type\":\"address\"}],\"name\":\"getPoolTokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_baseAmount\",\"type\":\"uint128\"},{\"internalType\":\"int56\",\"name\":\"_tickDifference\",\"type\":\"int56\"},{\"internalType\":\"uint256\",\"name\":\"_timeInterval\",\"type\":\"uint256\"}],\"name\":\"getQuoteAtTick\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_quoteAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_gasUsed\",\"type\":\"uint256\"}],\"name\":\"getRewardAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_keeper\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_gasUsed\",\"type\":\"uint256\"}],\"name\":\"getRewardAmountFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_kp3r\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bonds\",\"type\":\"uint256\"}],\"name\":\"getRewardBoostFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_rewardBoost\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_pool\",\"type\":\"address\"}],\"name\":\"isKP3RToken0\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"_isKP3RToken0\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"keep3rV2\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kp3rWethPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"poolAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isKP3RToken0\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBoost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minBoost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_pool\",\"type\":\"address\"},{\"internalType\":\"uint32[]\",\"name\":\"_secondsAgo\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"_tickCumulative1\",\"type\":\"int56\"},{\"internalType\":\"int56\",\"name\":\"_tickCumulative2\",\"type\":\"int56\"},{\"internalType\":\"bool\",\"name\":\"_success\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingGovernance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_eth\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"quoteTwapTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_governance\",\"type\":\"address\"}],\"name\":\"setGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_keep3rV2\",\"type\":\"address\"}],\"name\":\"setKeep3rV2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_poolAddress\",\"type\":\"address\"}],\"name\":\"setKp3rWethPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxBoost\",\"type\":\"uint256\"}],\"name\":\"setMaxBoost\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minBoost\",\"type\":\"uint256\"}],\"name\":\"setMinBoost\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_quoteTwapTime\",\"type\":\"uint32\"}],\"name\":\"setQuoteTwapTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_targetBond\",\"type\":\"uint256\"}],\"name\":\"setTargetBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_workExtraGas\",\"type\":\"uint256\"}],\"name\":\"setWorkExtraGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetBond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"workExtraGas\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"bonds(address)\":{\"params\":{\"_keeper\":\"The address of the keeper to check\"},\"returns\":{\"_amountBonded\":\"The amount of KP3R the keeper has bonded\"}},\"getKP3RsAtTick(uint256,int56,uint256)\":{\"params\":{\"_liquidityAmount\":\"Amount of liquidity to be converted\",\"_tickDifference\":\"Tick value used to calculate the quote\",\"_timeInterval\":\"Time value used to calculate the quote\"},\"returns\":{\"_kp3rAmount\":\"Amount of KP3R tokens underlying on the given liquidity\"}},\"getPaymentParams(uint256)\":{\"params\":{\"_bonds\":\"Amount of bonded KP3R owned by the keeper\"},\"returns\":{\"_boost\":\"Multiplier per gas unit. Takes into account the base fee and the amount of bonded KP3R\",\"_extra\":\"Amount of extra gas that should be added to the gas spent\",\"_oneEthQuote\":\"Amount of KP3R tokens equivalent to 1 ETH\"}},\"getPoolTokens(address)\":{\"params\":{\"_pool\":\"Address of the correspondant pool\"},\"returns\":{\"_token0\":\"Address of the first token of the pair\",\"_token1\":\"Address of the second token of the pair\"}},\"getQuoteAtTick(uint128,int56,uint256)\":{\"params\":{\"_baseAmount\":\"Amount of token to be converted\",\"_tickDifference\":\"Tick value used to calculate the quote\",\"_timeInterval\":\"Time value used to calculate the quote\"},\"returns\":{\"_quoteAmount\":\"Amount of credits deserved for the baseAmount at the tick value\"}},\"getRewardAmount(uint256)\":{\"params\":{\"_gasUsed\":\"The amount of gas used that will be rewarded\"},\"returns\":{\"_amount\":\"The amount of KP3R that should be awarded to tx.origin\"}},\"getRewardAmountFor(address,uint256)\":{\"params\":{\"_gasUsed\":\"The amount of gas used that will be rewarded\",\"_keeper\":\"The address of the keeper to check\"},\"returns\":{\"_kp3r\":\"The amount of KP3R that should be awarded to the keeper\"}},\"getRewardBoostFor(uint256)\":{\"params\":{\"_bonds\":\"The amount of KP3R tokens bonded by the keeper\"},\"returns\":{\"_rewardBoost\":\"The reward boost that corresponds to the keeper\"}},\"isKP3RToken0(address)\":{\"params\":{\"_pool\":\"Address of the correspondant pool\"},\"returns\":{\"_isKP3RToken0\":\"Boolean indicating the order of the tokens in the pair\"}},\"observe(address,uint32[])\":{\"params\":{\"_pool\":\"Address of the pool to observe\",\"_secondsAgo\":\"Array with time references to observe\"},\"returns\":{\"_success\":\"Boolean indicating if the observe call was succesfull\",\"_tickCumulative1\":\"Cummulative sum of ticks until first time reference\",\"_tickCumulative2\":\"Cummulative sum of ticks until second time reference\"}},\"quote(uint256)\":{\"details\":\"This function allows us to calculate how much KP3R we should pay to a keeper for things expressed in ETH, like gas\",\"params\":{\"_eth\":\"The amount of ETH\"},\"returns\":{\"_amountOut\":\"The amount of KP3R\"}},\"setGovernance(address)\":{\"params\":{\"_governance\":\"The address being proposed as the new governance\"}},\"setKeep3rV2(address)\":{\"params\":{\"_keep3rV2\":\"The address of Keep3r V2\"}},\"setKp3rWethPool(address)\":{\"params\":{\"_poolAddress\":\"The address of the KP3R-WETH pool\"}},\"setMaxBoost(uint256)\":{\"params\":{\"_maxBoost\":\"The maximum boost multiplier\"}},\"setMinBoost(uint256)\":{\"params\":{\"_minBoost\":\"The minimum boost multiplier\"}},\"setQuoteTwapTime(uint32)\":{\"params\":{\"_quoteTwapTime\":\"The twap time for quoting\"}},\"setTargetBond(uint256)\":{\"params\":{\"_targetBond\":\"The target bond amount\"}},\"setWorkExtraGas(uint256)\":{\"params\":{\"_workExtraGas\":\"The work extra gas\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"InvalidKp3rPool()\":[{\"notice\":\"Throws when pool does not have KP3R as token0 nor token1\"}],\"LiquidityPairInvalid()\":[{\"notice\":\"Throws when none of the tokens in the liquidity pair is KP3R\"}],\"NoGovernanceZeroAddress()\":[{\"notice\":\"Throws if trying to set governance to zero address\"}],\"OnlyGovernance()\":[{\"notice\":\"Throws if the caller of the function is not governance\"}],\"OnlyPendingGovernance()\":[{\"notice\":\"Throws if the caller of the function is not pendingGovernance\"}]},\"events\":{\"GovernanceProposal(address)\":{\"notice\":\"Emitted when a new governance is proposed\"},\"GovernanceSet(address)\":{\"notice\":\"Emitted when pendingGovernance accepts to be governance\"},\"Keep3rV2Change(address)\":{\"notice\":\"Emitted when the Keep3r V2 address is changed\"},\"Kp3rWethPoolChange(address,bool)\":{\"notice\":\"Emitted when the kp3r weth pool is changed\"},\"MaxBoostChange(uint256)\":{\"notice\":\"Emitted when the maximum boost multiplier is changed\"},\"MinBoostChange(uint256)\":{\"notice\":\"Emitted when the minimum boost multiplier is changed\"},\"QuoteTwapTimeChange(uint32)\":{\"notice\":\"Emitted when the quote twap time is changed\"},\"TargetBondChange(uint256)\":{\"notice\":\"Emitted when the target bond amount is changed\"},\"WorkExtraGasChange(uint256)\":{\"notice\":\"Emitted when the work extra gas amount is changed\"}},\"kind\":\"user\",\"methods\":{\"BOOST_BASE()\":{\"notice\":\"The boost base used to calculate the boost rewards for the keeper\"},\"KP3R()\":{\"notice\":\"Address of KP3R token\"},\"acceptGovernance()\":{\"notice\":\"Changes the governance from the current governance to the previously proposed address\"},\"bonds(address)\":{\"notice\":\"Returns the amount of KP3R the keeper has bonded\"},\"getKP3RsAtTick(uint256,int56,uint256)\":{\"notice\":\"Given a tick and a liquidity amount, calculates the underlying KP3R tokens\"},\"getPaymentParams(uint256)\":{\"notice\":\"Get multiplier, quote, and extra, in order to calculate keeper payment\"},\"getPoolTokens(address)\":{\"notice\":\"Given a pool address, returns the underlying tokens of the pair\"},\"getQuoteAtTick(uint128,int56,uint256)\":{\"notice\":\"Given a tick and a token amount, calculates the output in correspondant token\"},\"getRewardAmount(uint256)\":{\"notice\":\"Calculates the reward (in KP3R) that corresponds to tx.origin for using gas\"},\"getRewardAmountFor(address,uint256)\":{\"notice\":\"Calculates the reward (in KP3R) that corresponds to a keeper for using gas\"},\"getRewardBoostFor(uint256)\":{\"notice\":\"Calculates the boost in the reward given to a keeper based on the amount of KP3R that keeper has bonded\"},\"governance()\":{\"notice\":\"Stores the governance address\"},\"isKP3RToken0(address)\":{\"notice\":\"Defines the order of the tokens in the pair for twap calculations\"},\"keep3rV2()\":{\"notice\":\"Address of Keep3r V2\"},\"kp3rWethPool()\":{\"notice\":\"KP3R-WETH pool that is being used as oracle\"},\"maxBoost()\":{\"notice\":\"The maximum multiplier used to calculate the amount of gas paid to the Keeper for the gas used to perform a job For example: if the quoted gas used is 1000, then the maximum amount to be paid will be 1000 * maxBoost / BOOST_BASE\"},\"minBoost()\":{\"notice\":\"The minimum multiplier used to calculate the amount of gas paid to the Keeper for the gas used to perform a job For example: if the quoted gas used is 1000, then the minimum amount to be paid will be 1000 * minBoost / BOOST_BASE\"},\"observe(address,uint32[])\":{\"notice\":\"Given an array of secondsAgo, returns UniswapV3 pool cumulatives at that moment\"},\"pendingGovernance()\":{\"notice\":\"Stores the pendingGovernance address\"},\"quote(uint256)\":{\"notice\":\"Calculates the amount of KP3R that corresponds to the ETH passed into the function\"},\"quoteTwapTime()\":{\"notice\":\"The twap time for quoting\"},\"setGovernance(address)\":{\"notice\":\"Proposes a new address to be governance\"},\"setKeep3rV2(address)\":{\"notice\":\"Sets the Keep3r V2 address\"},\"setKp3rWethPool(address)\":{\"notice\":\"Sets KP3R-WETH pool\"},\"setMaxBoost(uint256)\":{\"notice\":\"Sets the maximum boost multiplier\"},\"setMinBoost(uint256)\":{\"notice\":\"Sets the minimum boost multiplier\"},\"setQuoteTwapTime(uint32)\":{\"notice\":\"Sets the quote twap time\"},\"setTargetBond(uint256)\":{\"notice\":\"Sets the target bond amount\"},\"setWorkExtraGas(uint256)\":{\"notice\":\"Sets the work extra gas amount\"},\"targetBond()\":{\"notice\":\"The targeted amount of bonded KP3Rs to max-up reward multiplier For example: if the amount of KP3R the keeper has bonded is targetBond or more, then the keeper will get the maximum boost possible in his rewards, if it's less, the reward boost will be proportional\"},\"workExtraGas()\":{\"notice\":\"The amount of unaccounted gas that is going to be added to keeper payments\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solidity/contracts/Keep3rHelper.sol\":\"Keep3rHelper\"},\"evmVersion\":\"london\",\"libraries\":{\":__CACHE_BREAKER__\":\"0x00000000d41867734bbee4c6863d9255b2b06ac1\"},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":33},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address sender,\\n address recipient,\\n uint256 amount\\n ) external returns (bool);\\n\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a >= b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a / b + (a % b == 0 ? 0 : 1);\\n }\\n}\\n\",\"keccak256\":\"0x49ebdac5d515aebb95168564158940b79d7d5d12fbfe59cec546a00d57fee64a\",\"license\":\"MIT\"},\"@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\nimport './pool/IUniswapV3PoolImmutables.sol';\\nimport './pool/IUniswapV3PoolState.sol';\\nimport './pool/IUniswapV3PoolDerivedState.sol';\\nimport './pool/IUniswapV3PoolActions.sol';\\nimport './pool/IUniswapV3PoolOwnerActions.sol';\\nimport './pool/IUniswapV3PoolEvents.sol';\\n\\n/// @title The interface for a Uniswap V3 Pool\\n/// @notice A Uniswap pool facilitates swapping and automated market making between any two assets that strictly conform\\n/// to the ERC20 specification\\n/// @dev The pool interface is broken up into many smaller pieces\\ninterface IUniswapV3Pool is\\n IUniswapV3PoolImmutables,\\n IUniswapV3PoolState,\\n IUniswapV3PoolDerivedState,\\n IUniswapV3PoolActions,\\n IUniswapV3PoolOwnerActions,\\n IUniswapV3PoolEvents\\n{\\n\\n}\\n\",\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Permissionless pool actions\\n/// @notice Contains pool methods that can be called by anyone\\ninterface IUniswapV3PoolActions {\\n /// @notice Sets the initial price for the pool\\n /// @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\\n /// @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96\\n function initialize(uint160 sqrtPriceX96) external;\\n\\n /// @notice Adds liquidity for the given recipient/tickLower/tickUpper position\\n /// @dev The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback\\n /// in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\\n /// on tickLower, tickUpper, the amount of liquidity, and the current price.\\n /// @param recipient The address for which the liquidity will be created\\n /// @param tickLower The lower tick of the position in which to add liquidity\\n /// @param tickUpper The upper tick of the position in which to add liquidity\\n /// @param amount The amount of liquidity to mint\\n /// @param data Any data that should be passed through to the callback\\n /// @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\\n /// @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\\n function mint(\\n address recipient,\\n int24 tickLower,\\n int24 tickUpper,\\n uint128 amount,\\n bytes calldata data\\n ) external returns (uint256 amount0, uint256 amount1);\\n\\n /// @notice Collects tokens owed to a position\\n /// @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\\n /// Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\\n /// amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\\n /// actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\\n /// @param recipient The address which should receive the fees collected\\n /// @param tickLower The lower tick of the position for which to collect fees\\n /// @param tickUpper The upper tick of the position for which to collect fees\\n /// @param amount0Requested How much token0 should be withdrawn from the fees owed\\n /// @param amount1Requested How much token1 should be withdrawn from the fees owed\\n /// @return amount0 The amount of fees collected in token0\\n /// @return amount1 The amount of fees collected in token1\\n function collect(\\n address recipient,\\n int24 tickLower,\\n int24 tickUpper,\\n uint128 amount0Requested,\\n uint128 amount1Requested\\n ) external returns (uint128 amount0, uint128 amount1);\\n\\n /// @notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\\n /// @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\\n /// @dev Fees must be collected separately via a call to #collect\\n /// @param tickLower The lower tick of the position for which to burn liquidity\\n /// @param tickUpper The upper tick of the position for which to burn liquidity\\n /// @param amount How much liquidity to burn\\n /// @return amount0 The amount of token0 sent to the recipient\\n /// @return amount1 The amount of token1 sent to the recipient\\n function burn(\\n int24 tickLower,\\n int24 tickUpper,\\n uint128 amount\\n ) external returns (uint256 amount0, uint256 amount1);\\n\\n /// @notice Swap token0 for token1, or token1 for token0\\n /// @dev The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback\\n /// @param recipient The address to receive the output of the swap\\n /// @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\\n /// @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\\n /// @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\\n /// value after the swap. If one for zero, the price cannot be greater than this value after the swap\\n /// @param data Any data to be passed through to the callback\\n /// @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\\n /// @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive\\n function swap(\\n address recipient,\\n bool zeroForOne,\\n int256 amountSpecified,\\n uint160 sqrtPriceLimitX96,\\n bytes calldata data\\n ) external returns (int256 amount0, int256 amount1);\\n\\n /// @notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\\n /// @dev The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallback\\n /// @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\\n /// with 0 amount{0,1} and sending the donation amount(s) from the callback\\n /// @param recipient The address which will receive the token0 and token1 amounts\\n /// @param amount0 The amount of token0 to send\\n /// @param amount1 The amount of token1 to send\\n /// @param data Any data to be passed through to the callback\\n function flash(\\n address recipient,\\n uint256 amount0,\\n uint256 amount1,\\n bytes calldata data\\n ) external;\\n\\n /// @notice Increase the maximum number of price and liquidity observations that this pool will store\\n /// @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\\n /// the input observationCardinalityNext.\\n /// @param observationCardinalityNext The desired minimum number of observations for the pool to store\\n function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external;\\n}\\n\",\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that is not stored\\n/// @notice Contains view functions to provide information about the pool that is computed rather than stored on the\\n/// blockchain. The functions here may have variable gas costs.\\ninterface IUniswapV3PoolDerivedState {\\n /// @notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\\n /// @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\\n /// the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\\n /// you must call it with secondsAgos = [3600, 0].\\n /// @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\\n /// log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\\n /// @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\\n /// @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\\n /// @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\\n /// timestamp\\n function observe(uint32[] calldata secondsAgos)\\n external\\n view\\n returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s);\\n\\n /// @notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\\n /// @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\\n /// I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\\n /// snapshot is taken and the second snapshot is taken.\\n /// @param tickLower The lower tick of the range\\n /// @param tickUpper The upper tick of the range\\n /// @return tickCumulativeInside The snapshot of the tick accumulator for the range\\n /// @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\\n /// @return secondsInside The snapshot of seconds per liquidity for the range\\n function snapshotCumulativesInside(int24 tickLower, int24 tickUpper)\\n external\\n view\\n returns (\\n int56 tickCumulativeInside,\\n uint160 secondsPerLiquid