Building Hooks

Hooks add custom logic at protocol events.

interface IHooks {
    // Term events
    function beforeTermInitialize(address caller, TermKey memory termKey, bytes calldata hookData) external;
    function afterTermInitialize(address caller, TermKey memory termKey, bytes calldata hookData) external;
    function beforeTermModifyPosition(address caller, TermKey memory termKey, TermModifyPositionParams memory params, bytes calldata hookData) external;
    function afterTermModifyPosition(address caller, TermKey memory termKey, TermModifyPositionParams memory params, bytes calldata hookData) external;
    function beforeTermSettle(address caller, TermKey memory termKey, TermSettleParams memory params, bytes calldata hookData) external;
    function afterTermSettle(address caller, TermKey memory termKey, TermSettleParams memory params, bytes calldata hookData) external;

    // Loan events
    function beforeAllocate(address caller, TermKey memory termKey, LoanKey memory loanKey, AllocateParams memory params, bytes calldata hookData) external;
    function afterAllocate(address caller, TermKey memory termKey, LoanKey memory loanKey, AllocateParams memory params, bytes calldata hookData) external;
    function beforeRepay(address caller, TermKey memory termKey, LoanKey memory loanKey, RepayParams memory params, bytes calldata hookData) external;
    function afterRepay(address caller, TermKey memory termKey, LoanKey memory loanKey, RepayParams memory params, bytes calldata hookData) external;
}

Access Control — Whitelist addresses, require KYC

Protocol Integration — Connect to Aave, Compound, etc.

Custom Logic — Rate limiting, timelocks, custom fees


Built-in hooks: P2P (manual loan approval), AaveV3 (idle capital optimization), Timelock (delayed execution)


  • Implement the interface above

  • All functions are optional

  • Reverting blocks the operation

  • Reference deployed contracts for implementation details

Last updated