Struct Spec

Source
pub struct Spec;

Implementations§

Source§

impl Spec

Source

pub const fn spec_xdr___constructor() -> [u8; 508]

Initializes the strategy with the given parameters.

It sets up the strategy’s underlying asset and any additional parameters required for the strategy.

§Parameters
  • env: The execution environment.
  • asset: The address of the underlying asset that this strategy will manage.
  • init_args: A vector of additional arguments, which may vary depending on the strategy’s requirements (e.g., configurations, addresses).
Source§

impl Spec

Source

pub const fn spec_xdr_asset() -> [u8; 468]

Returns the underlying asset address managed by the strategy.

This function provides the address of the asset that this strategy is managing. It is used by the DeFindex vault to determine which asset is associated with this strategy.

§Parameters
  • env: The execution environment.
§Returns
  • Ok(Address) containing the asset address.
  • Err(StrategyError) if the asset address cannot be retrieved.
Source§

impl Spec

Source

pub const fn spec_xdr_deposit() -> [u8; 776]

Deposits the specified amount of the asset into the strategy.

This function allows the DeFindex vault to deposit assets into the strategy.

§Parameters
  • env: The execution environment.
  • amount: The amount of the underlying asset to deposit into the strategy.
  • from: The address from which the asset will be transferred (usually the DeFindex vault).
§Returns
  • Ok(i128) containing the balance of the from address after the deposit.
  • Err(StrategyError) if the deposit fails for any reason.

It is very important that the return is the balance of the from address in the context of DeFindex. This ensures that the vault can keep track of the strategy’s status,

Source§

impl Spec

Source

pub const fn spec_xdr_harvest() -> [u8; 556]

Harvests yields generated by the strategy.

This function triggers any necessary actions required to generate or claim yields from the underlying DeFi protocol or strategy. It can be used to reinvest rewards, claim interest, or perform other actions that maximize returns.

§Parameters
  • env: The execution environment.
  • from: The address that is triggering the harvest.
§Returns
  • Ok(()) if the harvest is successful.
  • Err(StrategyError) if the harvest fails.
Source§

impl Spec

Source

pub const fn spec_xdr_balance() -> [u8; 840]

Returns the current balance of the underlying asset in the strategy.

This function provides the current balance of the underlying asset that is managed by the strategy on behalf of the specified address. It is used to track the assets held in the strategy.

§Parameters
  • env: The execution environment.
  • from: The address for which to retrieve the balance (usually the DeFindex vault).
§Returns
  • Ok(i128) containing the balance of the underlying asset.
  • Err(StrategyError) if the balance cannot be retrieved.

It is important to note that the return value should be in terms of the underlying asset and not some kind of share or derivative. This ensures that the balance accurately reflects the amount of the actual asset managed by the strategy.

Source§

impl Spec

Source

pub const fn spec_xdr_withdraw() -> [u8; 888]

Withdraws the specified amount of the underlying asset from the strategy.

This function allows the DeFindex vault to withdraw assets from the strategy.

§Parameters
  • env: The execution environment.
  • amount: The amount of the underlying asset to withdraw.
  • from: The address from which to withdraw the asset (usually the DeFindex vault).
  • to: The address to which the asset will be transferred (usually the DeFindex vault).
§Returns
  • Ok(i128) containing the balance of the from address after the withdraw.
  • Err(StrategyError) if the withdrawal fails (e.g., insufficient balance).

It is very important that the return is the balance of the from address in the context of DeFindex. This ensures that the vault can keep track of the strategy’s status,

Auto Trait Implementations§

§

impl Freeze for Spec

§

impl RefUnwindSafe for Spec

§

impl Send for Spec

§

impl Sync for Spec

§

impl Unpin for Spec

§

impl UnwindSafe for Spec

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T, C> Compare<&T> for C
where C: Compare<T>,

Source§

type Error = <C as Compare<T>>::Error

Source§

fn compare(&self, a: &&T, b: &&T) -> Result<Ordering, <C as Compare<&T>>::Error>

Source§

impl<T, U, E, C> Compare<(T, U)> for C
where C: Compare<T, Error = E, Error = E> + Compare<U>,

Source§

type Error = E

Source§

fn compare( &self, a: &(T, U), b: &(T, U), ) -> Result<Ordering, <C as Compare<(T, U)>>::Error>

Source§

impl<T, U, V, E, C> Compare<(T, U, V)> for C
where C: Compare<T, Error = E, Error = E, Error = E> + Compare<U> + Compare<V>,

Source§

impl<T, U, V, W, E, C> Compare<(T, U, V, W)> for C
where C: Compare<T, Error = E, Error = E, Error = E, Error = E> + Compare<U> + Compare<V> + Compare<W>,

Source§

impl<T, U, V, W, X, E, C> Compare<(T, U, V, W, X)> for C
where C: Compare<T, Error = E, Error = E, Error = E, Error = E, Error = E> + Compare<U> + Compare<V> + Compare<W> + Compare<X>,

Source§

impl<T, C> Compare<Box<T>> for C
where C: Compare<T>,

Source§

type Error = <C as Compare<T>>::Error

Source§

fn compare( &self, a: &Box<T>, b: &Box<T>, ) -> Result<Ordering, <C as Compare<Box<T>>>::Error>

Source§

impl<T, C> Compare<Option<T>> for C
where C: Compare<T>,

Source§

type Error = <C as Compare<T>>::Error

Source§

fn compare( &self, a: &Option<T>, b: &Option<T>, ) -> Result<Ordering, <C as Compare<Option<T>>>::Error>

Source§

impl<T, C> Compare<Rc<T>> for C
where C: Compare<T>,

Source§

type Error = <C as Compare<T>>::Error

Source§

fn compare( &self, a: &Rc<T>, b: &Rc<T>, ) -> Result<Ordering, <C as Compare<Rc<T>>>::Error>

Source§

impl<T, C> Compare<Vec<T>> for C
where C: Compare<T>,

Source§

type Error = <C as Compare<T>>::Error

Source§

fn compare( &self, a: &Vec<T>, b: &Vec<T>, ) -> Result<Ordering, <C as Compare<Vec<T>>>::Error>

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<E, T, U> IntoVal<E, T> for U
where E: Env, T: FromVal<E, U>,

Source§

fn into_val(&self, e: &E) -> T

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<E, T, U> TryIntoVal<E, T> for U
where E: Env, T: TryFromVal<E, U>,

Source§

type Error = <T as TryFromVal<E, U>>::Error

Source§

fn try_into_val(&self, env: &E) -> Result<T, <U as TryIntoVal<E, T>>::Error>

Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V