packages/contracts-core/contracts/interfaces/InterfaceGasOracle.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
interface InterfaceGasOracle {
/**
* @notice Fetches the latest gas data for the chain from `Destination` contract,
* and uses it to update the oracle values for the requested chain.
* @param domain Domain to update the gas data for
*/
function updateGasData(uint32 domain) external;
/**
* @notice Returns the gas data for the local chain.
*/
function getGasData() external view returns (uint256 paddedGasData);
/**
* @notice Returns the gas data for the given domain, in the decoded format.
* @param domain Domain of chain to get gas data for
* @return gasPrice Gas price for the chain (in Wei per gas unit)
* @return dataPrice Calldata price (in Wei per byte of content)
* @return execBuffer Tx fee safety buffer for message execution (in Wei)
* @return amortAttCost Amortized cost for attestation submission (in Wei)
* @return etherPrice Ratio of Chain's Ether Price / Mainnet Ether Price (in BWAD)
* @return markup Markup for the message execution (in BWAD)
*/
function getDecodedGasData(uint32 domain)
external
view
returns (
uint256 gasPrice,
uint256 dataPrice,
uint256 execBuffer,
uint256 amortAttCost,
uint256 etherPrice,
uint256 markup
);
/**
* @notice Returns the minimum tips for sending a message to a given destination.
* @param destination Domain of destination chain
* @param paddedRequest Padded encoded message execution request on destination chain
* @param contentLength The length of the message content
* @return paddedTips Padded encoded minimum tips information
*/
function getMinimumTips(uint32 destination, uint256 paddedRequest, uint256 contentLength)
external
view
returns (uint256 paddedTips);
}