Struct penumbra_view::Planner
source · pub struct Planner<R: RngCore + CryptoRng> { /* private fields */ }
Expand description
A planner for a TransactionPlan
that can fill in the required spends and change outputs upon
finalization to make a transaction balance.
Implementations§
source§impl<R: RngCore + CryptoRng> Planner<R>
impl<R: RngCore + CryptoRng> Planner<R>
sourcepub fn notes_requests(
&self,
account_group_id: AccountGroupId,
source: AddressIndex
) -> (Vec<NotesRequest>, Vec<NotesForVotingRequest>)
pub fn notes_requests( &self, account_group_id: AccountGroupId, source: AddressIndex ) -> (Vec<NotesRequest>, Vec<NotesForVotingRequest>)
Get all the note requests necessary to fulfill the current Balance
.
sourcepub fn expiry_height(&mut self, expiry_height: u64) -> &mut Self
pub fn expiry_height(&mut self, expiry_height: u64) -> &mut Self
Set the expiry height for the transaction plan.
sourcepub fn memo(&mut self, memo: MemoPlaintext) -> Result<&mut Self>
pub fn memo(&mut self, memo: MemoPlaintext) -> Result<&mut Self>
Set a memo for this transaction plan.
Errors if the memo is too long.
sourcepub fn fee(&mut self, fee: Fee) -> &mut Self
pub fn fee(&mut self, fee: Fee) -> &mut Self
Add a fee to the transaction plan.
This function should be called once.
sourcepub fn spend(&mut self, note: Note, position: Position) -> &mut Self
pub fn spend(&mut self, note: Note, position: Position) -> &mut Self
Spend a specific positioned note in the transaction.
If you don’t use this method to specify spends, they will be filled in automatically from
the view service when the plan is finish
ed.
sourcepub fn position_open(&mut self, position: Position) -> &mut Self
pub fn position_open(&mut self, position: Position) -> &mut Self
Open a liquidity position in the order book.
sourcepub fn position_close(&mut self, position_id: Id) -> &mut Self
pub fn position_close(&mut self, position_id: Id) -> &mut Self
Close a liquidity position in the order book.
sourcepub fn position_withdraw(
&mut self,
position_id: Id,
reserves: Reserves,
pair: TradingPair
) -> &mut Self
pub fn position_withdraw( &mut self, position_id: Id, reserves: Reserves, pair: TradingPair ) -> &mut Self
Withdraw a liquidity position in the order book.
sourcepub fn swap_claim(&mut self, plan: SwapClaimPlan) -> &mut Self
pub fn swap_claim(&mut self, plan: SwapClaimPlan) -> &mut Self
Perform a swap claim based on an input swap NFT with a pre-paid fee.
sourcepub fn swap(
&mut self,
input_value: Value,
into_asset: Id,
swap_claim_fee: Fee,
claim_address: Address
) -> Result<&mut Self>
pub fn swap( &mut self, input_value: Value, into_asset: Id, swap_claim_fee: Fee, claim_address: Address ) -> Result<&mut Self>
Perform a swap based on input notes in the transaction.
sourcepub fn output(&mut self, value: Value, address: Address) -> &mut Self
pub fn output(&mut self, value: Value, address: Address) -> &mut Self
Add an output note from this transaction.
Any unused output value will be redirected back to the originating address as change notes
when the plan is finish
ed.
sourcepub fn delegate(
&mut self,
unbonded_amount: u128,
rate_data: RateData
) -> &mut Self
pub fn delegate( &mut self, unbonded_amount: u128, rate_data: RateData ) -> &mut Self
Add a delegation to this transaction.
If you don’t specify spends or outputs as well, they will be filled in automatically.
sourcepub fn undelegate(
&mut self,
delegation_amount: Amount,
rate_data: RateData
) -> &mut Self
pub fn undelegate( &mut self, delegation_amount: Amount, rate_data: RateData ) -> &mut Self
Add an undelegation to this transaction.
TODO: can we put the chain parameters into the planner at the start, so we can compute end_epoch_index?
sourcepub fn undelegate_claim(&mut self, claim_plan: UndelegateClaimPlan) -> &mut Self
pub fn undelegate_claim(&mut self, claim_plan: UndelegateClaimPlan) -> &mut Self
Add an undelegate claim to this transaction.
sourcepub fn validator_definition(&mut self, new_validator: Definition) -> &mut Self
pub fn validator_definition(&mut self, new_validator: Definition) -> &mut Self
Upload a validator definition in this transaction.
sourcepub fn proposal_submit(
&mut self,
proposal: Proposal,
deposit_amount: Amount
) -> &mut Self
pub fn proposal_submit( &mut self, proposal: Proposal, deposit_amount: Amount ) -> &mut Self
Submit a new governance proposal in this transaction.
sourcepub fn proposal_withdraw(&mut self, proposal: u64, reason: String) -> &mut Self
pub fn proposal_withdraw(&mut self, proposal: u64, reason: String) -> &mut Self
Withdraw a governance proposal in this transaction.
sourcepub fn proposal_deposit_claim(
&mut self,
proposal: u64,
deposit_amount: Amount,
outcome: Outcome<()>
) -> &mut Self
pub fn proposal_deposit_claim( &mut self, proposal: u64, deposit_amount: Amount, outcome: Outcome<()> ) -> &mut Self
Claim a governance proposal deposit in this transaction.
sourcepub fn dao_deposit(&mut self, value: Value) -> &mut Self
pub fn dao_deposit(&mut self, value: Value) -> &mut Self
Deposit a value into the DAO.
sourcepub fn validator_vote(&mut self, vote: ValidatorVote) -> &mut Self
pub fn validator_vote(&mut self, vote: ValidatorVote) -> &mut Self
Cast a validator vote in this transaction.
sourcepub fn ics20_withdrawal(&mut self, withdrawal: Ics20Withdrawal) -> &mut Self
pub fn ics20_withdrawal(&mut self, withdrawal: Ics20Withdrawal) -> &mut Self
Perform an ICS-20 withdrawal
sourcepub fn ibc_action(&mut self, ibc_action: IbcAction) -> &mut Self
pub fn ibc_action(&mut self, ibc_action: IbcAction) -> &mut Self
Perform an IBC action
sourcepub fn delegator_vote(
&mut self,
proposal: u64,
start_block_height: u64,
start_position: Position,
start_rate_data: BTreeMap<IdentityKey, RateData>,
vote: Vote
) -> &mut Self
pub fn delegator_vote( &mut self, proposal: u64, start_block_height: u64, start_position: Position, start_rate_data: BTreeMap<IdentityKey, RateData>, vote: Vote ) -> &mut Self
Vote with all possible vote weight on a given proposal.
Voting twice on the same proposal in the same planner will overwrite the previous vote.
sourcepub fn delegator_vote_precise(
&mut self,
proposal: u64,
start_position: Position,
vote: Vote,
note: Note,
position: Position,
unbonded_amount: Amount
) -> &mut Self
pub fn delegator_vote_precise( &mut self, proposal: u64, start_position: Position, vote: Vote, note: Note, position: Position, unbonded_amount: Amount ) -> &mut Self
sourcepub async fn plan<V: ViewClient>(
&mut self,
view: &mut V,
account_group_id: AccountGroupId,
source: AddressIndex
) -> Result<TransactionPlan>
pub async fn plan<V: ViewClient>( &mut self, view: &mut V, account_group_id: AccountGroupId, source: AddressIndex ) -> Result<TransactionPlan>
Add spends and change outputs as required to balance the transaction, using the view service provided to supply the notes and other information.
Clears the contents of the planner, which can be re-used.
sourcepub fn plan_with_spendable_and_votable_notes(
&mut self,
chain_params: &ChainParameters,
fmd_params: &FmdParameters,
spendable_notes: Vec<SpendableNoteRecord>,
votable_notes: Vec<Vec<(SpendableNoteRecord, IdentityKey)>>,
self_address: Address
) -> Result<TransactionPlan>
pub fn plan_with_spendable_and_votable_notes( &mut self, chain_params: &ChainParameters, fmd_params: &FmdParameters, spendable_notes: Vec<SpendableNoteRecord>, votable_notes: Vec<Vec<(SpendableNoteRecord, IdentityKey)>>, self_address: Address ) -> Result<TransactionPlan>
Add spends and change outputs as required to balance the transaction, using the spendable
notes provided. It is the caller’s responsibility to ensure that the notes are the result of
collected responses to the requests generated by an immediately preceding call to
[Planner::note_requests
].
Clears the contents of the planner, which can be re-used.
Trait Implementations§
Auto Trait Implementations§
impl<R> RefUnwindSafe for Planner<R>where R: RefUnwindSafe,
impl<R> Send for Planner<R>where R: Send,
impl<R> Sync for Planner<R>where R: Sync,
impl<R> Unpin for Planner<R>where R: Unpin,
impl<R> UnwindSafe for Planner<R>where R: UnwindSafe,
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
§impl<T> Conv for T
impl<T> Conv for 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,
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> 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) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> Rwhere Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,
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) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere Self: AsMut<U>, U: 'a + ?Sized, R: 'a,
self
, then passes self.as_mut()
into the pipe
function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,
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)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
.tap_ref_mut()
only in debug builds, and is erased in release
builds.