{"hooks":[{"id":"DynamicLTV","description":"Tightens max LTV as realised volatility climbs.","knot":"slip","color":"#E63946","lifecycle":[{"name":"beforeBorrow","flag_bit":4},{"name":"afterDeposit","flag_bit":2}],"config_schema":{"baseLtvBps":"u16","sensitivity":"u16","volFloorBps":"u32","minLtvBps":"u16"}},{"id":"TimeTriggerLiq","description":"Bounds liquidations to operator windows; delays under stale oracle.","knot":"timer","color":"#5BC0EB","lifecycle":[{"name":"beforeLiquidate","flag_bit":64}],"config_schema":{"allowedWindows":"[{startSec,endSec}]","maxOracleAgeSlots":"u64","delaySlots":"u64"}},{"id":"WhitelistBorrow","description":"Restricts new debt to a registered allowlist.","knot":"lock","color":"#9D6BFF","lifecycle":[{"name":"beforeBorrow","flag_bit":4}],"config_schema":{"allowedOwners":"[pubkey]"}},{"id":"AntiMEVLiq","description":"Delays liquidations and (optionally) restricts to known keepers.","knot":"bowline","color":"#7CB07A","lifecycle":[{"name":"beforeLiquidate","flag_bit":64}],"config_schema":{"minDelaySlots":"u64","keepers":"[pubkey]"}},{"id":"AutoHedge","description":"Opens a Drift perp short when collateral crosses a trigger band.","knot":"helix","color":"#FFD976","lifecycle":[{"name":"afterBorrow","flag_bit":8},{"name":"afterDeposit","flag_bit":2}],"config_schema":{"triggerPriceE8":"u64","hedgeRatioBps":"u16","marketPubkey":"pubkey"}},{"id":"ReputationRate","description":"Discounts borrow rate against on-chain repayment reputation.","knot":"rolling","color":"#F0EAD6","lifecycle":[{"name":"beforeBorrow","flag_bit":4}],"config_schema":{"baseRateBps":"u16","maxDiscountBps":"u16","providerProgram":"pubkey"}}],"count":6}