[{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPrice","type":"uint256"}],"name":"PriceRouter__AssetAboveMaxPrice","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"minPrice","type":"uint256"}],"name":"PriceRouter__AssetBelowMinPrice","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"PriceRouter__InvalidAsset","type":"error"},{"inputs":[{"internalType":"uint256","name":"maxPrice","type":"uint256"},{"internalType":"uint256","name":"bufferedMaxPrice","type":"uint256"}],"name":"PriceRouter__InvalidMaxPrice","type":"error"},{"inputs":[{"internalType":"uint256","name":"minPrice","type":"uint256"},{"internalType":"uint256","name":"bufferedMinPrice","type":"uint256"}],"name":"PriceRouter__InvalidMinPrice","type":"error"},{"inputs":[],"name":"PriceRouter__LengthMismatch","type":"error"},{"inputs":[{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"PriceRouter__MinPriceGreaterThanMaxPrice","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"PriceRouter__PriceNotAvailable","type":"error"},{"inputs":[{"internalType":"bool","name":"expected","type":"bool"},{"internalType":"bool","name":"actual","type":"bool"}],"name":"PriceRouter__PriceRangeDenominationMisMatch","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"PriceRouter__PriceRangeNotAvailable","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"timeSinceLastUpdate","type":"uint256"},{"internalType":"uint256","name":"heartbeat","type":"uint256"}],"name":"PriceRouter__StalePrice","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"PriceRouter__UnsupportedAsset","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"}],"name":"AddAsset","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":[],"name":"DEFAULT_HEART_BEAT","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"asset","type":"address"},{"internalType":"uint256","name":"minPrice","type":"uint256"},{"internalType":"uint256","name":"maxPrice","type":"uint256"},{"internalType":"bool","name":"rangeInETH","type":"bool"},{"internalType":"uint96","name":"heartbeat","type":"uint96"}],"name":"addAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feedRegistry","outputs":[{"internalType":"contract FeedRegistryInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"","type":"address"}],"name":"getAssetConfig","outputs":[{"internalType":"uint256","name":"minPrice","type":"uint256"},{"internalType":"uint256","name":"maxPrice","type":"uint256"},{"internalType":"bool","name":"isPriceRangeInETH","type":"bool"},{"internalType":"uint96","name":"heartbeat","type":"uint96"},{"internalType":"bool","name":"isSupported","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"baseAsset","type":"address"},{"internalType":"contract ERC20","name":"quoteAsset","type":"address"}],"name":"getExchangeRate","outputs":[{"internalType":"uint256","name":"exchangeRate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20[]","name":"baseAssets","type":"address[]"},{"internalType":"contract ERC20","name":"quoteAsset","type":"address"}],"name":"getExchangeRates","outputs":[{"internalType":"uint256[]","name":"exchangeRates","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"asset","type":"address"}],"name":"getPriceRange","outputs":[{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"},{"internalType":"bool","name":"isETH","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20[]","name":"_assets","type":"address[]"}],"name":"getPriceRanges","outputs":[{"internalType":"uint256[]","name":"min","type":"uint256[]"},{"internalType":"uint256[]","name":"max","type":"uint256[]"},{"internalType":"bool[]","name":"isETH","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"baseAsset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"contract ERC20","name":"quoteAsset","type":"address"}],"name":"getValue","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"asset","type":"address"}],"name":"getValueInUSD","outputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20[]","name":"baseAssets","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"contract ERC20","name":"quoteAsset","type":"address"}],"name":"getValues","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"asset","type":"address"}],"name":"isSupported","outputs":[{"internalType":"bool","name":"","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"}]