multiversx_sc_modules::subscription

Struct SubscriptionAttributes

Source
pub struct SubscriptionAttributes<T: NestedEncode + NestedDecode + TypeAbi> {
    pub expiration: u64,
    pub attributes: T,
}
Expand description

Standard smart contract module for managing a Subscription NFT. Adaptation of the EIP-5643 for MultiversX, more here https://eips.ethereum.org/EIPS/eip-5643

This standard is an extension of the MultiversX NFT standard. It proposes an additional interface for NFTs to be used as recurring, expirable subscriptions. The interface includes functions to renew and cancel the subscription.

Since the NFT standard only has one field for adding arbitrary data (attributes), The module also provides functions for creating NFTs with subscription as well as for reading and updating attributes This allows developers to add additional data to the subscription expiration

Developers should be careful when interacting with custom attributes at the same time as subscription They should exclusively use the functions from this module The use of the generic function for updating nft attributes might result in data loss

The module provides functions for:

  • creating a subscription nft
  • updating custom attributes
  • getting custom attributes
  • renewing a subscription
  • cancelling a subscription
  • getting the expiration

Fields§

§expiration: u64§attributes: T

Trait Implementations§

Source§

impl<T: NestedEncode + NestedDecode + TypeAbi> TopDecode for SubscriptionAttributes<T>

Source§

fn top_decode_or_handle_err<I, H>( top_input: I, __h__: H, ) -> Result<Self, H::HandledErr>

Version of top_decode that can handle errors as soon as they occur. For instance it can exit immediately and make sure that if it returns, it is a success. By not deferring error handling, this can lead to somewhat smaller bytecode.
Source§

fn top_decode<I>(input: I) -> Result<Self, DecodeError>
where I: TopDecodeInput,

Attempt to deserialize the value from input.
Source§

impl<T: NestedEncode + NestedDecode + TypeAbi> TopEncode for SubscriptionAttributes<T>

Source§

fn top_encode_or_handle_err<O, H>( &self, output: O, __h__: H, ) -> Result<(), H::HandledErr>

Version of top_encode that can handle errors as soon as they occur. For instance in can exit immediately and make sure that if it returns, it is a success. By not deferring error handling, this can lead to somewhat smaller bytecode.
Source§

fn top_encode<O>(&self, output: O) -> Result<(), EncodeError>
where O: TopEncodeOutput,

Attempt to serialize the value to ouput.
Source§

impl<T: NestedEncode + NestedDecode + TypeAbi> TypeAbi for SubscriptionAttributes<T>

Source§

type Unmanaged = SubscriptionAttributes<T>

Source§

fn type_name() -> TypeName

Source§

fn provide_type_descriptions<TDC: TypeDescriptionContainer>( accumulator: &mut TDC, )

A type can provide more than its own name. For instance, a struct can also provide the descriptions of the type of its fields. TypeAbi doesn’t care for the exact accumulator type, which is abstracted by the TypeDescriptionContainer trait.
Source§

fn type_names() -> TypeNames

Source§

fn type_name_rust() -> String

Source§

impl<T: NestedEncode + NestedDecode + TypeAbi> TypeAbiFrom<&SubscriptionAttributes<T>> for SubscriptionAttributes<T>

Source§

impl<T: NestedEncode + NestedDecode + TypeAbi> TypeAbiFrom<SubscriptionAttributes<T>> for SubscriptionAttributes<T>

Auto Trait Implementations§

§

impl<T> Freeze for SubscriptionAttributes<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for SubscriptionAttributes<T>
where T: RefUnwindSafe,

§

impl<T> Send for SubscriptionAttributes<T>
where T: Send,

§

impl<T> Sync for SubscriptionAttributes<T>
where T: Sync,

§

impl<T> Unpin for SubscriptionAttributes<T>
where T: Unpin,

§

impl<T> UnwindSafe for SubscriptionAttributes<T>
where T: UnwindSafe,

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> 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> SCCodec for T
where T: TopEncode,

Source§

fn fmt<F>(&self, f: &mut F)

Source§

impl<T> TopDecodeMulti for T
where T: TopDecode,

Source§

const IS_SINGLE_VALUE: bool = true

Used to optimize single value loading of endpoint arguments.
Source§

fn multi_decode_or_handle_err<I, H>( input: &mut I, h: H, ) -> Result<T, <H as DecodeErrorHandler>::HandledErr>

Source§

fn multi_decode<I>(input: &mut I) -> Result<Self, DecodeError>

Source§

impl<T> TopDecodeMultiLength for T
where T: TopEncode + TopDecode,

Source§

const LEN: usize = 1usize

Source§

fn get_len() -> usize

Source§

impl<T> TopEncodeMulti for T
where T: TopEncode,

Source§

fn multi_encode_or_handle_err<O, H>( &self, output: &mut O, h: H, ) -> Result<(), <H as EncodeErrorHandler>::HandledErr>

Version of top_encode that can handle errors as soon as they occur. For instance in can exit immediately and make sure that if it returns, it is a success. By not deferring error handling, this can lead to somewhat smaller bytecode.
Source§

fn multi_encode<O>(&self, output: &mut O) -> Result<(), EncodeError>

Attempt to serialize the value to ouput.
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<O, T> ProxyArg<O> for T
where O: TypeAbiFrom<T>, T: TopEncodeMulti,