Skip to main content

IOracleFactory

Git Source

Title: IOracleFactory

Author: OlympusDAO

Oracle-agnostic interface for oracle factories

Functions​

getPriceCache​

Gets the configured price cache policy

function getPriceCache() external view returns (address policy);

Returns

NameTypeDescription
policyaddressThe price cache policy address

createOracle​

Creates a new oracle for a base/quote token pair

function createOracle(address baseToken_, address quoteToken_, uint48 maxAge_, bytes calldata customParams_)
external
returns (address oracle);

Parameters

NameTypeDescription
baseToken_addressThe base token address
quoteToken_addressThe quote token address
maxAge_uint48The maximum age (in seconds) of cached prices used by the oracle
customParams_bytesService-specific custom parameters (can be empty)

Returns

NameTypeDescription
oracleaddressThe address of the created oracle

getOracle​

Gets the oracle address for a base/quote token pair

function getOracle(address baseToken_, address quoteToken_, uint48 maxAge_) external view returns (address oracle);

Parameters

NameTypeDescription
baseToken_addressThe base token address
quoteToken_addressThe quote token address
maxAge_uint48The maximum age (in seconds) of cached prices used by the oracle

Returns

NameTypeDescription
oracleaddressThe address of the oracle, or address(0) if not found

getOracles​

Gets all deployed oracle addresses

function getOracles() external view returns (address[] memory oracles);

Returns

NameTypeDescription
oraclesaddress[]Array of all oracle addresses

enableOracle​

Enables a specific oracle

function enableOracle(address oracle_) external;

Parameters

NameTypeDescription
oracle_addressThe oracle address to enable

disableOracle​

Disables a specific oracle

function disableOracle(address oracle_) external;

Parameters

NameTypeDescription
oracle_addressThe oracle address to disable

isOracleEnabled​

Checks if a specific oracle is enabled

function isOracleEnabled(address oracle_) external view returns (bool enabled);

Parameters

NameTypeDescription
oracle_addressThe oracle address to check

Returns

NameTypeDescription
enabledboolTrue if the oracle is enabled, false otherwise

getOracleContext​

Checks if a factory-created oracle is enabled and returns the configured price cache

Reverts if:

  • The policy is deactivated in Kernel
  • oracle_ was not created by this factory
function getOracleContext(address oracle_) external view returns (bool enabled, address policy);

Parameters

NameTypeDescription
oracle_addressThe oracle address to check

Returns

NameTypeDescription
enabledboolTrue if the oracle is enabled, false otherwise
policyaddressThe configured price cache policy address

cachePrice​

Caches the provided base/quote pair

Intended to be called by oracle contracts created by this factory

function cachePrice(address baseToken_, address quoteToken_) external;

Parameters

NameTypeDescription
baseToken_addressThe base token address
quoteToken_addressThe quote token address

cachePriceIfNecessary​

Caches the provided base/quote pair only when stale

Intended to be called by oracle contracts created by this factory

function cachePriceIfNecessary(address baseToken_, address quoteToken_) external;

Parameters

NameTypeDescription
baseToken_addressThe base token address
quoteToken_addressThe quote token address

enableCreation​

Enables oracle creation

function enableCreation() external;

disableCreation​

Disables oracle creation

function disableCreation() external;

setPriceCache​

Sets the configured price cache policy

function setPriceCache(address policy_) external;

Parameters

NameTypeDescription
policy_addressThe price cache policy address

Events​

OracleCreated​

Emitted when a new oracle is created

event OracleCreated(address indexed oracle, address indexed baseToken, address indexed quoteToken);

Parameters

NameTypeDescription
oracleaddressThe address of the created oracle
baseTokenaddressThe base token address
quoteTokenaddressThe quote token address

CreationEnabled​

Emitted when oracle creation is enabled

event CreationEnabled();

CreationDisabled​

Emitted when oracle creation is disabled

event CreationDisabled();

OracleEnabled​

Emitted when an oracle is enabled

event OracleEnabled(address indexed oracle);

Parameters

NameTypeDescription
oracleaddressThe address of the enabled oracle

OracleDisabled​

Emitted when an oracle is disabled

event OracleDisabled(address indexed oracle);

Parameters

NameTypeDescription
oracleaddressThe address of the disabled oracle

PriceCacheSet​

Emitted when the price cache policy is updated

event PriceCacheSet(address indexed policy);

Parameters

NameTypeDescription
policyaddressThe updated price cache policy address

Errors​

OracleFactory_InvalidToken​

Thrown when a token address is invalid (zero address or not a contract)

error OracleFactory_InvalidToken(address token);

Parameters

NameTypeDescription
tokenaddressInvalid token address

OracleFactory_PolicyNotActive​

Thrown when this policy is no longer active in Kernel

error OracleFactory_PolicyNotActive();

OracleFactory_UnsupportedModuleVersion​

Thrown when module version is not supported

error OracleFactory_UnsupportedModuleVersion(bytes5 keycode, uint8 major, uint8 minor);

Parameters

NameTypeDescription
keycodebytes5Keycode of the module
majoruint8Major version of the module
minoruint8Minor version of the module

OracleFactory_UnsupportedModuleInterface​

Thrown when module does not support interface

error OracleFactory_UnsupportedModuleInterface(bytes5 keycode, bytes4 interfaceId);

Parameters

NameTypeDescription
keycodebytes5Keycode of the module
interfaceIdbytes4Interface identifier, as specified in ERC-165

OracleFactory_CreationDisabled​

Thrown when oracle creation is disabled

error OracleFactory_CreationDisabled();

OracleFactory_OracleAlreadyExists​

Thrown when trying to create an oracle that already exists

error OracleFactory_OracleAlreadyExists(address baseToken, address quoteToken);

Parameters

NameTypeDescription
baseTokenaddressBase token address
quoteTokenaddressQuote token address

OracleFactory_InvalidTokenPair​

Thrown when a token pair is invalid

error OracleFactory_InvalidTokenPair(address baseToken, address quoteToken);

Parameters

NameTypeDescription
baseTokenaddressBase token address
quoteTokenaddressQuote token address

OracleFactory_CreationAlreadyEnabled​

Thrown when creation is already enabled

error OracleFactory_CreationAlreadyEnabled();

OracleFactory_CreationAlreadyDisabled​

Thrown when creation is already disabled

error OracleFactory_CreationAlreadyDisabled();

OracleFactory_InvalidOracle​

Thrown when an invalid oracle address is provided

error OracleFactory_InvalidOracle(address oracle);

Parameters

NameTypeDescription
oracleaddressInvalid oracle address

OracleFactory_OracleAlreadyEnabled​

Thrown when an oracle is already enabled

error OracleFactory_OracleAlreadyEnabled(address oracle);

Parameters

NameTypeDescription
oracleaddressAlready enabled oracle address

OracleFactory_OracleAlreadyDisabled​

Thrown when an oracle is already disabled

error OracleFactory_OracleAlreadyDisabled(address oracle);

Parameters

NameTypeDescription
oracleaddressAlready disabled oracle address

OracleFactory_OracleDisabled​

Thrown when an oracle is disabled and attempts an operation that requires enabled state

error OracleFactory_OracleDisabled(address oracle);

Parameters

NameTypeDescription
oracleaddressDisabled oracle address

OracleFactory_InvalidPriceCache​

Thrown when a price cache policy address is invalid

error OracleFactory_InvalidPriceCache(address policy);

Parameters

NameTypeDescription
policyaddressInvalid price cache policy address

OracleFactory_InvalidEnableData​

Thrown when re-enable pair arrays are malformed

error OracleFactory_InvalidEnableData(uint256 baseTokenLength, uint256 quoteTokenLength);

Parameters

NameTypeDescription
baseTokenLengthuint256The number of base tokens
quoteTokenLengthuint256The number of quote tokens