Developers

Interfaces

Solidity interfaces of the core contracts.

IBarrierCore

IBarrierCore.solsolidity
interface IBarrierCore {
    function depositCarry(uint256 seriesId, uint256 usdgAmount) external;
    function depositGuard(uint256 seriesId, uint256 stockAmount) external;
    function strike(uint256 seriesId) external;
    function observe(uint256 seriesId) external;
    function settle(uint256 seriesId) external;
    function refund(uint256 seriesId) external;
    function claimCoupons(uint256 seriesId) external returns (uint256 usdg);
    function redeem(uint256 seriesId, uint256 units) external;
    function requiredPrefund(uint256 seriesId, uint256 stockAmount) external view returns (uint256);
    function pendingWork(uint256 start, uint256 count) external view returns (uint256[] memory);
}

ISeriesRegistry

soliditysolidity
interface ISeriesRegistry {
    struct Series {
        address stockToken;
        uint16 autocallBps;
        uint16 barrierBps;
        uint16 couponLowBps;
        uint16 couponHighBps;
        uint16 couponBps;      // zero until strike
        uint128 s0;            // 8 decimals, zero until strike
        uint64[13] closes;
        uint8 status;
        uint8 observed;
    }
    function getSeries(uint256 seriesId) external view returns (Series memory);
    function openSeriesOf(address stockToken) external view returns (uint256[] memory);
    function seriesCount() external view returns (uint256);
}

BarrierLegs (ERC-1155)

soliditysolidity
interface IBarrierLegs /* is IERC1155 */ {
    function carryId(uint256 seriesId) external pure returns (uint256);
    function guardId(uint256 seriesId) external pure returns (uint256);
}

IOracleAdapter

soliditysolidity
interface IOracleAdapter {
    function closeAt(address stockToken, uint64 timestamp) external view returns (uint256 price, uint64 updatedAt, bool fallbackUsed);
    function latest(address stockToken) external view returns (uint256 price, uint64 updatedAt);
}

ITradingCalendar

soliditysolidity
interface ITradingCalendar {
    function isTradingDay(uint64 day) external view returns (bool);
    function closeTime(uint64 day) external view returns (uint64);
    function nextTradingDay(uint64 day) external view returns (uint64);
}

Token engine

soliditysolidity
interface IBuybackAuction { function price() external view returns (uint256); function sell(uint256 berrierIn, uint256 minUsdgOut) external; }
interface ITreasuryFloor { function floor() external view returns (uint256); function redeem(uint256 berrierIn) external; }
interface IBackstop /* is IERC4626 */ { function deployed() external view returns (uint256); function requestRedeem(uint256 shares) external; }

Governance

soliditysolidity
interface IVeBerrier {
    function createLock(uint256 amount, uint256 unlockTime) external;
    function increaseAmount(uint256 amount) external;
    function increaseUnlockTime(uint256 unlockTime) external;
    function balanceOf(address owner) external view returns (uint256);
}

Stock Tokens are not offered to US persons. A barrier note can lose value: if the final close sits below the barrier, CARRY holders are paid in stock valued at S0, which can be worth less than what they put in. Nothing on this site is investment advice.

© 2026 Get Berrier · @getberrier