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

API

orders

Module0xca86…d98f
Move path
0x7fd8…1fec::orders
Functions
220 public, 0 entry
Structs
8
Friend modules
market
orders

Bytecode1277 lines

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

// Move bytecode v7
module 7fd8aba1652c58b6397c799fd375e748e5053145cb7e126d303e0a1545fd1fec.orders {
use 0000000000000000000000000000000000000000000000000000000000000001::option;
use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
use 0000000000000000000000000000000000000000000000000000000000000002::balance;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 7fd8aba1652c58b6397c799fd375e748e5053145cb7e126d303e0a1545fd1fec::agg_price;
use 7fd8aba1652c58b6397c799fd375e748e5053145cb7e126d303e0a1545fd1fec::decimal;
use 7fd8aba1652c58b6397c799fd375e748e5053145cb7e126d303e0a1545fd1fec::fee;
use 7fd8aba1652c58b6397c799fd375e748e5053145cb7e126d303e0a1545fd1fec::model;
use 7fd8aba1652c58b6397c799fd375e748e5053145cb7e126d303e0a1545fd1fec::pool;
use 7fd8aba1652c58b6397c799fd375e748e5053145cb7e126d303e0a1545fd1fec::position;
use 7fd8aba1652c58b6397c799fd375e748e5053145cb7e126d303e0a1545fd1fec::rate;
 
struct OpenPositionOrder<phantom Ty0, phantom Ty1> has store {
executed: bool,
created_at: u64,
open_amount: u64,
reserve_amount: u64,
limited_index_price: Decimal,
collateral_price_threshold: Decimal,
position_config: PositionConfig,
collateral: Balance<Ty0>,
fee: Balance<Ty1>,
scard_id: Option<ID>,
scard_rebate_rate: Option<Rate>,
referrer: address
}
 
struct OpenMarketOrder<phantom Ty0, phantom Ty1> has store {
executed: bool,
created_at: u64,
open_amount: u64,
reserve_amount: u64,
index_price: Decimal,
index_price_threshold: Decimal,
collateral_price_threshold: Decimal,
position_config: PositionConfig,
collateral: Balance<Ty0>,
fee: Balance<Ty1>,
scard_id: Option<ID>,
scard_rebate_rate: Option<Rate>,
referrer: address
}
 
struct DecreasePositionOrder<phantom Ty0> has store {
executed: bool,
created_at: u64,
take_profit: bool,
decrease_amount: u64,
limited_index_price: Decimal,
collateral_price_threshold: Decimal,
fee: Balance<Ty0>,
scard_id: Option<ID>,
scard_rebate_rate: Option<Rate>,
referrer: address
}
 
struct DecreaseMarketOrder<phantom Ty0> has store {
executed: bool,
created_at: u64,
take_profit: bool,
decrease_amount: u64,
limited_index_price: Decimal,
index_price_threshold: Decimal,
collateral_price_threshold: Decimal,
fee: Balance<Ty0>,
scard_id: Option<ID>,
scard_rebate_rate: Option<Rate>,
referrer: address
}
 
struct CreateOpenPositionOrderEvent has copy, drop {
open_amount: u64,
reserve_amount: u64,
limited_index_price: Decimal,
collateral_price_threshold: Decimal,
position_config: PositionConfig,
collateral_amount: u64,
fee_amount: u64,
scard_id: Option<ID>,
scard_rebate_rate: Option<Rate>
}
 
struct CreateOpenMarketOrderEvent has copy, drop {
open_amount: u64,
reserve_amount: u64,
index_price: Decimal,
index_price_threshold: Decimal,
collateral_price_threshold: Decimal,
position_config: PositionConfig,
collateral_amount: u64,
fee_amount: u64,
scard_id: Option<ID>,
scard_rebate_rate: Option<Rate>
}
 
struct CreateDecreasePositionOrderEvent has copy, drop {
take_profit: bool,
decrease_amount: u64,
limited_index_price: Decimal,
collateral_price_threshold: Decimal,
fee_amount: u64,
scard_id: Option<ID>,
scard_rebate_rate: Option<Rate>
}
 
struct CreateDecreaseMarketOrderEvent has copy, drop {
take_profit: bool,
decrease_amount: u64,
limited_index_price: Decimal,
index_price_threshold: Decimal,
collateral_price_threshold: Decimal,
fee_amount: u64,
scard_id: Option<ID>,
scard_rebate_rate: Option<Rate>
}
 
public(friend) new_open_position_order<Ty0, Ty1>(Arg0: u64, Arg1: u64, Arg2: u64, Arg3: Decimal, Arg4: Decimal, Arg5: PositionConfig, Arg6: Balance<Ty0>, Arg7: Balance<Ty1>, Arg8: Option<ID>, Arg9: Option<Rate>, Arg10: address): OpenPositionOrder<Ty0, Ty1> * CreateOpenPositionOrderEvent {
L11: loc0: CreateOpenPositionOrderEvent
B0:
0Call type_name::get<Ty0>(): TypeName
1Call type_name::get<Ty1>(): TypeName
2Eq
3BrFalse(5)
B1:
4Branch(7)
B2:
5LdConst[2](u64: 303)
6Abort
B3:
7CopyLoc[1](Arg1: u64)
8CopyLoc[2](Arg2: u64)
9CopyLoc[3](Arg3: Decimal)
10CopyLoc[4](Arg4: Decimal)
11CopyLoc[5](Arg5: PositionConfig)
12ImmBorrowLoc[6](Arg6: Balance<Ty0>)
13Call balance::value<Ty0>(&Balance<Ty0>): u64
14ImmBorrowLoc[7](Arg7: Balance<Ty1>)
15Call balance::value<Ty1>(&Balance<Ty1>): u64
16CopyLoc[8](Arg8: Option<ID>)
17CopyLoc[9](Arg9: Option<Rate>)
18Pack[4](CreateOpenPositionOrderEvent)
19StLoc[11](loc0: CreateOpenPositionOrderEvent)
20LdFalse
21MoveLoc[0](Arg0: u64)
22MoveLoc[1](Arg1: u64)
23MoveLoc[2](Arg2: u64)
24MoveLoc[3](Arg3: Decimal)
25MoveLoc[4](Arg4: Decimal)
26MoveLoc[5](Arg5: PositionConfig)
27MoveLoc[6](Arg6: Balance<Ty0>)
28MoveLoc[7](Arg7: Balance<Ty1>)
29MoveLoc[8](Arg8: Option<ID>)
30MoveLoc[9](Arg9: Option<Rate>)
31MoveLoc[10](Arg10: address)
32PackGeneric[0](OpenPositionOrder<Ty0, Ty1>)
33MoveLoc[11](loc0: CreateOpenPositionOrderEvent)
34Ret
}
 
public(friend) new_open_market_order<Ty0, Ty1>(Arg0: u64, Arg1: u64, Arg2: u64, Arg3: Decimal, Arg4: Decimal, Arg5: Decimal, Arg6: PositionConfig, Arg7: Balance<Ty0>, Arg8: Balance<Ty1>, Arg9: Option<ID>, Arg10: Option<Rate>, Arg11: address): OpenMarketOrder<Ty0, Ty1> * CreateOpenMarketOrderEvent {
L12: loc0: CreateOpenMarketOrderEvent
B0:
0Call type_name::get<Ty0>(): TypeName
1Call type_name::get<Ty1>(): TypeName
2Eq
3BrFalse(5)
B1:
4Branch(7)
B2:
5LdConst[2](u64: 303)
6Abort
B3:
7CopyLoc[1](Arg1: u64)
8CopyLoc[2](Arg2: u64)
9CopyLoc[3](Arg3: Decimal)
10CopyLoc[4](Arg4: Decimal)
11CopyLoc[5](Arg5: Decimal)
12CopyLoc[6](Arg6: PositionConfig)
13ImmBorrowLoc[7](Arg7: Balance<Ty0>)
14Call balance::value<Ty0>(&Balance<Ty0>): u64
15ImmBorrowLoc[8](Arg8: Balance<Ty1>)
16Call balance::value<Ty1>(&Balance<Ty1>): u64
17CopyLoc[9](Arg9: Option<ID>)
18CopyLoc[10](Arg10: Option<Rate>)
19Pack[5](CreateOpenMarketOrderEvent)
20StLoc[12](loc0: CreateOpenMarketOrderEvent)
21LdFalse
22MoveLoc[0](Arg0: u64)
23MoveLoc[1](Arg1: u64)
24MoveLoc[2](Arg2: u64)
25MoveLoc[3](Arg3: Decimal)
26MoveLoc[4](Arg4: Decimal)
27MoveLoc[5](Arg5: Decimal)
28MoveLoc[6](Arg6: PositionConfig)
29MoveLoc[7](Arg7: Balance<Ty0>)
30MoveLoc[8](Arg8: Balance<Ty1>)
31MoveLoc[9](Arg9: Option<ID>)
32MoveLoc[10](Arg10: Option<Rate>)
33MoveLoc[11](Arg11: address)
34PackGeneric[1](OpenMarketOrder<Ty0, Ty1>)
35MoveLoc[12](loc0: CreateOpenMarketOrderEvent)
36Ret
}
 
public(friend) new_decrease_market_order<Ty0>(Arg0: u64, Arg1: bool, Arg2: u64, Arg3: Decimal, Arg4: Decimal, Arg5: Decimal, Arg6: Balance<Ty0>, Arg7: Option<ID>, Arg8: Option<Rate>, Arg9: address): DecreaseMarketOrder<Ty0> * CreateDecreaseMarketOrderEvent {
L10: loc0: CreateDecreaseMarketOrderEvent
B0:
0CopyLoc[1](Arg1: bool)
1CopyLoc[2](Arg2: u64)
2CopyLoc[3](Arg3: Decimal)
3CopyLoc[4](Arg4: Decimal)
4CopyLoc[5](Arg5: Decimal)
5ImmBorrowLoc[6](Arg6: Balance<Ty0>)
6Call balance::value<Ty0>(&Balance<Ty0>): u64
7CopyLoc[7](Arg7: Option<ID>)
8CopyLoc[8](Arg8: Option<Rate>)
9Pack[7](CreateDecreaseMarketOrderEvent)
10StLoc[10](loc0: CreateDecreaseMarketOrderEvent)
11LdFalse
12MoveLoc[0](Arg0: u64)
13MoveLoc[1](Arg1: bool)
14MoveLoc[2](Arg2: u64)
15MoveLoc[3](Arg3: Decimal)
16MoveLoc[4](Arg4: Decimal)
17MoveLoc[5](Arg5: Decimal)
18MoveLoc[6](Arg6: Balance<Ty0>)
19MoveLoc[7](Arg7: Option<ID>)
20MoveLoc[8](Arg8: Option<Rate>)
21MoveLoc[9](Arg9: address)
22PackGeneric[2](DecreaseMarketOrder<Ty0>)
23MoveLoc[10](loc0: CreateDecreaseMarketOrderEvent)
24Ret
}
 
public(friend) new_decrease_position_order<Ty0>(Arg0: u64, Arg1: bool, Arg2: u64, Arg3: Decimal, Arg4: Decimal, Arg5: Balance<Ty0>, Arg6: Option<ID>, Arg7: Option<Rate>, Arg8: address): DecreasePositionOrder<Ty0> * CreateDecreasePositionOrderEvent {
L9: loc0: CreateDecreasePositionOrderEvent
B0:
0CopyLoc[1](Arg1: bool)
1CopyLoc[2](Arg2: u64)
2CopyLoc[3](Arg3: Decimal)
3CopyLoc[4](Arg4: Decimal)
4ImmBorrowLoc[5](Arg5: Balance<Ty0>)
5Call balance::value<Ty0>(&Balance<Ty0>): u64
6CopyLoc[6](Arg6: Option<ID>)
7CopyLoc[7](Arg7: Option<Rate>)
8Pack[6](CreateDecreasePositionOrderEvent)
9StLoc[9](loc0: CreateDecreasePositionOrderEvent)
10LdFalse
11MoveLoc[0](Arg0: u64)
12MoveLoc[1](Arg1: bool)
13MoveLoc[2](Arg2: u64)
14MoveLoc[3](Arg3: Decimal)
15MoveLoc[4](Arg4: Decimal)
16MoveLoc[5](Arg5: Balance<Ty0>)
17MoveLoc[6](Arg6: Option<ID>)
18MoveLoc[7](Arg7: Option<Rate>)
19MoveLoc[8](Arg8: address)
20PackGeneric[3](DecreasePositionOrder<Ty0>)
21MoveLoc[9](loc0: CreateDecreasePositionOrderEvent)
22Ret
}
 
public(friend) execute_open_position_order_v2<Ty0, Ty1>(Arg0: &mut OpenPositionOrder<Ty0, Ty1>, Arg1: &mut Vault<Ty0>, Arg2: &mut Symbol, Arg3: &FeeConfig, Arg4: &ReservingFeeModel, Arg5: &FundingFeeModel, Arg6: &AggPrice, Arg7: &AggPrice, Arg8: &AggPrice, Arg9: Rate, Arg10: bool, Arg11: Decimal, Arg12: u64, Arg13: bool): OpenPositionResult<Ty0> * Balance<Ty1> {
L14: loc0: Decimal
L15: loc1: Decimal
L16: loc2: Balance<Ty1>
B0:
0CopyLoc[0](Arg0: &mut OpenPositionOrder<Ty0, Ty1>)
1ImmBorrowFieldGeneric[0](OpenPositionOrder.executed: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(26)
B2:
6MoveLoc[1](Arg1: &mut Vault<Ty0>)
7Pop
8MoveLoc[2](Arg2: &mut Symbol)
9Pop
10MoveLoc[4](Arg4: &ReservingFeeModel)
11Pop
12MoveLoc[0](Arg0: &mut OpenPositionOrder<Ty0, Ty1>)
13Pop
14MoveLoc[7](Arg7: &AggPrice)
15Pop
16MoveLoc[5](Arg5: &FundingFeeModel)
17Pop
18MoveLoc[3](Arg3: &FeeConfig)
19Pop
20MoveLoc[8](Arg8: &AggPrice)
21Pop
22MoveLoc[6](Arg6: &AggPrice)
23Pop
24LdConst[0](u64: 301)
25Abort
B3:
26CopyLoc[10](Arg10: bool)
27BrFalse(55)
B4:
28MoveLoc[7](Arg7: &AggPrice)
29Call agg_price::price_of(&AggPrice): Decimal
30StLoc[14](loc0: Decimal)
31ImmBorrowLoc[14](loc0: Decimal)
32CopyLoc[0](Arg0: &mut OpenPositionOrder<Ty0, Ty1>)
33ImmBorrowFieldGeneric[1](OpenPositionOrder.limited_index_price: Decimal)
34Call decimal::le(&Decimal, &Decimal): bool
35BrFalse(37)
B5:
36Branch(82)
B6:
37MoveLoc[1](Arg1: &mut Vault<Ty0>)
38Pop
39MoveLoc[2](Arg2: &mut Symbol)
40Pop
41MoveLoc[4](Arg4: &ReservingFeeModel)
42Pop
43MoveLoc[0](Arg0: &mut OpenPositionOrder<Ty0, Ty1>)
44Pop
45MoveLoc[5](Arg5: &FundingFeeModel)
46Pop
47MoveLoc[3](Arg3: &FeeConfig)
48Pop
49MoveLoc[8](Arg8: &AggPrice)
50Pop
51MoveLoc[6](Arg6: &AggPrice)
52Pop
53LdConst[1](u64: 302)
54Abort
B7:
55MoveLoc[7](Arg7: &AggPrice)
56Call agg_price::price_of(&AggPrice): Decimal
57StLoc[15](loc1: Decimal)
58ImmBorrowLoc[15](loc1: Decimal)
59CopyLoc[0](Arg0: &mut OpenPositionOrder<Ty0, Ty1>)
60ImmBorrowFieldGeneric[1](OpenPositionOrder.limited_index_price: Decimal)
61Call decimal::ge(&Decimal, &Decimal): bool
62BrFalse(64)
B8:
63Branch(82)
B9:
64MoveLoc[1](Arg1: &mut Vault<Ty0>)
65Pop
66MoveLoc[2](Arg2: &mut Symbol)
67Pop
68MoveLoc[4](Arg4: &ReservingFeeModel)
69Pop
70MoveLoc[0](Arg0: &mut OpenPositionOrder<Ty0, Ty1>)
71Pop
72MoveLoc[5](Arg5: &FundingFeeModel)
73Pop
74MoveLoc[3](Arg3: &FeeConfig)
75Pop
76MoveLoc[8](Arg8: &AggPrice)
77Pop
78MoveLoc[6](Arg6: &AggPrice)
79Pop
80LdConst[1](u64: 302)
81Abort
B10:
82LdTrue
83CopyLoc[0](Arg0: &mut OpenPositionOrder<Ty0, Ty1>)
84MutBorrowFieldGeneric[0](OpenPositionOrder.executed: bool)
85WriteRef
86CopyLoc[0](Arg0: &mut OpenPositionOrder<Ty0, Ty1>)
87MutBorrowFieldGeneric[2](OpenPositionOrder.fee: Balance<Ty1>)
88Call balance::withdraw_all<Ty1>(&mut Balance<Ty1>): Balance<Ty1>
89StLoc[16](loc2: Balance<Ty1>)
90MoveLoc[1](Arg1: &mut Vault<Ty0>)
91MoveLoc[2](Arg2: &mut Symbol)
92MoveLoc[3](Arg3: &FeeConfig)
93MoveLoc[4](Arg4: &ReservingFeeModel)
94MoveLoc[5](Arg5: &FundingFeeModel)
95CopyLoc[0](Arg0: &mut OpenPositionOrder<Ty0, Ty1>)
96ImmBorrowFieldGeneric[3](OpenPositionOrder.position_config: PositionConfig)
97MoveLoc[6](Arg6: &AggPrice)
98MoveLoc[8](Arg8: &AggPrice)
99CopyLoc[0](Arg0: &mut OpenPositionOrder<Ty0, Ty1>)
100MutBorrowFieldGeneric[4](OpenPositionOrder.collateral: Balance<Ty0>)
101CopyLoc[0](Arg0: &mut OpenPositionOrder<Ty0, Ty1>)
102ImmBorrowFieldGeneric[5](OpenPositionOrder.collateral_price_threshold: Decimal)
103ReadRef
104MoveLoc[9](Arg9: Rate)
105CopyLoc[0](Arg0: &mut OpenPositionOrder<Ty0, Ty1>)
106ImmBorrowFieldGeneric[6](OpenPositionOrder.scard_rebate_rate: Option<Rate>)
107ReadRef
108MoveLoc[10](Arg10: bool)
109CopyLoc[0](Arg0: &mut OpenPositionOrder<Ty0, Ty1>)
110ImmBorrowFieldGeneric[7](OpenPositionOrder.open_amount: u64)
111ReadRef
112CopyLoc[0](Arg0: &mut OpenPositionOrder<Ty0, Ty1>)
113ImmBorrowFieldGeneric[8](OpenPositionOrder.reserve_amount: u64)
114ReadRef
115MoveLoc[11](Arg11: Decimal)
116MoveLoc[12](Arg12: u64)
117MoveLoc[0](Arg0: &mut OpenPositionOrder<Ty0, Ty1>)
118ImmBorrowFieldGeneric[9](OpenPositionOrder.referrer: address)
119ReadRef
120MoveLoc[13](Arg13: bool)
121Call pool::open_position_v1<Ty0>(&mut Vault<Ty0>, &mut Symbol, &FeeConfig, &ReservingFeeModel, &FundingFeeModel, &PositionConfig, &AggPrice, &AggPrice, &mut Balance<Ty0>, Decimal, Rate, Option<Rate>, bool, u64, u64, Decimal, u64, address, bool): OpenPositionResult<Ty0>
122MoveLoc[16](loc2: Balance<Ty1>)
123Ret
}
 
public(friend) execute_open_market_order<Ty0, Ty1>(Arg0: &mut OpenMarketOrder<Ty0, Ty1>, Arg1: &mut Vault<Ty0>, Arg2: &mut Symbol, Arg3: &FeeConfig, Arg4: &ReservingFeeModel, Arg5: &FundingFeeModel, Arg6: &AggPrice, Arg7: &AggPrice, Arg8: Rate, Arg9: bool, Arg10: Decimal, Arg11: u64, Arg12: bool): OpenPositionResult<Ty0> * Balance<Ty1> {
L13: loc0: Balance<Ty1>
L14: loc1: Decimal
B0:
0CopyLoc[0](Arg0: &mut OpenMarketOrder<Ty0, Ty1>)
1ImmBorrowFieldGeneric[10](OpenMarketOrder.executed: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(24)
B2:
6MoveLoc[1](Arg1: &mut Vault<Ty0>)
7Pop
8MoveLoc[2](Arg2: &mut Symbol)
9Pop
10MoveLoc[4](Arg4: &ReservingFeeModel)
11Pop
12MoveLoc[0](Arg0: &mut OpenMarketOrder<Ty0, Ty1>)
13Pop
14MoveLoc[7](Arg7: &AggPrice)
15Pop
16MoveLoc[5](Arg5: &FundingFeeModel)
17Pop
18MoveLoc[3](Arg3: &FeeConfig)
19Pop
20MoveLoc[6](Arg6: &AggPrice)
21Pop
22LdConst[0](u64: 301)
23Abort
B3:
24CopyLoc[7](Arg7: &AggPrice)
25Call agg_price::price_of(&AggPrice): Decimal
26CopyLoc[0](Arg0: &mut OpenMarketOrder<Ty0, Ty1>)
27ImmBorrowFieldGeneric[11](OpenMarketOrder.index_price: Decimal)
28ReadRef
29Call decimal::diff(Decimal, Decimal): Decimal
30StLoc[14](loc1: Decimal)
31ImmBorrowLoc[14](loc1: Decimal)
32CopyLoc[0](Arg0: &mut OpenMarketOrder<Ty0, Ty1>)
33ImmBorrowFieldGeneric[12](OpenMarketOrder.index_price_threshold: Decimal)
34Call decimal::le(&Decimal, &Decimal): bool
35BrFalse(37)
B4:
36Branch(55)
B5:
37MoveLoc[1](Arg1: &mut Vault<Ty0>)
38Pop
39MoveLoc[2](Arg2: &mut Symbol)
40Pop
41MoveLoc[4](Arg4: &ReservingFeeModel)
42Pop
43MoveLoc[0](Arg0: &mut OpenMarketOrder<Ty0, Ty1>)
44Pop
45MoveLoc[7](Arg7: &AggPrice)
46Pop
47MoveLoc[5](Arg5: &FundingFeeModel)
48Pop
49MoveLoc[3](Arg3: &FeeConfig)
50Pop
51MoveLoc[6](Arg6: &AggPrice)
52Pop
53LdConst[3](u64: 304)
54Abort
B6:
55LdTrue
56CopyLoc[0](Arg0: &mut OpenMarketOrder<Ty0, Ty1>)
57MutBorrowFieldGeneric[10](OpenMarketOrder.executed: bool)
58WriteRef
59CopyLoc[0](Arg0: &mut OpenMarketOrder<Ty0, Ty1>)
60MutBorrowFieldGeneric[13](OpenMarketOrder.fee: Balance<Ty1>)
61Call balance::withdraw_all<Ty1>(&mut Balance<Ty1>): Balance<Ty1>
62StLoc[13](loc0: Balance<Ty1>)
63MoveLoc[1](Arg1: &mut Vault<Ty0>)
64MoveLoc[2](Arg2: &mut Symbol)
65MoveLoc[3](Arg3: &FeeConfig)
66MoveLoc[4](Arg4: &ReservingFeeModel)
67MoveLoc[5](Arg5: &FundingFeeModel)
68CopyLoc[0](Arg0: &mut OpenMarketOrder<Ty0, Ty1>)
69ImmBorrowFieldGeneric[14](OpenMarketOrder.position_config: PositionConfig)
70MoveLoc[6](Arg6: &AggPrice)
71MoveLoc[7](Arg7: &AggPrice)
72CopyLoc[0](Arg0: &mut OpenMarketOrder<Ty0, Ty1>)
73MutBorrowFieldGeneric[15](OpenMarketOrder.collateral: Balance<Ty0>)
74CopyLoc[0](Arg0: &mut OpenMarketOrder<Ty0, Ty1>)
75ImmBorrowFieldGeneric[16](OpenMarketOrder.collateral_price_threshold: Decimal)
76ReadRef
77MoveLoc[8](Arg8: Rate)
78CopyLoc[0](Arg0: &mut OpenMarketOrder<Ty0, Ty1>)
79ImmBorrowFieldGeneric[17](OpenMarketOrder.scard_rebate_rate: Option<Rate>)
80ReadRef
81MoveLoc[9](Arg9: bool)
82CopyLoc[0](Arg0: &mut OpenMarketOrder<Ty0, Ty1>)
83ImmBorrowFieldGeneric[18](OpenMarketOrder.open_amount: u64)
84ReadRef
85CopyLoc[0](Arg0: &mut OpenMarketOrder<Ty0, Ty1>)
86ImmBorrowFieldGeneric[19](OpenMarketOrder.reserve_amount: u64)
87ReadRef
88MoveLoc[10](Arg10: Decimal)
89MoveLoc[11](Arg11: u64)
90MoveLoc[0](Arg0: &mut OpenMarketOrder<Ty0, Ty1>)
91ImmBorrowFieldGeneric[20](OpenMarketOrder.referrer: address)
92ReadRef
93MoveLoc[12](Arg12: bool)
94Call pool::open_position_v1<Ty0>(&mut Vault<Ty0>, &mut Symbol, &FeeConfig, &ReservingFeeModel, &FundingFeeModel, &PositionConfig, &AggPrice, &AggPrice, &mut Balance<Ty0>, Decimal, Rate, Option<Rate>, bool, u64, u64, Decimal, u64, address, bool): OpenPositionResult<Ty0>
95MoveLoc[13](loc0: Balance<Ty1>)
96Ret
}
 
public(friend) destroy_open_position_order<Ty0, Ty1>(Arg0: OpenPositionOrder<Ty0, Ty1>): Balance<Ty0> * Balance<Ty1> {
L1: loc0: Balance<Ty0>
L2: loc1: Balance<Ty1>
B0:
0MoveLoc[0](Arg0: OpenPositionOrder<Ty0, Ty1>)
1UnpackGeneric[0](OpenPositionOrder<Ty0, Ty1>)
2Pop
3Pop
4Pop
5StLoc[2](loc1: Balance<Ty1>)
6StLoc[1](loc0: Balance<Ty0>)
7Pop
8Pop
9Pop
10Pop
11Pop
12Pop
13Pop
14MoveLoc[1](loc0: Balance<Ty0>)
15MoveLoc[2](loc1: Balance<Ty1>)
16Ret
}
 
public(friend) destroy_open_market_order<Ty0, Ty1>(Arg0: OpenMarketOrder<Ty0, Ty1>): Balance<Ty0> * Balance<Ty1> {
L1: loc0: Balance<Ty0>
L2: loc1: Balance<Ty1>
B0:
0MoveLoc[0](Arg0: OpenMarketOrder<Ty0, Ty1>)
1UnpackGeneric[1](OpenMarketOrder<Ty0, Ty1>)
2Pop
3Pop
4Pop
5StLoc[2](loc1: Balance<Ty1>)
6StLoc[1](loc0: Balance<Ty0>)
7Pop
8Pop
9Pop
10Pop
11Pop
12Pop
13Pop
14Pop
15MoveLoc[1](loc0: Balance<Ty0>)
16MoveLoc[2](loc1: Balance<Ty1>)
17Ret
}
 
public(friend) execute_decrease_position_order_v2<Ty0, Ty1>(Arg0: &mut DecreasePositionOrder<Ty1>, Arg1: &mut Vault<Ty0>, Arg2: &mut Symbol, Arg3: &FeeConfig, Arg4: &mut Position<Ty0>, Arg5: &ReservingFeeModel, Arg6: &FundingFeeModel, Arg7: &AggPrice, Arg8: &AggPrice, Arg9: &AggPrice, Arg10: Rate, Arg11: bool, Arg12: Decimal, Arg13: &PositionInstantExitFeeConfig, Arg14: u64, Arg15: bool): DecreasePositionResultV1<Ty0> * Balance<Ty1> {
L16: loc0: bool
L17: loc1: bool
L18: loc2: bool
L19: loc3: Decimal
L20: loc4: Decimal
L21: loc5: Balance<Ty1>
B0:
0CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
1ImmBorrowFieldGeneric[21](DecreasePositionOrder.executed: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(30)
B2:
6MoveLoc[1](Arg1: &mut Vault<Ty0>)
7Pop
8MoveLoc[2](Arg2: &mut Symbol)
9Pop
10MoveLoc[5](Arg5: &ReservingFeeModel)
11Pop
12MoveLoc[4](Arg4: &mut Position<Ty0>)
13Pop
14MoveLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
15Pop
16MoveLoc[13](Arg13: &PositionInstantExitFeeConfig)
17Pop
18MoveLoc[8](Arg8: &AggPrice)
19Pop
20MoveLoc[6](Arg6: &FundingFeeModel)
21Pop
22MoveLoc[3](Arg3: &FeeConfig)
23Pop
24MoveLoc[9](Arg9: &AggPrice)
25Pop
26MoveLoc[7](Arg7: &AggPrice)
27Pop
28LdConst[0](u64: 301)
29Abort
B3:
30CopyLoc[11](Arg11: bool)
31BrFalse(37)
B4:
32CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
33ImmBorrowFieldGeneric[22](DecreasePositionOrder.take_profit: bool)
34ReadRef
35StLoc[18](loc2: bool)
36Branch(39)
B5:
37LdFalse
38StLoc[18](loc2: bool)
B6:
39MoveLoc[18](loc2: bool)
40BrFalse(44)
B7:
41LdTrue
42StLoc[16](loc0: bool)
43Branch(57)
B8:
44CopyLoc[11](Arg11: bool)
45Not
46BrFalse(53)
B9:
47CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
48ImmBorrowFieldGeneric[22](DecreasePositionOrder.take_profit: bool)
49ReadRef
50Not
51StLoc[17](loc1: bool)
52Branch(55)
B10:
53LdFalse
54StLoc[17](loc1: bool)
B11:
55MoveLoc[17](loc1: bool)
56StLoc[16](loc0: bool)
B12:
57MoveLoc[16](loc0: bool)
58BrFalse(90)
B13:
59MoveLoc[8](Arg8: &AggPrice)
60Call agg_price::price_of(&AggPrice): Decimal
61StLoc[19](loc3: Decimal)
62ImmBorrowLoc[19](loc3: Decimal)
63CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
64ImmBorrowFieldGeneric[23](DecreasePositionOrder.limited_index_price: Decimal)
65Call decimal::ge(&Decimal, &Decimal): bool
66BrFalse(68)
B14:
67Branch(121)
B15:
68MoveLoc[1](Arg1: &mut Vault<Ty0>)
69Pop
70MoveLoc[2](Arg2: &mut Symbol)
71Pop
72MoveLoc[5](Arg5: &ReservingFeeModel)
73Pop
74MoveLoc[4](Arg4: &mut Position<Ty0>)
75Pop
76MoveLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
77Pop
78MoveLoc[13](Arg13: &PositionInstantExitFeeConfig)
79Pop
80MoveLoc[6](Arg6: &FundingFeeModel)
81Pop
82MoveLoc[3](Arg3: &FeeConfig)
83Pop
84MoveLoc[9](Arg9: &AggPrice)
85Pop
86MoveLoc[7](Arg7: &AggPrice)
87Pop
88LdConst[1](u64: 302)
89Abort
B16:
90MoveLoc[8](Arg8: &AggPrice)
91Call agg_price::price_of(&AggPrice): Decimal
92StLoc[20](loc4: Decimal)
93ImmBorrowLoc[20](loc4: Decimal)
94CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
95ImmBorrowFieldGeneric[23](DecreasePositionOrder.limited_index_price: Decimal)
96Call decimal::le(&Decimal, &Decimal): bool
97BrFalse(99)
B17:
98Branch(121)
B18:
99MoveLoc[1](Arg1: &mut Vault<Ty0>)
100Pop
101MoveLoc[2](Arg2: &mut Symbol)
102Pop
103MoveLoc[5](Arg5: &ReservingFeeModel)
104Pop
105MoveLoc[4](Arg4: &mut Position<Ty0>)
106Pop
107MoveLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
108Pop
109MoveLoc[13](Arg13: &PositionInstantExitFeeConfig)
110Pop
111MoveLoc[6](Arg6: &FundingFeeModel)
112Pop
113MoveLoc[3](Arg3: &FeeConfig)
114Pop
115MoveLoc[9](Arg9: &AggPrice)
116Pop
117MoveLoc[7](Arg7: &AggPrice)
118Pop
119LdConst[1](u64: 302)
120Abort
B19:
121LdTrue
122CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
123MutBorrowFieldGeneric[21](DecreasePositionOrder.executed: bool)
124WriteRef
125CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
126MutBorrowFieldGeneric[24](DecreasePositionOrder.fee: Balance<Ty1>)
127Call balance::withdraw_all<Ty1>(&mut Balance<Ty1>): Balance<Ty1>
128StLoc[21](loc5: Balance<Ty1>)
129MoveLoc[1](Arg1: &mut Vault<Ty0>)
130MoveLoc[2](Arg2: &mut Symbol)
131MoveLoc[3](Arg3: &FeeConfig)
132MoveLoc[4](Arg4: &mut Position<Ty0>)
133MoveLoc[5](Arg5: &ReservingFeeModel)
134MoveLoc[6](Arg6: &FundingFeeModel)
135MoveLoc[7](Arg7: &AggPrice)
136MoveLoc[9](Arg9: &AggPrice)
137CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
138ImmBorrowFieldGeneric[25](DecreasePositionOrder.collateral_price_threshold: Decimal)
139ReadRef
140MoveLoc[10](Arg10: Rate)
141CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
142ImmBorrowFieldGeneric[26](DecreasePositionOrder.scard_rebate_rate: Option<Rate>)
143ReadRef
144MoveLoc[11](Arg11: bool)
145CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
146ImmBorrowFieldGeneric[27](DecreasePositionOrder.decrease_amount: u64)
147ReadRef
148MoveLoc[12](Arg12: Decimal)
149MoveLoc[13](Arg13: &PositionInstantExitFeeConfig)
150MoveLoc[14](Arg14: u64)
151MoveLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
152ImmBorrowFieldGeneric[28](DecreasePositionOrder.referrer: address)
153ReadRef
154MoveLoc[15](Arg15: bool)
155Call pool::decrease_position_v1_1<Ty0>(&mut Vault<Ty0>, &mut Symbol, &FeeConfig, &mut Position<Ty0>, &ReservingFeeModel, &FundingFeeModel, &AggPrice, &AggPrice, Decimal, Rate, Option<Rate>, bool, u64, Decimal, &PositionInstantExitFeeConfig, u64, address, bool): DecreasePositionResultV1<Ty0>
156MoveLoc[21](loc5: Balance<Ty1>)
157Ret
}
 
public(friend) execute_decrease_market_order<Ty0, Ty1>(Arg0: &mut DecreaseMarketOrder<Ty1>, Arg1: &mut Vault<Ty0>, Arg2: &mut Symbol, Arg3: &FeeConfig, Arg4: &mut Position<Ty0>, Arg5: &ReservingFeeModel, Arg6: &FundingFeeModel, Arg7: &AggPrice, Arg8: &AggPrice, Arg9: Rate, Arg10: bool, Arg11: Decimal, Arg12: &PositionInstantExitFeeConfig, Arg13: u64, Arg14: bool): DecreasePositionResultV1<Ty0> * Balance<Ty1> {
L15: loc0: Balance<Ty1>
L16: loc1: Decimal
B0:
0CopyLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
1ImmBorrowFieldGeneric[29](DecreaseMarketOrder.executed: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(28)
B2:
6MoveLoc[1](Arg1: &mut Vault<Ty0>)
7Pop
8MoveLoc[2](Arg2: &mut Symbol)
9Pop
10MoveLoc[5](Arg5: &ReservingFeeModel)
11Pop
12MoveLoc[4](Arg4: &mut Position<Ty0>)
13Pop
14MoveLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
15Pop
16MoveLoc[12](Arg12: &PositionInstantExitFeeConfig)
17Pop
18MoveLoc[8](Arg8: &AggPrice)
19Pop
20MoveLoc[6](Arg6: &FundingFeeModel)
21Pop
22MoveLoc[3](Arg3: &FeeConfig)
23Pop
24MoveLoc[7](Arg7: &AggPrice)
25Pop
26LdConst[0](u64: 301)
27Abort
B3:
28CopyLoc[8](Arg8: &AggPrice)
29Call agg_price::price_of(&AggPrice): Decimal
30CopyLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
31ImmBorrowFieldGeneric[30](DecreaseMarketOrder.limited_index_price: Decimal)
32ReadRef
33Call decimal::diff(Decimal, Decimal): Decimal
34StLoc[16](loc1: Decimal)
35ImmBorrowLoc[16](loc1: Decimal)
36CopyLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
37ImmBorrowFieldGeneric[31](DecreaseMarketOrder.index_price_threshold: Decimal)
38Call decimal::le(&Decimal, &Decimal): bool
39BrFalse(41)
B4:
40Branch(63)
B5:
41MoveLoc[1](Arg1: &mut Vault<Ty0>)
42Pop
43MoveLoc[2](Arg2: &mut Symbol)
44Pop
45MoveLoc[5](Arg5: &ReservingFeeModel)
46Pop
47MoveLoc[4](Arg4: &mut Position<Ty0>)
48Pop
49MoveLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
50Pop
51MoveLoc[12](Arg12: &PositionInstantExitFeeConfig)
52Pop
53MoveLoc[8](Arg8: &AggPrice)
54Pop
55MoveLoc[6](Arg6: &FundingFeeModel)
56Pop
57MoveLoc[3](Arg3: &FeeConfig)
58Pop
59MoveLoc[7](Arg7: &AggPrice)
60Pop
61LdConst[3](u64: 304)
62Abort
B6:
63LdTrue
64CopyLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
65MutBorrowFieldGeneric[29](DecreaseMarketOrder.executed: bool)
66WriteRef
67CopyLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
68MutBorrowFieldGeneric[32](DecreaseMarketOrder.fee: Balance<Ty1>)
69Call balance::withdraw_all<Ty1>(&mut Balance<Ty1>): Balance<Ty1>
70StLoc[15](loc0: Balance<Ty1>)
71MoveLoc[1](Arg1: &mut Vault<Ty0>)
72MoveLoc[2](Arg2: &mut Symbol)
73MoveLoc[3](Arg3: &FeeConfig)
74MoveLoc[4](Arg4: &mut Position<Ty0>)
75MoveLoc[5](Arg5: &ReservingFeeModel)
76MoveLoc[6](Arg6: &FundingFeeModel)
77MoveLoc[7](Arg7: &AggPrice)
78MoveLoc[8](Arg8: &AggPrice)
79CopyLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
80ImmBorrowFieldGeneric[33](DecreaseMarketOrder.collateral_price_threshold: Decimal)
81ReadRef
82MoveLoc[9](Arg9: Rate)
83CopyLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
84ImmBorrowFieldGeneric[34](DecreaseMarketOrder.scard_rebate_rate: Option<Rate>)
85ReadRef
86MoveLoc[10](Arg10: bool)
87CopyLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
88ImmBorrowFieldGeneric[35](DecreaseMarketOrder.decrease_amount: u64)
89ReadRef
90MoveLoc[11](Arg11: Decimal)
91MoveLoc[12](Arg12: &PositionInstantExitFeeConfig)
92MoveLoc[13](Arg13: u64)
93MoveLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
94ImmBorrowFieldGeneric[36](DecreaseMarketOrder.referrer: address)
95ReadRef
96MoveLoc[14](Arg14: bool)
97Call pool::decrease_position_v1_1<Ty0>(&mut Vault<Ty0>, &mut Symbol, &FeeConfig, &mut Position<Ty0>, &ReservingFeeModel, &FundingFeeModel, &AggPrice, &AggPrice, Decimal, Rate, Option<Rate>, bool, u64, Decimal, &PositionInstantExitFeeConfig, u64, address, bool): DecreasePositionResultV1<Ty0>
98MoveLoc[15](loc0: Balance<Ty1>)
99Ret
}
 
public(friend) execute_decrease_market_order_with_loss_protection<Ty0, Ty1>(Arg0: &mut DecreaseMarketOrder<Ty1>, Arg1: &mut Vault<Ty0>, Arg2: &mut Symbol, Arg3: Rate, Arg4: &mut Position<Ty0>, Arg5: &ReservingFeeModel, Arg6: &FundingFeeModel, Arg7: &AggPrice, Arg8: &AggPrice, Arg9: Rate, Arg10: bool, Arg11: Decimal, Arg12: &PositionInstantExitFeeConfig, Arg13: u64, Arg14: bool, Arg15: &mut LossProtectionVault<Ty0>, Arg16: Rate): DecreasePositionResultV1<Ty0> * Balance<Ty1> {
L17: loc0: Balance<Ty1>
L18: loc1: AggPrice
L19: loc2: Decimal
B0:
0CopyLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
1ImmBorrowFieldGeneric[29](DecreaseMarketOrder.executed: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(28)
B2:
6MoveLoc[1](Arg1: &mut Vault<Ty0>)
7Pop
8MoveLoc[2](Arg2: &mut Symbol)
9Pop
10MoveLoc[5](Arg5: &ReservingFeeModel)
11Pop
12MoveLoc[4](Arg4: &mut Position<Ty0>)
13Pop
14MoveLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
15Pop
16MoveLoc[15](Arg15: &mut LossProtectionVault<Ty0>)
17Pop
18MoveLoc[12](Arg12: &PositionInstantExitFeeConfig)
19Pop
20MoveLoc[8](Arg8: &AggPrice)
21Pop
22MoveLoc[6](Arg6: &FundingFeeModel)
23Pop
24MoveLoc[7](Arg7: &AggPrice)
25Pop
26LdConst[0](u64: 301)
27Abort
B3:
28MoveLoc[8](Arg8: &AggPrice)
29Call agg_price::price_of(&AggPrice): Decimal
30CopyLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
31ImmBorrowFieldGeneric[30](DecreaseMarketOrder.limited_index_price: Decimal)
32ReadRef
33Call decimal::diff(Decimal, Decimal): Decimal
34StLoc[19](loc2: Decimal)
35ImmBorrowLoc[19](loc2: Decimal)
36CopyLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
37ImmBorrowFieldGeneric[31](DecreaseMarketOrder.index_price_threshold: Decimal)
38Call decimal::le(&Decimal, &Decimal): bool
39BrFalse(41)
B4:
40Branch(61)
B5:
41MoveLoc[1](Arg1: &mut Vault<Ty0>)
42Pop
43MoveLoc[2](Arg2: &mut Symbol)
44Pop
45MoveLoc[5](Arg5: &ReservingFeeModel)
46Pop
47MoveLoc[4](Arg4: &mut Position<Ty0>)
48Pop
49MoveLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
50Pop
51MoveLoc[15](Arg15: &mut LossProtectionVault<Ty0>)
52Pop
53MoveLoc[12](Arg12: &PositionInstantExitFeeConfig)
54Pop
55MoveLoc[6](Arg6: &FundingFeeModel)
56Pop
57MoveLoc[7](Arg7: &AggPrice)
58Pop
59LdConst[3](u64: 304)
60Abort
B6:
61LdTrue
62CopyLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
63MutBorrowFieldGeneric[29](DecreaseMarketOrder.executed: bool)
64WriteRef
65CopyLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
66MutBorrowFieldGeneric[32](DecreaseMarketOrder.fee: Balance<Ty1>)
67Call balance::withdraw_all<Ty1>(&mut Balance<Ty1>): Balance<Ty1>
68StLoc[17](loc0: Balance<Ty1>)
69CopyLoc[2](Arg2: &mut Symbol)
70FreezeRef
71Call pool::symbol_price_config(&Symbol): &AggPriceConfig
72CopyLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
73ImmBorrowFieldGeneric[30](DecreaseMarketOrder.limited_index_price: Decimal)
74ReadRef
75Call agg_price::from_price(&AggPriceConfig, Decimal): AggPrice
76StLoc[18](loc1: AggPrice)
77MoveLoc[1](Arg1: &mut Vault<Ty0>)
78MoveLoc[2](Arg2: &mut Symbol)
79MoveLoc[3](Arg3: Rate)
80MoveLoc[4](Arg4: &mut Position<Ty0>)
81MoveLoc[5](Arg5: &ReservingFeeModel)
82MoveLoc[6](Arg6: &FundingFeeModel)
83MoveLoc[7](Arg7: &AggPrice)
84ImmBorrowLoc[18](loc1: AggPrice)
85CopyLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
86ImmBorrowFieldGeneric[33](DecreaseMarketOrder.collateral_price_threshold: Decimal)
87ReadRef
88MoveLoc[9](Arg9: Rate)
89CopyLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
90ImmBorrowFieldGeneric[34](DecreaseMarketOrder.scard_rebate_rate: Option<Rate>)
91ReadRef
92MoveLoc[10](Arg10: bool)
93CopyLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
94ImmBorrowFieldGeneric[35](DecreaseMarketOrder.decrease_amount: u64)
95ReadRef
96MoveLoc[11](Arg11: Decimal)
97MoveLoc[12](Arg12: &PositionInstantExitFeeConfig)
98MoveLoc[13](Arg13: u64)
99MoveLoc[0](Arg0: &mut DecreaseMarketOrder<Ty1>)
100ImmBorrowFieldGeneric[36](DecreaseMarketOrder.referrer: address)
101ReadRef
102MoveLoc[14](Arg14: bool)
103MoveLoc[15](Arg15: &mut LossProtectionVault<Ty0>)
104MoveLoc[16](Arg16: Rate)
105Call pool::decrease_position_v1_1_with_loss_protection<Ty0>(&mut Vault<Ty0>, &mut Symbol, Rate, &mut Position<Ty0>, &ReservingFeeModel, &FundingFeeModel, &AggPrice, &AggPrice, Decimal, Rate, Option<Rate>, bool, u64, Decimal, &PositionInstantExitFeeConfig, u64, address, bool, &mut LossProtectionVault<Ty0>, Rate): DecreasePositionResultV1<Ty0>
106MoveLoc[17](loc0: Balance<Ty1>)
107Ret
}
 
public(friend) execute_decrease_position_order_v2_with_loss_protection<Ty0, Ty1>(Arg0: &mut DecreasePositionOrder<Ty1>, Arg1: &mut Vault<Ty0>, Arg2: &mut Symbol, Arg3: Rate, Arg4: &mut Position<Ty0>, Arg5: &ReservingFeeModel, Arg6: &FundingFeeModel, Arg7: &AggPrice, Arg8: &AggPrice, Arg9: &AggPrice, Arg10: Rate, Arg11: bool, Arg12: Decimal, Arg13: &PositionInstantExitFeeConfig, Arg14: u64, Arg15: bool, Arg16: &mut LossProtectionVault<Ty0>, Arg17: Rate): DecreasePositionResultV1<Ty0> * Balance<Ty1> {
L18: loc0: bool
L19: loc1: bool
L20: loc2: bool
L21: loc3: Decimal
L22: loc4: Decimal
L23: loc5: Balance<Ty1>
B0:
0CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
1ImmBorrowFieldGeneric[21](DecreasePositionOrder.executed: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(30)
B2:
6MoveLoc[1](Arg1: &mut Vault<Ty0>)
7Pop
8MoveLoc[2](Arg2: &mut Symbol)
9Pop
10MoveLoc[5](Arg5: &ReservingFeeModel)
11Pop
12MoveLoc[4](Arg4: &mut Position<Ty0>)
13Pop
14MoveLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
15Pop
16MoveLoc[16](Arg16: &mut LossProtectionVault<Ty0>)
17Pop
18MoveLoc[13](Arg13: &PositionInstantExitFeeConfig)
19Pop
20MoveLoc[8](Arg8: &AggPrice)
21Pop
22MoveLoc[6](Arg6: &FundingFeeModel)
23Pop
24MoveLoc[9](Arg9: &AggPrice)
25Pop
26MoveLoc[7](Arg7: &AggPrice)
27Pop
28LdConst[0](u64: 301)
29Abort
B3:
30CopyLoc[11](Arg11: bool)
31BrFalse(37)
B4:
32CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
33ImmBorrowFieldGeneric[22](DecreasePositionOrder.take_profit: bool)
34ReadRef
35StLoc[20](loc2: bool)
36Branch(39)
B5:
37LdFalse
38StLoc[20](loc2: bool)
B6:
39MoveLoc[20](loc2: bool)
40BrFalse(44)
B7:
41LdTrue
42StLoc[18](loc0: bool)
43Branch(57)
B8:
44CopyLoc[11](Arg11: bool)
45Not
46BrFalse(53)
B9:
47CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
48ImmBorrowFieldGeneric[22](DecreasePositionOrder.take_profit: bool)
49ReadRef
50Not
51StLoc[19](loc1: bool)
52Branch(55)
B10:
53LdFalse
54StLoc[19](loc1: bool)
B11:
55MoveLoc[19](loc1: bool)
56StLoc[18](loc0: bool)
B12:
57MoveLoc[18](loc0: bool)
58BrFalse(90)
B13:
59MoveLoc[8](Arg8: &AggPrice)
60Call agg_price::price_of(&AggPrice): Decimal
61StLoc[21](loc3: Decimal)
62ImmBorrowLoc[21](loc3: Decimal)
63CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
64ImmBorrowFieldGeneric[23](DecreasePositionOrder.limited_index_price: Decimal)
65Call decimal::ge(&Decimal, &Decimal): bool
66BrFalse(68)
B14:
67Branch(121)
B15:
68MoveLoc[1](Arg1: &mut Vault<Ty0>)
69Pop
70MoveLoc[2](Arg2: &mut Symbol)
71Pop
72MoveLoc[5](Arg5: &ReservingFeeModel)
73Pop
74MoveLoc[4](Arg4: &mut Position<Ty0>)
75Pop
76MoveLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
77Pop
78MoveLoc[16](Arg16: &mut LossProtectionVault<Ty0>)
79Pop
80MoveLoc[13](Arg13: &PositionInstantExitFeeConfig)
81Pop
82MoveLoc[6](Arg6: &FundingFeeModel)
83Pop
84MoveLoc[9](Arg9: &AggPrice)
85Pop
86MoveLoc[7](Arg7: &AggPrice)
87Pop
88LdConst[1](u64: 302)
89Abort
B16:
90MoveLoc[8](Arg8: &AggPrice)
91Call agg_price::price_of(&AggPrice): Decimal
92StLoc[22](loc4: Decimal)
93ImmBorrowLoc[22](loc4: Decimal)
94CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
95ImmBorrowFieldGeneric[23](DecreasePositionOrder.limited_index_price: Decimal)
96Call decimal::le(&Decimal, &Decimal): bool
97BrFalse(99)
B17:
98Branch(121)
B18:
99MoveLoc[1](Arg1: &mut Vault<Ty0>)
100Pop
101MoveLoc[2](Arg2: &mut Symbol)
102Pop
103MoveLoc[5](Arg5: &ReservingFeeModel)
104Pop
105MoveLoc[4](Arg4: &mut Position<Ty0>)
106Pop
107MoveLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
108Pop
109MoveLoc[16](Arg16: &mut LossProtectionVault<Ty0>)
110Pop
111MoveLoc[13](Arg13: &PositionInstantExitFeeConfig)
112Pop
113MoveLoc[6](Arg6: &FundingFeeModel)
114Pop
115MoveLoc[9](Arg9: &AggPrice)
116Pop
117MoveLoc[7](Arg7: &AggPrice)
118Pop
119LdConst[1](u64: 302)
120Abort
B19:
121LdTrue
122CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
123MutBorrowFieldGeneric[21](DecreasePositionOrder.executed: bool)
124WriteRef
125CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
126MutBorrowFieldGeneric[24](DecreasePositionOrder.fee: Balance<Ty1>)
127Call balance::withdraw_all<Ty1>(&mut Balance<Ty1>): Balance<Ty1>
128StLoc[23](loc5: Balance<Ty1>)
129MoveLoc[1](Arg1: &mut Vault<Ty0>)
130MoveLoc[2](Arg2: &mut Symbol)
131MoveLoc[3](Arg3: Rate)
132MoveLoc[4](Arg4: &mut Position<Ty0>)
133MoveLoc[5](Arg5: &ReservingFeeModel)
134MoveLoc[6](Arg6: &FundingFeeModel)
135MoveLoc[7](Arg7: &AggPrice)
136MoveLoc[9](Arg9: &AggPrice)
137CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
138ImmBorrowFieldGeneric[25](DecreasePositionOrder.collateral_price_threshold: Decimal)
139ReadRef
140MoveLoc[10](Arg10: Rate)
141CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
142ImmBorrowFieldGeneric[26](DecreasePositionOrder.scard_rebate_rate: Option<Rate>)
143ReadRef
144MoveLoc[11](Arg11: bool)
145CopyLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
146ImmBorrowFieldGeneric[27](DecreasePositionOrder.decrease_amount: u64)
147ReadRef
148MoveLoc[12](Arg12: Decimal)
149MoveLoc[13](Arg13: &PositionInstantExitFeeConfig)
150MoveLoc[14](Arg14: u64)
151MoveLoc[0](Arg0: &mut DecreasePositionOrder<Ty1>)
152ImmBorrowFieldGeneric[28](DecreasePositionOrder.referrer: address)
153ReadRef
154MoveLoc[15](Arg15: bool)
155MoveLoc[16](Arg16: &mut LossProtectionVault<Ty0>)
156MoveLoc[17](Arg17: Rate)
157Call pool::decrease_position_v1_1_with_loss_protection<Ty0>(&mut Vault<Ty0>, &mut Symbol, Rate, &mut Position<Ty0>, &ReservingFeeModel, &FundingFeeModel, &AggPrice, &AggPrice, Decimal, Rate, Option<Rate>, bool, u64, Decimal, &PositionInstantExitFeeConfig, u64, address, bool, &mut LossProtectionVault<Ty0>, Rate): DecreasePositionResultV1<Ty0>
158MoveLoc[23](loc5: Balance<Ty1>)
159Ret
}
 
public(friend) destroy_decrease_position_order<Ty0>(Arg0: DecreasePositionOrder<Ty0>): Balance<Ty0> {
L1: loc0: Balance<Ty0>
B0:
0MoveLoc[0](Arg0: DecreasePositionOrder<Ty0>)
1UnpackGeneric[3](DecreasePositionOrder<Ty0>)
2Pop
3Pop
4Pop
5StLoc[1](loc0: Balance<Ty0>)
6Pop
7Pop
8Pop
9Pop
10Pop
11Pop
12MoveLoc[1](loc0: Balance<Ty0>)
13Ret
}
 
public(friend) destroy_decrease_market_order<Ty0>(Arg0: DecreaseMarketOrder<Ty0>): Balance<Ty0> {
L1: loc0: Balance<Ty0>
B0:
0MoveLoc[0](Arg0: DecreaseMarketOrder<Ty0>)
1UnpackGeneric[2](DecreaseMarketOrder<Ty0>)
2Pop
3Pop
4Pop
5StLoc[1](loc0: Balance<Ty0>)
6Pop
7Pop
8Pop
9Pop
10Pop
11Pop
12Pop
13MoveLoc[1](loc0: Balance<Ty0>)
14Ret
}
 
public(friend) get_scard_id_from_open_order<Ty0, Ty1>(Arg0: &OpenPositionOrder<Ty0, Ty1>): &Option<ID> {
B0:
0MoveLoc[0](Arg0: &OpenPositionOrder<Ty0, Ty1>)
1ImmBorrowFieldGeneric[37](OpenPositionOrder.scard_id: Option<ID>)
2Ret
}
 
public(friend) get_scard_id_from_open_market_order<Ty0, Ty1>(Arg0: &OpenMarketOrder<Ty0, Ty1>): &Option<ID> {
B0:
0MoveLoc[0](Arg0: &OpenMarketOrder<Ty0, Ty1>)
1ImmBorrowFieldGeneric[38](OpenMarketOrder.scard_id: Option<ID>)
2Ret
}
 
public(friend) get_scard_id_from_decrease_order<Ty0>(Arg0: &DecreasePositionOrder<Ty0>): &Option<ID> {
B0:
0MoveLoc[0](Arg0: &DecreasePositionOrder<Ty0>)
1ImmBorrowFieldGeneric[39](DecreasePositionOrder.scard_id: Option<ID>)
2Ret
}
 
public(friend) get_scard_id_from_decrease_market_order<Ty0>(Arg0: &DecreaseMarketOrder<Ty0>): &Option<ID> {
B0:
0MoveLoc[0](Arg0: &DecreaseMarketOrder<Ty0>)
1ImmBorrowFieldGeneric[40](DecreaseMarketOrder.scard_id: Option<ID>)
2Ret
}
 
public(friend) get_open_amount<Ty0, Ty1>(Arg0: &OpenPositionOrder<Ty0, Ty1>): u64 {
B0:
0MoveLoc[0](Arg0: &OpenPositionOrder<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](OpenPositionOrder.open_amount: u64)
2ReadRef
3Ret
}
 
public(friend) get_open_amount_market_order<Ty0, Ty1>(Arg0: &OpenMarketOrder<Ty0, Ty1>): u64 {
B0:
0MoveLoc[0](Arg0: &OpenMarketOrder<Ty0, Ty1>)
1ImmBorrowFieldGeneric[18](OpenMarketOrder.open_amount: u64)
2ReadRef
3Ret
}
 
public(friend) get_decrease_amount<Ty0>(Arg0: &DecreasePositionOrder<Ty0>): u64 {
B0:
0MoveLoc[0](Arg0: &DecreasePositionOrder<Ty0>)
1ImmBorrowFieldGeneric[41](DecreasePositionOrder.decrease_amount: u64)
2ReadRef
3Ret
}
 
public(friend) get_decrease_amount_market_order<Ty0>(Arg0: &DecreaseMarketOrder<Ty0>): u64 {
B0:
0MoveLoc[0](Arg0: &DecreaseMarketOrder<Ty0>)
1ImmBorrowFieldGeneric[42](DecreaseMarketOrder.decrease_amount: u64)
2ReadRef
3Ret
}
 
Constants [
0 => u64: 301
1 => u64: 302
2 => u64: 303
3 => u64: 304
]
}