Search by name, SuiNS, address, digest, object ID, coin type or checkpoint.

API

leverage_repay

Module0xaab0…de47
Move path
0x042a…199e::leverage_repay
Functions
62 public, 0 entry
Structs
3
leverage_repay

Bytecode187 lines

The on-chain disassembly. Offsets are bytecode positions within each function.

// Move bytecode v6
module 42a1a418bf977d5306aa783288eebbc2e3ca9200b533fba7feda521e60d199e.leverage_repay {
use 042a1a418bf977d5306aa783288eebbc2e3ca9200b533fba7feda521e60d199e::leverage_error;
use 042a1a418bf977d5306aa783288eebbc2e3ca9200b533fba7feda521e60d199e::leverage_market;
use 042a1a418bf977d5306aa783288eebbc2e3ca9200b533fba7feda521e60d199e::leverage_obligation;
use f01bf3d01c8f50247fdf597e3f565b865e00b4a20a01b353d44d71c993f36e9a::float;
use fe1d8929d13b00aaecd7642dec1c6d41cab82882a1b139efa46bf61dfd6380bf::app;
use fe1d8929d13b00aaecd7642dec1c6d41cab82882a1b139efa46bf61dfd6380bf::coin_decimals_registry;
use fe1d8929d13b00aaecd7642dec1c6d41cab82882a1b139efa46bf61dfd6380bf::flash_loan;
use fe1d8929d13b00aaecd7642dec1c6d41cab82882a1b139efa46bf61dfd6380bf::market;
use 0000000000000000000000000000000000000000000000000000000000000001::option;
use 0000000000000000000000000000000000000000000000000000000000000001::string;
use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
use 0000000000000000000000000000000000000000000000000000000000000002::clock;
use 0000000000000000000000000000000000000000000000000000000000000002::coin;
use 0000000000000000000000000000000000000000000000000000000000000002::event;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
use 144c57d6014488bc71c0902bddff482af090d13e2c61333ed903fe088220a92c::x_oracle;
 
struct RefundedEvent has copy, drop {
leverage_owner_cap: ID,
amount: u64,
amount_usd: Decimal,
coin_type: TypeName
}
 
struct CoinSplitEvent has copy, drop {
input_amount: u64,
split_amount: u64,
coin_type: TypeName
}
 
struct LeverageHotPotato<phantom Ty0, phantom Ty1> {
flash_loan: FlashLoan<Ty0, Ty1>
}
 
public split_with_event<Ty0>(Arg0: &mut Coin<Ty0>, Arg1: u64, Arg2: &mut TxContext): Coin<Ty0> {
B0:
0CopyLoc[0](Arg0: &mut Coin<Ty0>)
1FreezeRef
2Call coin::value<Ty0>(&Coin<Ty0>): u64
3CopyLoc[1](Arg1: u64)
4Call type_name::with_defining_ids<Ty0>(): TypeName
5Pack[1](CoinSplitEvent)
6Call event::emit<CoinSplitEvent>(CoinSplitEvent)
7MoveLoc[0](Arg0: &mut Coin<Ty0>)
8MoveLoc[1](Arg1: u64)
9MoveLoc[2](Arg2: &mut TxContext)
10Call coin::split<Ty0>(&mut Coin<Ty0>, u64, &mut TxContext): Coin<Ty0>
11Ret
}
 
public complete_leverage<Ty0, Ty1>(Arg0: &mut ProtocolApp, Arg1: &mut Market<Ty0>, Arg2: &mut LeverageMarket, Arg3: &LeverageMarketOwnerCap, Arg4: LeverageHotPotato<Ty0, Ty1>, Arg5: Option<String>, Arg6: Coin<Ty1>, Arg7: &XOracle, Arg8: &Clock, Arg9: &CoinDecimalsRegistry, Arg10: &mut TxContext): Coin<Ty1> {
L11: loc0: FlashLoan<Ty0, Ty1>
B0:
0MoveLoc[4](Arg4: LeverageHotPotato<Ty0, Ty1>)
1UnpackGeneric[0](LeverageHotPotato<Ty0, Ty1>)
2StLoc[11](loc0: FlashLoan<Ty0, Ty1>)
3MoveLoc[0](Arg0: &mut ProtocolApp)
4MoveLoc[1](Arg1: &mut Market<Ty0>)
5MoveLoc[2](Arg2: &mut LeverageMarket)
6MoveLoc[3](Arg3: &LeverageMarketOwnerCap)
7MoveLoc[11](loc0: FlashLoan<Ty0, Ty1>)
8MoveLoc[5](Arg5: Option<String>)
9MoveLoc[6](Arg6: Coin<Ty1>)
10MoveLoc[7](Arg7: &XOracle)
11MoveLoc[8](Arg8: &Clock)
12MoveLoc[9](Arg9: &CoinDecimalsRegistry)
13MoveLoc[10](Arg10: &mut TxContext)
14Call complete_leverage_inner<Ty0, Ty1>(&mut ProtocolApp, &mut Market<Ty0>, &mut LeverageMarket, &LeverageMarketOwnerCap, FlashLoan<Ty0, Ty1>, Option<String>, Coin<Ty1>, &XOracle, &Clock, &CoinDecimalsRegistry, &mut TxContext): Coin<Ty1>
15Ret
}
 
public(friend) complete_leverage_inner<Ty0, Ty1>(Arg0: &mut ProtocolApp, Arg1: &mut Market<Ty0>, Arg2: &mut LeverageMarket, Arg3: &LeverageMarketOwnerCap, Arg4: FlashLoan<Ty0, Ty1>, Arg5: Option<String>, Arg6: Coin<Ty1>, Arg7: &XOracle, Arg8: &Clock, Arg9: &CoinDecimalsRegistry, Arg10: &mut TxContext): Coin<Ty1> {
L11: loc0: Coin<Ty1>
L12: loc1: u64
B0:
0CopyLoc[2](Arg2: &mut LeverageMarket)
1FreezeRef
2Call leverage_market::ensure_leverage_on_going(&LeverageMarket)
3CopyLoc[2](Arg2: &mut LeverageMarket)
4Call leverage_market::mark_leverage_finished(&mut LeverageMarket)
5CopyLoc[2](Arg2: &mut LeverageMarket)
6FreezeRef
7CopyLoc[1](Arg1: &mut Market<Ty0>)
8FreezeRef
9Call leverage_market::ensure_supporting_market<Ty0>(&LeverageMarket, &Market<Ty0>)
10CopyLoc[3](Arg3: &LeverageMarketOwnerCap)
11Call leverage_obligation::ensure_same_market<Ty0>(&LeverageMarketOwnerCap)
12CopyLoc[3](Arg3: &LeverageMarketOwnerCap)
13MoveLoc[2](Arg2: &mut LeverageMarket)
14FreezeRef
15Call leverage_market::emode_group(&LeverageMarket): u8
16Call leverage_obligation::ensure_same_emode(&LeverageMarketOwnerCap, u8)
17ImmBorrowLoc[4](Arg4: FlashLoan<Ty0, Ty1>)
18Call market::fee<Ty0, Ty1>(&FlashLoan<Ty0, Ty1>): u64
19ImmBorrowLoc[4](Arg4: FlashLoan<Ty0, Ty1>)
20Call market::loan_amount<Ty0, Ty1>(&FlashLoan<Ty0, Ty1>): u64
21Add
22StLoc[12](loc1: u64)
23ImmBorrowLoc[6](Arg6: Coin<Ty1>)
24Call coin::value<Ty1>(&Coin<Ty1>): u64
25CopyLoc[12](loc1: u64)
26Ge
27BrFalse(29)
B1:
28Branch(45)
B2:
29MoveLoc[3](Arg3: &LeverageMarketOwnerCap)
30Pop
31MoveLoc[7](Arg7: &XOracle)
32Pop
33MoveLoc[1](Arg1: &mut Market<Ty0>)
34Pop
35MoveLoc[10](Arg10: &mut TxContext)
36Pop
37MoveLoc[9](Arg9: &CoinDecimalsRegistry)
38Pop
39MoveLoc[8](Arg8: &Clock)
40Pop
41MoveLoc[0](Arg0: &mut ProtocolApp)
42Pop
43Call leverage_error::cannot_repay_flash_loan(): u64
44Abort
B3:
45MutBorrowLoc[6](Arg6: Coin<Ty1>)
46MoveLoc[12](loc1: u64)
47CopyLoc[10](Arg10: &mut TxContext)
48Call coin::split<Ty1>(&mut Coin<Ty1>, u64, &mut TxContext): Coin<Ty1>
49StLoc[11](loc0: Coin<Ty1>)
50MoveLoc[0](Arg0: &mut ProtocolApp)
51MoveLoc[1](Arg1: &mut Market<Ty0>)
52MoveLoc[11](loc0: Coin<Ty1>)
53MoveLoc[4](Arg4: FlashLoan<Ty0, Ty1>)
54MoveLoc[5](Arg5: Option<String>)
55CopyLoc[9](Arg9: &CoinDecimalsRegistry)
56CopyLoc[7](Arg7: &XOracle)
57CopyLoc[8](Arg8: &Clock)
58MoveLoc[10](Arg10: &mut TxContext)
59Call flash_loan::repay_flash_loan_increase_referral_qualification<Ty0, Ty1>(&mut ProtocolApp, &mut Market<Ty0>, Coin<Ty1>, FlashLoan<Ty0, Ty1>, Option<String>, &CoinDecimalsRegistry, &XOracle, &Clock, &mut TxContext)
60MoveLoc[3](Arg3: &LeverageMarketOwnerCap)
61Call leverage_obligation::id(&LeverageMarketOwnerCap): ID
62MoveLoc[7](Arg7: &XOracle)
63MoveLoc[8](Arg8: &Clock)
64ImmBorrowLoc[6](Arg6: Coin<Ty1>)
65Call coin::value<Ty1>(&Coin<Ty1>): u64
66MoveLoc[9](Arg9: &CoinDecimalsRegistry)
67Call new_refunded_event<Ty1>(ID, &XOracle, &Clock, u64, &CoinDecimalsRegistry): RefundedEvent
68Call event::emit<RefundedEvent>(RefundedEvent)
69MoveLoc[6](Arg6: Coin<Ty1>)
70Ret
}
 
new_refunded_event<Ty0>(Arg0: ID, Arg1: &XOracle, Arg2: &Clock, Arg3: u64, Arg4: &CoinDecimalsRegistry): RefundedEvent {
L5: loc0: Decimal
B0:
0MoveLoc[1](Arg1: &XOracle)
1MoveLoc[2](Arg2: &Clock)
2CopyLoc[3](Arg3: u64)
3MoveLoc[4](Arg4: &CoinDecimalsRegistry)
4Call leverage_obligation::get_usd_value<Ty0>(&XOracle, &Clock, u64, &CoinDecimalsRegistry): Decimal
5StLoc[5](loc0: Decimal)
6MoveLoc[0](Arg0: ID)
7MoveLoc[3](Arg3: u64)
8MoveLoc[5](loc0: Decimal)
9Call type_name::with_defining_ids<Ty0>(): TypeName
10Pack[0](RefundedEvent)
11Ret
}
 
public(friend) new_leverage_hot_potato<Ty0, Ty1>(Arg0: FlashLoan<Ty0, Ty1>): LeverageHotPotato<Ty0, Ty1> {
B0:
0MoveLoc[0](Arg0: FlashLoan<Ty0, Ty1>)
1PackGeneric[0](LeverageHotPotato<Ty0, Ty1>)
2Ret
}
 
public(friend) flash_loan<Ty0, Ty1>(Arg0: &LeverageHotPotato<Ty0, Ty1>): &FlashLoan<Ty0, Ty1> {
B0:
0MoveLoc[0](Arg0: &LeverageHotPotato<Ty0, Ty1>)
1ImmBorrowFieldGeneric[0](LeverageHotPotato.flash_loan: FlashLoan<Ty0, Ty1>)
2Ret
}
 
}