Mavryk_raw_protocol_001_PtAtLas.Stakingval stake :
Raw_context.t ->
for_next_cycle_use_only_after_slashing:bool ->
amount:[ `At_most of Tez_repr.t | `Exactly of Tez_repr.t ] ->
sender:Mavryk_protocol_environment_001_PtAtLas.Signature.Public_key_hash.t ->
delegate:Mavryk_protocol_environment_001_PtAtLas.Signature.public_key_hash ->
(Raw_context.t * Receipt_repr.balance_updates)
Mavryk_protocol_environment_001_PtAtLas.Error_monad.tzresult
Mavryk_protocol_environment_001_PtAtLas.Lwt.tstake ctxt ~sender ~for_next_cycle_use_only_after_slashing ~delegate amount add amount as sender's stake to delegate.
If for_next_cycle_use_only_after_slashing is true, the implicit finalisation is done for the next cycle. It is meant to be used only at cycle end after the application of the slashing.
val request_unstake :
Raw_context.t ->
for_next_cycle_use_only_after_slashing:bool ->
sender_contract:Contract_repr.t ->
delegate:Mavryk_protocol_environment_001_PtAtLas.Signature.public_key_hash ->
Tez_repr.t ->
(Raw_context.t * Receipt_repr.balance_updates)
Mavryk_protocol_environment_001_PtAtLas.Error_monad.tzresult
Mavryk_protocol_environment_001_PtAtLas.Lwt.trequest_unstake ctxt ~for_next_cycle_use_only_after_slashing ~sender_contract ~delegate amount records a request from sender_contract to unstake amount from delegate.
If for_next_cycle_use_only_after_slashing is true, the unstake request and the implicit finalisation is done for the next cycle. It is meant to be used only at cycle end after the application of the slashing.
val finalize_unstake :
Raw_context.t ->
for_next_cycle_use_only_after_slashing:bool ->
Contract_repr.t ->
(Raw_context.t * Receipt_repr.balance_updates)
Mavryk_protocol_environment_001_PtAtLas.Error_monad.tzresult
Mavryk_protocol_environment_001_PtAtLas.Lwt.tfinalize_unstake ctxt ~for_next_cycle_use_only_after_slashing contract performs the finalization of all unstake requests from contract that can be finalized. An unstake request can be finalized if it is old enough, specifically the requested amount must not be at stake anymore and must not be slashable anymore, i.e. after preserved_cycles + max_slashing_period after the request. Amounts are transferred from the contract's delegate (at request time) unstaked frozen deposits to contract's spendable balance, minus slashing the requested stake undergone in between.
If for_next_cycle_use_only_after_slashing is true, the finalization is done for the next cycle. It is meant to be used only at cycle end after the application of the slashing.
Staking can be either automated or manual. If Adaptive Issuance is enabled, staking must be manual.
val staking_automation : Raw_context.t -> staking_automationval check_manual_staking_allowed :
Raw_context.t ->
unit Mavryk_protocol_environment_001_PtAtLas.Error_monad.tzresult