pub struct TransactionBuilder(/* private fields */);
Implementations§
source§impl TransactionBuilder
impl TransactionBuilder
pub fn new(data_reader: Arc<dyn DataReader + Sync + Send>) -> Self
sourcepub async fn tx_data_for_dry_run(
&self,
sender: IotaAddress,
kind: TransactionKind,
gas_budget: u64,
gas_price: u64,
gas_payment: impl Into<Option<Vec<ObjectID>>>,
gas_sponsor: impl Into<Option<IotaAddress>>,
) -> TransactionData
pub async fn tx_data_for_dry_run( &self, sender: IotaAddress, kind: TransactionKind, gas_budget: u64, gas_price: u64, gas_payment: impl Into<Option<Vec<ObjectID>>>, gas_sponsor: impl Into<Option<IotaAddress>>, ) -> TransactionData
Construct the transaction data for a dry run
sourcepub async fn tx_data(
&self,
sender: IotaAddress,
kind: TransactionKind,
gas_budget: u64,
gas_price: u64,
gas_payment: Vec<ObjectID>,
gas_sponsor: impl Into<Option<IotaAddress>>,
) -> Result<TransactionData, Error>
pub async fn tx_data( &self, sender: IotaAddress, kind: TransactionKind, gas_budget: u64, gas_price: u64, gas_payment: Vec<ObjectID>, gas_sponsor: impl Into<Option<IotaAddress>>, ) -> Result<TransactionData, Error>
Construct the transaction data from a transaction kind, and other parameters. If the gas_payment list is empty, it will pick the first gas coin that has at least the required gas budget that is not in the input coins.
pub async fn transfer_object_tx_kind( &self, object_id: ObjectID, recipient: IotaAddress, ) -> Result<TransactionKind, Error>
sourcepub async fn transfer_object(
&self,
signer: IotaAddress,
object_id: ObjectID,
gas: impl Into<Option<ObjectID>>,
gas_budget: u64,
recipient: IotaAddress,
) -> Result<TransactionData>
pub async fn transfer_object( &self, signer: IotaAddress, object_id: ObjectID, gas: impl Into<Option<ObjectID>>, gas_budget: u64, recipient: IotaAddress, ) -> Result<TransactionData>
Transfer an object to the specified recipient address.
pub fn transfer_iota_tx_kind( &self, recipient: IotaAddress, amount: impl Into<Option<u64>>, ) -> TransactionKind
sourcepub async fn transfer_iota(
&self,
signer: IotaAddress,
iota_object_id: ObjectID,
gas_budget: u64,
recipient: IotaAddress,
amount: impl Into<Option<u64>>,
) -> Result<TransactionData>
pub async fn transfer_iota( &self, signer: IotaAddress, iota_object_id: ObjectID, gas_budget: u64, recipient: IotaAddress, amount: impl Into<Option<u64>>, ) -> Result<TransactionData>
Transfer IOTA from the provided coin object to the recipient address. The provided coin object is also used for the gas payment.
pub async fn pay_tx_kind( &self, input_coins: Vec<ObjectID>, recipients: Vec<IotaAddress>, amounts: Vec<u64>, ) -> Result<TransactionKind, Error>
sourcepub async fn pay(
&self,
signer: IotaAddress,
input_coins: Vec<ObjectID>,
recipients: Vec<IotaAddress>,
amounts: Vec<u64>,
gas: impl Into<Option<ObjectID>>,
gas_budget: u64,
) -> Result<TransactionData>
pub async fn pay( &self, signer: IotaAddress, input_coins: Vec<ObjectID>, recipients: Vec<IotaAddress>, amounts: Vec<u64>, gas: impl Into<Option<ObjectID>>, gas_budget: u64, ) -> Result<TransactionData>
Take multiple coins and send to multiple addresses following the specified amount list. The length of the vectors must be the same. Take any type of coin, including IOTA. A separate IOTA object will be used for gas payment.
If the recipient and sender are the same, it’s effectively a
generalized version of split_coin
and merge_coin
.
sourcepub async fn input_refs(
&self,
obj_ids: &[ObjectID],
) -> Result<Vec<ObjectRef>, Error>
pub async fn input_refs( &self, obj_ids: &[ObjectID], ) -> Result<Vec<ObjectRef>, Error>
Get the object references for a list of object IDs
sourcepub fn pay_iota_tx_kind(
&self,
recipients: Vec<IotaAddress>,
amounts: Vec<u64>,
) -> Result<TransactionKind, Error>
pub fn pay_iota_tx_kind( &self, recipients: Vec<IotaAddress>, amounts: Vec<u64>, ) -> Result<TransactionKind, Error>
Construct a transaction kind for the PayIota transaction type.
Use this function together with tx_data_for_dry_run or tx_data for maximum reusability. The length of the vectors must be the same.
sourcepub async fn pay_iota(
&self,
signer: IotaAddress,
input_coins: Vec<ObjectID>,
recipients: Vec<IotaAddress>,
amounts: Vec<u64>,
gas_budget: u64,
) -> Result<TransactionData>
pub async fn pay_iota( &self, signer: IotaAddress, input_coins: Vec<ObjectID>, recipients: Vec<IotaAddress>, amounts: Vec<u64>, gas_budget: u64, ) -> Result<TransactionData>
Take multiple IOTA coins and send to multiple addresses following the specified amount list. The length of the vectors must be the same. Only takes IOTA coins and does not require a gas coin object.
The first IOTA coin object input will be used for gas payment, so the balance of this IOTA coin has to be equal to or greater than the gas budget. The total IOTA coin balance input must be sufficient to cover both the gas budget and the amounts to be transferred.
pub fn pay_all_iota_tx_kind(&self, recipient: IotaAddress) -> TransactionKind
sourcepub async fn pay_all_iota(
&self,
signer: IotaAddress,
input_coins: Vec<ObjectID>,
recipient: IotaAddress,
gas_budget: u64,
) -> Result<TransactionData>
pub async fn pay_all_iota( &self, signer: IotaAddress, input_coins: Vec<ObjectID>, recipient: IotaAddress, gas_budget: u64, ) -> Result<TransactionData>
Take multiple IOTA coins and send them to one recipient, after gas payment deduction. After the transaction, strictly zero of the IOTA coins input will be left under the sender’s address.
The first IOTA coin object input will be used for gas payment, so the balance of this IOTA coin has to be equal or greater than the gas budget. A sender can transfer all their IOTA coins to another address with strictly zero IOTA left in one transaction via this transaction type.
pub async fn move_call_tx_kind( &self, package_object_id: ObjectID, module: &str, function: &str, type_args: Vec<IotaTypeTag>, call_args: Vec<IotaJsonValue>, ) -> Result<TransactionKind, Error>
sourcepub async fn move_call(
&self,
signer: IotaAddress,
package_object_id: ObjectID,
module: &str,
function: &str,
type_args: Vec<IotaTypeTag>,
call_args: Vec<IotaJsonValue>,
gas: impl Into<Option<ObjectID>>,
gas_budget: u64,
gas_price: impl Into<Option<u64>>,
) -> Result<TransactionData>
pub async fn move_call( &self, signer: IotaAddress, package_object_id: ObjectID, module: &str, function: &str, type_args: Vec<IotaTypeTag>, call_args: Vec<IotaJsonValue>, gas: impl Into<Option<ObjectID>>, gas_budget: u64, gas_price: impl Into<Option<u64>>, ) -> Result<TransactionData>
Call a move function from a published package.
pub async fn single_move_call( &self, builder: &mut ProgrammableTransactionBuilder, package: ObjectID, module: &str, function: &str, type_args: Vec<IotaTypeTag>, call_args: Vec<IotaJsonValue>, ) -> Result<()>
pub async fn resolve_and_checks_json_args( &self, builder: &mut ProgrammableTransactionBuilder, package_id: ObjectID, module: &Identifier, function: &Identifier, type_args: &[TypeTag], json_args: Vec<IotaJsonValue>, ) -> Result<Vec<Argument>, Error>
pub async fn publish_tx_kind( &self, sender: IotaAddress, modules: Vec<Vec<u8>>, dep_ids: Vec<ObjectID>, ) -> Result<TransactionKind, Error>
sourcepub async fn publish(
&self,
sender: IotaAddress,
compiled_modules: Vec<Vec<u8>>,
dep_ids: Vec<ObjectID>,
gas: impl Into<Option<ObjectID>>,
gas_budget: u64,
) -> Result<TransactionData>
pub async fn publish( &self, sender: IotaAddress, compiled_modules: Vec<Vec<u8>>, dep_ids: Vec<ObjectID>, gas: impl Into<Option<ObjectID>>, gas_budget: u64, ) -> Result<TransactionData>
Publish a new move package.
pub async fn upgrade_tx_kind( &self, package_id: ObjectID, modules: Vec<Vec<u8>>, dep_ids: Vec<ObjectID>, upgrade_capability: ObjectID, upgrade_policy: u8, digest: Vec<u8>, ) -> Result<TransactionKind, Error>
sourcepub async fn upgrade(
&self,
sender: IotaAddress,
package_id: ObjectID,
compiled_modules: Vec<Vec<u8>>,
dep_ids: Vec<ObjectID>,
upgrade_capability: ObjectID,
upgrade_policy: u8,
gas: impl Into<Option<ObjectID>>,
gas_budget: u64,
) -> Result<TransactionData>
pub async fn upgrade( &self, sender: IotaAddress, package_id: ObjectID, compiled_modules: Vec<Vec<u8>>, dep_ids: Vec<ObjectID>, upgrade_capability: ObjectID, upgrade_policy: u8, gas: impl Into<Option<ObjectID>>, gas_budget: u64, ) -> Result<TransactionData>
Upgrade an existing move package.
sourcepub async fn split_coin_tx_kind(
&self,
coin_object_id: ObjectID,
split_amounts: impl Into<Option<Vec<u64>>>,
split_count: impl Into<Option<u64>>,
) -> Result<TransactionKind, Error>
pub async fn split_coin_tx_kind( &self, coin_object_id: ObjectID, split_amounts: impl Into<Option<Vec<u64>>>, split_count: impl Into<Option<u64>>, ) -> Result<TransactionKind, Error>
Construct a transaction kind for the SplitCoin transaction type It expects that only one of the two: split_amounts or split_count is provided If both are provided, it will use split_amounts.
pub async fn split_coin( &self, signer: IotaAddress, coin_object_id: ObjectID, split_amounts: Vec<u64>, gas: impl Into<Option<ObjectID>>, gas_budget: u64, ) -> Result<TransactionData>
pub async fn split_coin_equal( &self, signer: IotaAddress, coin_object_id: ObjectID, split_count: u64, gas: impl Into<Option<ObjectID>>, gas_budget: u64, ) -> Result<TransactionData>
pub async fn merge_coins_tx_kind( &self, primary_coin: ObjectID, coin_to_merge: ObjectID, ) -> Result<TransactionKind, Error>
pub async fn merge_coins( &self, signer: IotaAddress, primary_coin: ObjectID, coin_to_merge: ObjectID, gas: impl Into<Option<ObjectID>>, gas_budget: u64, ) -> Result<TransactionData>
pub async fn batch_transaction( &self, signer: IotaAddress, single_transaction_params: Vec<RPCTransactionRequestParams>, gas: impl Into<Option<ObjectID>>, gas_budget: u64, ) -> Result<TransactionData>
sourcepub async fn request_add_stake(
&self,
signer: IotaAddress,
coins: Vec<ObjectID>,
amount: impl Into<Option<u64>>,
validator: IotaAddress,
gas: impl Into<Option<ObjectID>>,
gas_budget: u64,
) -> Result<TransactionData>
pub async fn request_add_stake( &self, signer: IotaAddress, coins: Vec<ObjectID>, amount: impl Into<Option<u64>>, validator: IotaAddress, gas: impl Into<Option<ObjectID>>, gas_budget: u64, ) -> Result<TransactionData>
Add stake to a validator’s staking pool using multiple IOTA coins.
sourcepub async fn request_withdraw_stake(
&self,
signer: IotaAddress,
staked_iota: ObjectID,
gas: impl Into<Option<ObjectID>>,
gas_budget: u64,
) -> Result<TransactionData>
pub async fn request_withdraw_stake( &self, signer: IotaAddress, staked_iota: ObjectID, gas: impl Into<Option<ObjectID>>, gas_budget: u64, ) -> Result<TransactionData>
Withdraw stake from a validator’s staking pool.
sourcepub async fn request_add_timelocked_stake(
&self,
signer: IotaAddress,
locked_balance: ObjectID,
validator: IotaAddress,
gas: ObjectID,
gas_budget: u64,
) -> Result<TransactionData>
pub async fn request_add_timelocked_stake( &self, signer: IotaAddress, locked_balance: ObjectID, validator: IotaAddress, gas: ObjectID, gas_budget: u64, ) -> Result<TransactionData>
Add stake to a validator’s staking pool using a timelocked IOTA coin.
sourcepub async fn request_withdraw_timelocked_stake(
&self,
signer: IotaAddress,
timelocked_staked_iota: ObjectID,
gas: ObjectID,
gas_budget: u64,
) -> Result<TransactionData>
pub async fn request_withdraw_timelocked_stake( &self, signer: IotaAddress, timelocked_staked_iota: ObjectID, gas: ObjectID, gas_budget: u64, ) -> Result<TransactionData>
Withdraw timelocked stake from a validator’s staking pool.
pub async fn get_object_ref(&self, object_id: ObjectID) -> Result<ObjectRef>
Trait Implementations§
source§impl Clone for TransactionBuilder
impl Clone for TransactionBuilder
source§fn clone(&self) -> TransactionBuilder
fn clone(&self) -> TransactionBuilder
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl Freeze for TransactionBuilder
impl !RefUnwindSafe for TransactionBuilder
impl Send for TransactionBuilder
impl Sync for TransactionBuilder
impl Unpin for TransactionBuilder
impl !UnwindSafe for TransactionBuilder
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
self
to type T
. The semantics of numeric casting with the as
operator are followed, so <T as As>::as_::<U>
can be used in the same way as T as U
for numeric conversions. Read more§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> ConvertTo<T> for Twhere
T: Send,
impl<T> ConvertTo<T> for Twhere
T: Send,
fn convert(self) -> Result<T, Error>
fn convert_unchecked(self) -> T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a Request
source§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
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.