pub struct TridentClient {
pub delivery: DeliveryServiceClient<Channel>,
/* private fields */
}Expand description
Client for the Trident cross-chain delivery service.
Holds the gRPC connection plus a per-domain chain handler materialized
during TridentClientBuilder::connect. Construct via
TridentClientBuilder.
The crate provides From / TryFrom impls between
alloy_primitives::Address, v1::MultiChainAddress, v1::U256,
v1::Bytes32, and friends, so building gRPC requests and decoding
responses off the public delivery field is usually a one-liner via
.into() / .try_into() without any hand-rolled conversion helpers.
Fields§
§delivery: DeliveryServiceClient<Channel>Live gRPC connection to the Trident attester. Use this field to talk to
the attester directly for RPCs the SDK does not wrap — such as
get_token_routes, get_domain_routes, or get_sync_status — on the
same connection the rest of the SDK uses.
Implementations§
Source§impl TridentClient
impl TridentClient
Sourcepub async fn spend<SrcAddressType, DstAddressType>(
&mut self,
request: SpendRequestBuilder<SrcAddressType, DstAddressType>,
) -> Result<SpendAttestation<DstAddressType>, TridentClientError>where
SrcAddressType: ChainAddress,
DstAddressType: ChainAddress,
pub async fn spend<SrcAddressType, DstAddressType>(
&mut self,
request: SpendRequestBuilder<SrcAddressType, DstAddressType>,
) -> Result<SpendAttestation<DstAddressType>, TridentClientError>where
SrcAddressType: ChainAddress,
DstAddressType: ChainAddress,
Submits a cross-chain spend intent to the delivery service.
Fills in the source spender (from the configured signer), source deposit contract,
destination delivery contract, a random salt, and — unless the builder sets them
explicitly — the max fee (via Self::estimate_fees) and the expiry height (via
the server’s minimum plus the source domain’s configured margin, defaulting to
10% of the minimum). Signs the intent with the source-domain signer and sends it
over gRPC.
Returns a SpendAttestation that the caller must submit on-chain via
SpendAttestation::send to actually execute the spend.
Sourcepub fn deposit<T: ChainAddress>(
&self,
domain: Domain,
token: T,
amount: U256,
) -> Result<Deposit<T>, TridentClientError>
pub fn deposit<T: ChainAddress>( &self, domain: Domain, token: T, amount: U256, ) -> Result<Deposit<T>, TridentClientError>
Prepares a deposit of amount of token into the domain’s deposit contract.
Returns a Deposit the caller must submit on-chain via Deposit::send.
Errors if amount is zero, no chain is registered for domain, or the handler
cannot decode token for this chain family.
Sourcepub async fn get_balance(
&mut self,
domain: Domain,
address: impl ChainAddress,
token: impl ChainAddress,
) -> Result<Balance, TridentClientError>
pub async fn get_balance( &mut self, domain: Domain, address: impl ChainAddress, token: impl ChainAddress, ) -> Result<Balance, TridentClientError>
Queries the Trident balance held by address for token on domain.
Returns U256::ZERO when no balance is recorded.
Sourcepub async fn estimate_fees<SrcAddressType, DstAddressType>(
&mut self,
request: &SpendRequestBuilder<SrcAddressType, DstAddressType>,
) -> Result<U256, TridentClientError>where
SrcAddressType: ChainAddress,
DstAddressType: ChainAddress,
pub async fn estimate_fees<SrcAddressType, DstAddressType>(
&mut self,
request: &SpendRequestBuilder<SrcAddressType, DstAddressType>,
) -> Result<U256, TridentClientError>where
SrcAddressType: ChainAddress,
DstAddressType: ChainAddress,
Estimates the total fees for the given spend request.
Asks the delivery service for a fee breakdown using a placeholder intent built
from the request (zero addresses for fields filled in by Self::spend) and
returns the total_fees field.
Auto Trait Implementations§
impl !Freeze for TridentClient
impl !RefUnwindSafe for TridentClient
impl !UnwindSafe for TridentClient
impl Send for TridentClient
impl Sync for TridentClient
impl Unpin for TridentClient
impl UnsafeUnpin for TridentClient
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request