Skip to main content

FeeHandlerClient

Struct FeeHandlerClient 

Source
pub struct FeeHandlerClient<'a> {
    pub env: Env,
    pub address: Address,
    /* private fields */
}
Expand description

FeeHandlerClient is a client for calling the contract defined in “FeeHandlerInterface”.

Fields§

§env: Env§address: Address

Implementations§

Source§

impl<'a> FeeHandlerClient<'a>

Source

pub fn new(env: &Env, address: &Address) -> Self

Source§

impl<'a> FeeHandlerClient<'a>

Source

pub fn process_fee(&self, sender_address: &Address) -> bool

Processes fees for a cross-chain transaction

This function collects fees from the sender address if fees are enabled and configured. It validates the fee amount, checks authorization and balance, and transfers the fee to the fee handler contract.

§Arguments
  • env - The Soroban environment
  • sender_address - The address that sent the cross-chain message
§Returns

Returns true if fee processing was successful or skipped

§Panics

Panics if:

  • The source fee exceeds the maximum fee amount
  • The fee amount is not authorized
  • The sender has insufficient balance
Source

pub fn try_process_fee( &self, sender_address: &Address, ) -> Result<Result<bool, <bool as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>

Processes fees for a cross-chain transaction

This function collects fees from the sender address if fees are enabled and configured. It validates the fee amount, checks authorization and balance, and transfers the fee to the fee handler contract.

§Arguments
  • env - The Soroban environment
  • sender_address - The address that sent the cross-chain message
§Returns

Returns true if fee processing was successful or skipped

§Panics

Panics if:

  • The source fee exceeds the maximum fee amount
  • The fee amount is not authorized
  • The sender has insufficient balance
Source

pub fn set_fees_offline(&self, status: &bool)

Sets the fees offline status

§Arguments
  • env - The Soroban environment
  • status - Whether fees should be offline (disabled)
Source

pub fn try_set_fees_offline( &self, status: &bool, ) -> Result<Result<(), <() as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>

Sets the fees offline status

§Arguments
  • env - The Soroban environment
  • status - Whether fees should be offline (disabled)
Source

pub fn is_fees_offline(&self) -> bool

Checks if fees are offline

§Arguments
  • env - The Soroban environment
§Returns

Returns true if fees are offline, false otherwise

Source

pub fn try_is_fees_offline( &self, ) -> Result<Result<bool, <bool as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>

Checks if fees are offline

§Arguments
  • env - The Soroban environment
§Returns

Returns true if fees are offline, false otherwise

Source

pub fn set_custom_source_fee(&self, client_contract: &Address, amount: &u64)

Sets a custom source fee for a client contract

§Arguments
  • env - The Soroban environment
  • client_contract - The client contract address being processed for fees
  • amount - The custom fee amount
Source

pub fn try_set_custom_source_fee( &self, client_contract: &Address, amount: &u64, ) -> Result<Result<(), <() as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>

Sets a custom source fee for a client contract

§Arguments
  • env - The Soroban environment
  • client_contract - The client contract address being processed for fees
  • amount - The custom fee amount
Source

pub fn get_source_fee(&self, client_contract: &Address) -> u64

Retrieves the custom source fee for a client contract

§Arguments
  • env - The Soroban environment
  • client_contract - The client contract address being processed for fees
§Returns

Returns the custom source fee amount, or 0 if not set

Source

pub fn try_get_source_fee( &self, client_contract: &Address, ) -> Result<Result<u64, <u64 as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>

Retrieves the custom source fee for a client contract

§Arguments
  • env - The Soroban environment
  • client_contract - The client contract address being processed for fees
§Returns

Returns the custom source fee amount, or 0 if not set

Source

pub fn set_max_fee(&self, client_contract: &Address, amount: &u64)

Sets the maximum fee amount for a client contract

§Arguments
  • env - The Soroban environment
  • client_contract - The client contract address being processed for fees
  • amount - The maximum fee amount
Source

pub fn try_set_max_fee( &self, client_contract: &Address, amount: &u64, ) -> Result<Result<(), <() as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>

Sets the maximum fee amount for a client contract

§Arguments
  • env - The Soroban environment
  • client_contract - The client contract address being processed for fees
  • amount - The maximum fee amount
Source

pub fn get_max_fee(&self, client_contract: &Address) -> u64

Retrieves the maximum fee amount for a client contract

§Arguments
  • env - The Soroban environment
  • client_contract - The client contract address being processed for fees
§Returns

Returns the maximum fee amount, or 0 if not set

Source

pub fn try_get_max_fee( &self, client_contract: &Address, ) -> Result<Result<u64, <u64 as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>

Retrieves the maximum fee amount for a client contract

§Arguments
  • env - The Soroban environment
  • client_contract - The client contract address being processed for fees
§Returns

Returns the maximum fee amount, or 0 if not set

Source

pub fn set_fee_token_contract( &self, client_contract: &Address, contract: &Address, )

Sets the fee token contract for a client contract

§Arguments
  • env - The Soroban environment
  • client_contract - The client contract address being processed for fees
  • contract - The token contract address for fee payments
Source

pub fn try_set_fee_token_contract( &self, client_contract: &Address, contract: &Address, ) -> Result<Result<(), <() as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>

Sets the fee token contract for a client contract

§Arguments
  • env - The Soroban environment
  • client_contract - The client contract address being processed for fees
  • contract - The token contract address for fee payments
Source

pub fn get_fee_token_contract(&self, client_contract: &Address) -> Address

Retrieves the fee token contract for a client contract

§Arguments
  • env - The Soroban environment
  • client_contract - The client contract address being processed for fees
§Returns

Returns the fee token contract address

§Panics

Panics if the fee token contract is not set for the client contract.

Source

pub fn try_get_fee_token_contract( &self, client_contract: &Address, ) -> Result<Result<Address, <Address as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>

Retrieves the fee token contract for a client contract

§Arguments
  • env - The Soroban environment
  • client_contract - The client contract address being processed for fees
§Returns

Returns the fee token contract address

§Panics

Panics if the fee token contract is not set for the client contract.

Auto Trait Implementations§

§

impl<'a> !RefUnwindSafe for FeeHandlerClient<'a>

§

impl<'a> !Send for FeeHandlerClient<'a>

§

impl<'a> !Sync for FeeHandlerClient<'a>

§

impl<'a> !UnwindSafe for FeeHandlerClient<'a>

§

impl<'a> Freeze for FeeHandlerClient<'a>

§

impl<'a> Unpin for FeeHandlerClient<'a>

§

impl<'a> UnsafeUnpin for FeeHandlerClient<'a>

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> 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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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 = !

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

fn try_from(value: U) -> Result<T, !>

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