pub struct VaultControls {
pub max_unlock_duration_secs: u32,
pub max_report_age_secs: u32,
pub min_report_interval_secs: u32,
pub cancel_grace_slots: u32,
pub max_nav_gain_bps: u16,
pub atomic_redeem_fee_bps: u16,
pub max_swap_slippage_bps: u16,
/* private fields */
}Expand description
Admin-configured economic risk controls. Zero disables a control, so the all-zeros default is “every control off”.
Fields§
§max_unlock_duration_secs: u32Clamp on the adaptive profit-unlock window: a reported gain drips over
min(now - last_update_ts, max_unlock_duration_secs). 0 = gains apply
instantly (no smoothing).
max_report_age_secs: u32Atomic redeems reject once the last NAV report is older than this (pre-first-report vaults are exempt). Deposits and queued redeems are never staleness-gated. 0 = disabled.
min_report_interval_secs: u32Reports arriving sooner than this after the previous report are rejected (the first report is exempt). 0 = disabled.
cancel_grace_slots: u32Strike-eligible unstruck withdrawal tickets become cancellable again
once clock.slot >= request_slot + cancel_grace_slots — the
withdrawal-authority liveness escape. 0 = escape disabled.
A report may not move the net share price up by more than this many bps vs. the stored pre-report price. May exceed 10_000 (a bound above +100% is meaningful). 0 = disabled.
atomic_redeem_fee_bps: u16Fee on atomic redemptions, retained by the pool for remaining holders. At most 10_000.
max_swap_slippage_bps: u16Oracle-valued swap output must be at least input value times
1 - max_swap_slippage_bps. At most 10_000. 0 = disabled.
Implementations§
Trait Implementations§
Source§impl Clone for VaultControls
impl Clone for VaultControls
Source§fn clone(&self) -> VaultControls
fn clone(&self) -> VaultControls
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for VaultControls
Source§impl Debug for VaultControls
impl Debug for VaultControls
Source§impl Default for VaultControls
impl Default for VaultControls
Source§fn default() -> VaultControls
fn default() -> VaultControls
impl Eq for VaultControls
Source§impl PartialEq for VaultControls
impl PartialEq for VaultControls
Source§fn eq(&self, other: &VaultControls) -> bool
fn eq(&self, other: &VaultControls) -> bool
self and other values to be equal, and is used by ==.Source§impl<'de, WincodeConfig: Config> SchemaRead<'de, WincodeConfig> for VaultControls
impl<'de, WincodeConfig: Config> SchemaRead<'de, WincodeConfig> for VaultControls
type Dst = VaultControls
Source§fn read(
reader: impl Reader<'de>,
dst: &mut MaybeUninit<Self::Dst>,
) -> ReadResult<()>
fn read( reader: impl Reader<'de>, dst: &mut MaybeUninit<Self::Dst>, ) -> ReadResult<()>
Source§impl<WincodeConfig: Config> SchemaWrite<WincodeConfig> for VaultControls
impl<WincodeConfig: Config> SchemaWrite<WincodeConfig> for VaultControls
impl StructuralPartialEq for VaultControls
Source§impl<WincodeConfig: Config> ZeroCopy<WincodeConfig> for VaultControlswhere
for<'_wincode_internal, '_wincode_internal, '_wincode_internal, '_wincode_internal> u32: ZeroCopy<WincodeConfig>,
for<'_wincode_internal, '_wincode_internal, '_wincode_internal> u16: ZeroCopy<WincodeConfig>,
for<'_wincode_internal> [u8; 2]: ZeroCopy<WincodeConfig>,
for<'_wincode_internal> Assert<{ _ }>: IsTrue,
impl<WincodeConfig: Config> ZeroCopy<WincodeConfig> for VaultControlswhere
for<'_wincode_internal, '_wincode_internal, '_wincode_internal, '_wincode_internal> u32: ZeroCopy<WincodeConfig>,
for<'_wincode_internal, '_wincode_internal, '_wincode_internal> u16: ZeroCopy<WincodeConfig>,
for<'_wincode_internal> [u8; 2]: ZeroCopy<WincodeConfig>,
for<'_wincode_internal> Assert<{ _ }>: IsTrue,
Source§fn from_bytes<'de>(bytes: &'de [u8], config: C) -> Result<&'de Self, ReadError>where
Self: Sized + SchemaRead<'de, C, Dst = Self>,
fn from_bytes<'de>(bytes: &'de [u8], config: C) -> Result<&'de Self, ReadError>where
Self: Sized + SchemaRead<'de, C, Dst = Self>,
crate::ZeroCopy::from_bytes, but allows the caller to provide a custom configuration.Source§fn from_bytes_mut<'de>(
bytes: &'de mut [u8],
config: C,
) -> Result<&'de mut Self, ReadError>where
Self: Sized + SchemaRead<'de, C, Dst = Self>,
fn from_bytes_mut<'de>(
bytes: &'de mut [u8],
config: C,
) -> Result<&'de mut Self, ReadError>where
Self: Sized + SchemaRead<'de, C, Dst = Self>,
crate::ZeroCopy::from_bytes_mut, but allows the caller to provide a custom configuration.Auto Trait Implementations§
impl Freeze for VaultControls
impl RefUnwindSafe for VaultControls
impl Send for VaultControls
impl Sync for VaultControls
impl Unpin for VaultControls
impl UnsafeUnpin for VaultControls
impl UnwindSafe for VaultControls
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<'de, T, C> Deserialize<'de, C> for Twhere
C: Config,
T: SchemaRead<'de, C>,
impl<'de, T, C> Deserialize<'de, C> for Twhere
C: Config,
T: SchemaRead<'de, C>,
Source§impl<'de, T> Deserialize<'de> for Twhere
T: SchemaRead<'de, Configuration>,
impl<'de, T> Deserialize<'de> for Twhere
T: SchemaRead<'de, Configuration>,
Source§impl<T> DeserializeOwned for Twhere
T: SchemaReadOwned<Configuration>,
impl<T> DeserializeOwned for Twhere
T: SchemaReadOwned<Configuration>,
Source§fn deserialize_from<'de>(src: impl Reader<'de>) -> Result<Self::Dst, ReadError>
fn deserialize_from<'de>(src: impl Reader<'de>) -> Result<Self::Dst, ReadError>
Reader into a new Self::Dst.Source§fn deserialize_from_into<'de>(
src: impl Reader<'de>,
dst: &mut MaybeUninit<Self::Dst>,
) -> Result<(), ReadError>
fn deserialize_from_into<'de>( src: impl Reader<'de>, dst: &mut MaybeUninit<Self::Dst>, ) -> Result<(), ReadError>
Reader into dst.Source§impl<T, C> DeserializeOwned<C> for Twhere
C: Config,
T: SchemaReadOwned<C>,
impl<T, C> DeserializeOwned<C> for Twhere
C: Config,
T: SchemaReadOwned<C>,
Source§fn deserialize_from<'de>(src: impl Reader<'de>) -> Result<Self::Dst, ReadError>
fn deserialize_from<'de>(src: impl Reader<'de>) -> Result<Self::Dst, ReadError>
Reader into a new Self::Dst.Source§fn deserialize_from_into<'de>(
src: impl Reader<'de>,
dst: &mut MaybeUninit<Self::Dst>,
) -> Result<(), ReadError>
fn deserialize_from_into<'de>( src: impl Reader<'de>, dst: &mut MaybeUninit<Self::Dst>, ) -> Result<(), ReadError>
Reader into dst.impl<T, C> SchemaReadOwned<C> for Twhere
C: ConfigCore,
T: for<'de> SchemaRead<'de, C>,
Source§impl<T> Serialize for T
impl<T> Serialize for T
Source§fn serialize(src: &Self::Src) -> Result<Vec<u8>, WriteError>
fn serialize(src: &Self::Src) -> Result<Vec<u8>, WriteError>
Vec of bytes.Source§fn serialize_into(dst: impl Writer, src: &Self::Src) -> Result<(), WriteError>
fn serialize_into(dst: impl Writer, src: &Self::Src) -> Result<(), WriteError>
Source§fn serialized_size(src: &Self::Src) -> Result<u64, WriteError>
fn serialized_size(src: &Self::Src) -> Result<u64, WriteError>
Source§impl<T, C> Serialize<C> for T
impl<T, C> Serialize<C> for T
Source§fn serialize(src: &Self::Src, config: C) -> Result<Vec<u8>, WriteError>
fn serialize(src: &Self::Src, config: C) -> Result<Vec<u8>, WriteError>
Vec of bytes.Source§fn serialize_into(
dst: impl Writer,
src: &Self::Src,
config: C,
) -> Result<(), WriteError>
fn serialize_into( dst: impl Writer, src: &Self::Src, config: C, ) -> Result<(), WriteError>
Writer.