Tezos_raw_protocol_023_PtSeouLo.Stakingval stake : 
  Raw_context.t ->
  amount:Tez_repr.t ->
  sender:Tezos_protocol_environment_023_PtSeouLo.Signature.Public_key_hash.t ->
  delegate:Tezos_protocol_environment_023_PtSeouLo.Signature.public_key_hash ->
  (Raw_context.t * Receipt_repr.balance_updates)
    Tezos_protocol_environment_023_PtSeouLo.Error_monad.tzresult
    Tezos_protocol_environment_023_PtSeouLo.Lwt.tstake ctxt ~sender ~delegate amount adds amount as sender's stake to delegate.
val request_unstake : 
  Raw_context.t ->
  sender_contract:Contract_repr.t ->
  delegate:Tezos_protocol_environment_023_PtSeouLo.Signature.public_key_hash ->
  Tez_repr.t ->
  (Raw_context.t * Receipt_repr.balance_updates)
    Tezos_protocol_environment_023_PtSeouLo.Error_monad.tzresult
    Tezos_protocol_environment_023_PtSeouLo.Lwt.trequest_unstake ctxt ~sender_contract ~delegate amount records a request from sender_contract to unstake amount from delegate.
val finalize_unstake : 
  Raw_context.t ->
  Contract_repr.t ->
  (Raw_context.t * Receipt_repr.balance_updates)
    Tezos_protocol_environment_023_PtSeouLo.Error_monad.tzresult
    Tezos_protocol_environment_023_PtSeouLo.Lwt.tfinalize_unstake ctxt 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 consensus_rights_delay + 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.