pub struct Spec;
Implementations§
Source§impl Spec
impl Spec
Sourcepub const fn spec_xdr___constructor() -> [u8; 508]
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
impl Spec
Sourcepub const fn spec_xdr_asset() -> [u8; 468]
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
impl Spec
Sourcepub const fn spec_xdr_deposit() -> [u8; 776]
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 thefrom
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
impl Spec
Sourcepub const fn spec_xdr_harvest() -> [u8; 556]
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
impl Spec
Sourcepub const fn spec_xdr_balance() -> [u8; 840]
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
impl Spec
Sourcepub const fn spec_xdr_withdraw() -> [u8; 888]
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 thefrom
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> 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, U, V, W, E, C> Compare<(T, U, V, W)> for C
impl<T, U, V, W, E, C> Compare<(T, U, V, W)> for C
type Error = E
fn compare( &self, a: &(T, U, V, W), b: &(T, U, V, W), ) -> Result<Ordering, <C as Compare<(T, U, V, W)>>::Error>
Source§impl<T, U, V, W, X, E, C> Compare<(T, U, V, W, X)> for C
impl<T, U, V, W, X, E, C> Compare<(T, U, V, W, X)> for C
type Error = E
fn compare( &self, a: &(T, U, V, W, X), b: &(T, U, V, W, X), ) -> Result<Ordering, <C as Compare<(T, U, V, W, X)>>::Error>
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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
impl<T> DowncastSync for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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