Solidity Interface
The complete IBROOracle interface. Import directly or use the ABI for off-chain reads. All functions are view -- reading is free (no gas).
IBROOracle.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
interface IBROOracle {
struct ProtocolScore {
uint16 bri; // Composite score, 300-1000 (higher = safer)
uint8 forgeScale; // 0=RAW .. 6=ADAMANTINE
uint64 updatedAt; // Timestamp of last update
uint64 sequenceNumber; // Monotonically increasing per protocol
bool exists; // Whether this protocol has been scored
uint16[12] dimensions; // D1-D12, each 0-100
bytes32 evidenceHash; // Hash of evidence/dimension data
}
/// @notice Composite BRI, forge scale, timestamp, and staleness
function getScore(string calldata slug)
external view returns (uint16 bri, uint8 forgeScale, uint64 updatedAt, bool isStale);
/// @notice Full ProtocolScore struct including all 12 dimensions
function getFullScore(string calldata slug)
external view returns (ProtocolScore memory);
/// @notice Single dimension score by index (0-11)
function getDimension(string calldata slug, uint8 dimensionIndex)
external view returns (uint16 score);
/// @notice Batch read for portfolio monitoring
function batchGetScores(string[] calldata slugs)
external view returns (uint16[] memory bris, uint8[] memory forgeScales, bool[] memory stale);
/// @notice Convenience staleness check
function isStale(string calldata slug) external view returns (bool);
}Function Reference
getScore(string)→ (uint16, uint8, uint64, bool)Returns composite BRI, Forge Scale tier, last update timestamp, and staleness flag. The primary read function for most integrations.
getFullScore(string)→ ProtocolScore memoryFull score struct with all 12 dimension scores, evidence hash, sequence number, and existence flag.
getDimension(string, uint8)→ uint16Single dimension score (0-100) by index. Use for custom re-weighting or dimension-specific gates.
batchGetScores(string[])→ (uint16[], uint8[], bool[])Batch read BRI, Forge Scale, and staleness for multiple protocols in one call. Ideal for portfolio monitoring.
isStale(string)→ boolTrue if the score exceeds the staleness threshold (default 24h). Always check before acting on a score.