Implementation of a program that manages on chain accounts to mint and redeem Redeemables tokens (UXD), hedged by a delta neutral position on underlying DEXes.
which split the redeemable redeemed from each depository based on depositories weights
then call redeem on all those depositories, sequentially with the computed amounts
Example maths values for a scenario of 2 mints in a row (20, then 120):
# First Redeem
# Weights set to 0%, 100%, 0% (identity overflowing, mercurial underflowing)
[redeem]
[redeem:redeemable_amount:20000000]
[redeem:identity_depository.redeemable_amount_under_management:29999999]
[redeem:mercurial_vault_depository_0.redeemable_amount_under_management:119999999]
[redeem:credix_lp_depository_0.redeemable_amount_under_management:149999998]
[redeem:depositories_target_redeemable_amount.identity_depository:0]
[redeem:depositories_target_redeemable_amount.mercurial_vault_depository_0:279999996]
[redeem:depositories_target_redeemable_amount.credix_lp_depository_0:0]
[redeem:depositories_redeemable_amount.identity_depository:20000000]
[redeem:depositories_redeemable_amount.mercurial_vault_depository_0:0]
[redeem:depositories_redeemable_amount.credix_lp_depository_0:0]
# Second redeem
# Weights unchanged, mercurial underflowing is still being redeemed from, because no other source available
[redeem]
[redeem:redeemable_amount:120000000]
[redeem:identity_depository.redeemable_amount_under_management:9999999]
[redeem:mercurial_vault_depository_0.redeemable_amount_under_management:119999999]
[redeem:credix_lp_depository_0.redeemable_amount_under_management:149999998]
[redeem:depositories_target_redeemable_amount.identity_depository:0]
[redeem:depositories_target_redeemable_amount.mercurial_vault_depository_0:159999996]
[redeem:depositories_target_redeemable_amount.credix_lp_depository_0:0]
[redeem:depositories_redeemable_amount.identity_depository:9999999]
[redeem:depositories_redeemable_amount.mercurial_vault_depository_0:110000001]
[redeem:depositories_redeemable_amount.credix_lp_depository_0:0]
This PR introduces a new IX:
Example maths values for a scenario of 2 mints in a row (20, then 120):
Note: this PR is a follow up to: https://github.com/UXDProtocol/uxd-program/pull/246