@bucket/core-interface::buck bytecode | tide- Move path
- 0xce7f…4db2::buck
- Functions
- 9580 public, 5 entry
- Structs
- 14
- Friend modules
- None
buck
The on-chain disassembly. Offsets are bytecode positions within each function.
1// Move bytecode v7
2module ce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2.buck {
3use 00db9a10bb9536ab367b7d1ffa404c1d6c55f009076df1139dc108dd86608bbe::linked_table;
4use 00db9a10bb9536ab367b7d1ffa404c1d6c55f009076df1139dc108dd86608bbe::math;
5use f145ee6d09aae034924f80672bc76db2415dfd1b1bed863ac289af9d94e2c4fc::bucket_oracle;
6use ce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::bkt;
7use ce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::bottle;
8use ce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::buck_events;
9use ce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::bucket;
10use ce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::constants;
11use ce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::interest;
12use ce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::math as 0math;
13use ce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::pipe;
14use ce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::reservoir;
15use ce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::strap;
16use ce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::tank;
17use ce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::well;
18use ce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::well_events;
19use 1798f84ee72176114ddbf5525a6d964c5f8ea1b3738d08d50d0d3de4cf584884::float;
20use 1798f84ee72176114ddbf5525a6d964c5f8ea1b3738d08d50d0d3de4cf584884::sbuck;
21use 0000000000000000000000000000000000000000000000000000000000000001::option;
22use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
23use 0000000000000000000000000000000000000000000000000000000000000002::balance;
24use 0000000000000000000000000000000000000000000000000000000000000002::clock;
25use 0000000000000000000000000000000000000000000000000000000000000002::coin;
26use 0000000000000000000000000000000000000000000000000000000000000002::dynamic_object_field;
27use 0000000000000000000000000000000000000000000000000000000000000002::object;
28use 0000000000000000000000000000000000000000000000000000000000000002::sui;
29use 0000000000000000000000000000000000000000000000000000000000000002::table;
30use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
31use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
32use 0000000000000000000000000000000000000000000000000000000000000002::url;
38struct BucketProtocol has key {
41 buck_treasury_cap: TreasuryCap<BUCK>,
45struct BucketType<phantom Ty0> has copy, drop, store {
49struct WellType<phantom Ty0> has copy, drop, store {
53struct TankType<phantom Ty0> has copy, drop, store {
57struct AdminCap has store, key {
61struct FlashMintConfig has store, key {
68struct FlashMintReceipt {
74struct NoFeePermission has key {
78struct ReservoirType<phantom Ty0> has copy, drop, store {
82struct SBuckRateKey has copy, drop, store {
86struct SBuckEmission has store, key {
92struct BUCKET_PROTOCOL has drop {
96struct TestVersion has store, key {
101init(Arg0: BUCK, Arg1: &mut TxContext) {
1040MoveLoc[0](Arg0: BUCK)
1051CopyLoc[1](Arg1: &mut TxContext)
1062Call new_protocol(BUCK, &mut TxContext): BucketProtocol * AdminCap
1073StLoc[2](loc0: AdminCap)
1084Call transfer::share_object<BucketProtocol>(BucketProtocol)
1095MoveLoc[2](loc0: AdminCap)
1106MoveLoc[1](Arg1: &mut TxContext)
1128Call tx_context::sender(&TxContext): address
1139Call transfer::transfer<AdminCap>(AdminCap, address)
117new_protocol(Arg0: BUCK, Arg1: &mut TxContext): BucketProtocol * AdminCap {
119L3: loc1: CoinMetadata<BUCK>
120L4: loc2: TreasuryCap<BUCK>
122L6: loc4: BucketProtocol
1240MoveLoc[0](Arg0: BUCK)
1251Call constants::buck_decimal(): u8
1262LdConst[19](vector<u8>: "BUC..)
1273LdConst[20](vector<u8>: "Buc..)
1284LdConst[21](vector<u8>: "the..)
1295LdConst[22](vector<u8>: "htt..)
1306Call url::new_unsafe_from_bytes(vector<u8>): Url
1317Call option::some<Url>(Url): Option<Url>
1328CopyLoc[1](Arg1: &mut TxContext)
1339Call coin::create_currency<BUCK>(BUCK, u8, vector<u8>, vector<u8>, vector<u8>, Option<Url>, &mut TxContext): TreasuryCap<BUCK> * CoinMetadata<BUCK>
13410StLoc[3](loc1: CoinMetadata<BUCK>)
13511StLoc[4](loc2: TreasuryCap<BUCK>)
13612MoveLoc[3](loc1: CoinMetadata<BUCK>)
13713Call transfer::public_freeze_object<CoinMetadata<BUCK>>(CoinMetadata<BUCK>)
13814CopyLoc[1](Arg1: &mut TxContext)
13915Call object::new(&mut TxContext): UID
14117MutBorrowLoc[5](loc3: UID)
14319PackGeneric[0](WellType<BUCK>)
14420CopyLoc[1](Arg1: &mut TxContext)
14521Call well::new<BUCK>(&mut TxContext): Well<BUCK>
14622Call dynamic_object_field::add<WellType<BUCK>, Well<BUCK>>(&mut UID, WellType<BUCK>, Well<BUCK>)
14723MoveLoc[5](loc3: UID)
14925MoveLoc[4](loc2: TreasuryCap<BUCK>)
15127Pack[1](BucketProtocol)
15228StLoc[6](loc4: BucketProtocol)
15329CopyLoc[1](Arg1: &mut TxContext)
15430Call object::new(&mut TxContext): UID
15632StLoc[2](loc0: AdminCap)
15733ImmBorrowLoc[2](loc0: AdminCap)
15834MutBorrowLoc[6](loc4: BucketProtocol)
16238Call option::none<u64>(): Option<u64>
16339MoveLoc[1](Arg1: &mut TxContext)
16440Call create_bucket<SUI>(&AdminCap, &mut BucketProtocol, u64, u64, u8, Option<u64>, &mut TxContext)
16541MoveLoc[6](loc4: BucketProtocol)
16642MoveLoc[2](loc0: AdminCap)
170public borrow<Ty0>(Arg0: &mut BucketProtocol, Arg1: &BucketOracle, Arg2: &Clock, Arg3: Balance<Ty0>, Arg4: u64, Arg5: Option<address>, Arg6: &mut TxContext): Balance<BUCK> {
173L9: loc2: &mut Bucket<Ty0>
174L10: loc3: Balance<BUCK>
1790CopyLoc[0](Arg0: &mut BucketProtocol)
1812Call assert_valid_package_version(&BucketProtocol)
1823CopyLoc[0](Arg0: &mut BucketProtocol)
1834ImmBorrowField[0](BucketProtocol.min_bottle_size: u64)
1867CopyLoc[0](Arg0: &mut BucketProtocol)
1878Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
1889StLoc[9](loc2: &mut Bucket<Ty0>)
18910CopyLoc[9](loc2: &mut Bucket<Ty0>)
19011CopyLoc[2](Arg2: &Clock)
19112StLoc[7](loc0: &Clock)
19314MoveLoc[7](loc0: &Clock)
19415Call compute_base_rate_fee<Ty0>(&Bucket<Ty0>, &Clock): u64
19516StLoc[12](loc5: u64)
19617CopyLoc[4](Arg4: u64)
19718MoveLoc[12](loc5: u64)
19819Call constants::fee_precision(): u64
19920Call math::mul_factor(u64, u64, u64): u64
20021StLoc[11](loc4: u64)
20122ImmBorrowLoc[3](Arg3: Balance<Ty0>)
20223Call balance::value<Ty0>(&Balance<Ty0>): u64
20324Call buck_events::emit_collateral_increased<Ty0>(u64)
20425CopyLoc[6](Arg6: &mut TxContext)
20627Call tx_context::sender(&TxContext): address
20728StLoc[8](loc1: address)
20829MoveLoc[9](loc2: &mut Bucket<Ty0>)
20930MoveLoc[1](Arg1: &BucketOracle)
21031MoveLoc[8](loc1: address)
21132MoveLoc[2](Arg2: &Clock)
21233MoveLoc[3](Arg3: Balance<Ty0>)
21334CopyLoc[4](Arg4: u64)
21435CopyLoc[11](loc4: u64)
21637MoveLoc[5](Arg5: Option<address>)
21738MoveLoc[13](loc6: u64)
21839MoveLoc[6](Arg6: &mut TxContext)
21940Call bucket::handle_borrow<Ty0>(&mut Bucket<Ty0>, &BucketOracle, address, &Clock, Balance<Ty0>, u64, Option<address>, u64, &mut TxContext)
22041CopyLoc[0](Arg0: &mut BucketProtocol)
22142MoveLoc[11](loc4: u64)
22243Call mint_buck<Ty0>(&mut BucketProtocol, u64): Balance<BUCK>
22344StLoc[10](loc3: Balance<BUCK>)
22445ImmBorrowLoc[10](loc3: Balance<BUCK>)
22546LdConst[23](vector<u8>: "bor..)
22647Call well_events::emit_collect_fee_from<BUCK>(&Balance<BUCK>, vector<u8>)
22748CopyLoc[0](Arg0: &mut BucketProtocol)
22849Call borrow_well_mut<BUCK>(&mut BucketProtocol): &mut Well<BUCK>
22950MoveLoc[10](loc3: Balance<BUCK>)
23051Call well::collect_fee<BUCK>(&mut Well<BUCK>, Balance<BUCK>)
23152MoveLoc[0](Arg0: &mut BucketProtocol)
23253MoveLoc[4](Arg4: u64)
23354Call mint_buck<Ty0>(&mut BucketProtocol, u64): Balance<BUCK>
237public top_up<Ty0>(Arg0: &mut BucketProtocol, Arg1: Balance<Ty0>, Arg2: address, Arg3: Option<address>) {
2390LdConst[18](u64: 404)
243public top_up_coll<Ty0>(Arg0: &mut BucketProtocol, Arg1: Balance<Ty0>, Arg2: address, Arg3: Option<address>, Arg4: &Clock) {
244L5: loc0: &mut Bucket<Ty0>
2460CopyLoc[0](Arg0: &mut BucketProtocol)
2482Call assert_valid_package_version(&BucketProtocol)
2493MoveLoc[0](Arg0: &mut BucketProtocol)
2504Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
2515StLoc[5](loc0: &mut Bucket<Ty0>)
2526ImmBorrowLoc[1](Arg1: Balance<Ty0>)
2537Call balance::value<Ty0>(&Balance<Ty0>): u64
2548Call buck_events::emit_collateral_increased<Ty0>(u64)
2559MoveLoc[5](loc0: &mut Bucket<Ty0>)
25610MoveLoc[1](Arg1: Balance<Ty0>)
25711MoveLoc[2](Arg2: address)
25812MoveLoc[3](Arg3: Option<address>)
25913MoveLoc[4](Arg4: &Clock)
26014Call bucket::handle_top_up<Ty0>(&mut Bucket<Ty0>, Balance<Ty0>, address, Option<address>, &Clock)
264public withdraw<Ty0>(Arg0: &mut BucketProtocol, Arg1: &BucketOracle, Arg2: &Clock, Arg3: u64, Arg4: Option<address>, Arg5: &TxContext): Balance<Ty0> {
265L6: loc0: &mut Bucket<Ty0>
2680MoveLoc[0](Arg0: &mut BucketProtocol)
2691Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
2702StLoc[6](loc0: &mut Bucket<Ty0>)
2713CopyLoc[6](loc0: &mut Bucket<Ty0>)
2735Call bucket::is_not_locked<Ty0>(&Bucket<Ty0>): bool
2788MoveLoc[1](Arg1: &BucketOracle)
28010MoveLoc[5](Arg5: &TxContext)
28212MoveLoc[2](Arg2: &Clock)
28414MoveLoc[6](loc0: &mut Bucket<Ty0>)
28616LdConst[12](u64: 14)
28918CopyLoc[3](Arg3: u64)
29019Call buck_events::emit_collateral_decreased<Ty0>(u64)
29120MoveLoc[5](Arg5: &TxContext)
29221Call tx_context::sender(&TxContext): address
29322StLoc[7](loc1: address)
29423MoveLoc[6](loc0: &mut Bucket<Ty0>)
29524MoveLoc[1](Arg1: &BucketOracle)
29625MoveLoc[7](loc1: address)
29726MoveLoc[2](Arg2: &Clock)
29827MoveLoc[3](Arg3: u64)
29928MoveLoc[4](Arg4: Option<address>)
30029Call bucket::handle_withdraw<Ty0>(&mut Bucket<Ty0>, &BucketOracle, address, &Clock, u64, Option<address>): Balance<Ty0>
304public repay<Ty0>(Arg0: &mut BucketProtocol, Arg1: Balance<BUCK>, Arg2: &TxContext): Balance<Ty0> {
3060LdConst[18](u64: 404)
310public repay_debt<Ty0>(Arg0: &mut BucketProtocol, Arg1: Balance<BUCK>, Arg2: &Clock, Arg3: &TxContext): Balance<Ty0> {
312L5: loc1: &mut Bucket<Ty0>
313L6: loc2: Balance<Ty0>
3170CopyLoc[0](Arg0: &mut BucketProtocol)
3192Call assert_valid_package_version(&BucketProtocol)
3203CopyLoc[0](Arg0: &mut BucketProtocol)
3214ImmBorrowField[0](BucketProtocol.min_bottle_size: u64)
3247MoveLoc[3](Arg3: &TxContext)
3258Call tx_context::sender(&TxContext): address
3269StLoc[7](loc3: address)
32710ImmBorrowLoc[1](Arg1: Balance<BUCK>)
32811Call balance::value<BUCK>(&Balance<BUCK>): u64
33013CopyLoc[0](Arg0: &mut BucketProtocol)
33114MoveLoc[1](Arg1: Balance<BUCK>)
33215Call burn_buck<Ty0>(&mut BucketProtocol, Balance<BUCK>)
33316MoveLoc[0](Arg0: &mut BucketProtocol)
33417Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
33518StLoc[5](loc1: &mut Bucket<Ty0>)
33619CopyLoc[5](loc1: &mut Bucket<Ty0>)
33821Call bucket::is_not_locked<Ty0>(&Bucket<Ty0>): bool
34324MoveLoc[2](Arg2: &Clock)
34526MoveLoc[5](loc1: &mut Bucket<Ty0>)
34728LdConst[12](u64: 14)
35030MoveLoc[5](loc1: &mut Bucket<Ty0>)
35131MoveLoc[7](loc3: address)
35232MoveLoc[4](loc0: u64)
35333MoveLoc[8](loc4: u64)
35535MoveLoc[2](Arg2: &Clock)
35636Call bucket::handle_repay<Ty0>(&mut Bucket<Ty0>, address, u64, u64, bool, &Clock): Balance<Ty0>
35737StLoc[6](loc2: Balance<Ty0>)
35838ImmBorrowLoc[6](loc2: Balance<Ty0>)
35939Call balance::value<Ty0>(&Balance<Ty0>): u64
36040Call buck_events::emit_collateral_decreased<Ty0>(u64)
36141MoveLoc[6](loc2: Balance<Ty0>)
365public redeem<Ty0>(Arg0: &mut BucketProtocol, Arg1: &BucketOracle, Arg2: &Clock, Arg3: Balance<BUCK>, Arg4: Option<address>): Balance<Ty0> {
369L8: loc3: &mut Bucket<Ty0>
370L9: loc4: Balance<Ty0>
372L11: loc6: Balance<Ty0>
3760CopyLoc[0](Arg0: &mut BucketProtocol)
3782Call assert_valid_package_version(&BucketProtocol)
3793ImmBorrowLoc[3](Arg3: Balance<BUCK>)
3804Call balance::value<BUCK>(&Balance<BUCK>): u64
3826CopyLoc[0](Arg0: &mut BucketProtocol)
3837Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
3848StLoc[8](loc3: &mut Bucket<Ty0>)
3859CopyLoc[8](loc3: &mut Bucket<Ty0>)
38711Call bucket::is_not_locked<Ty0>(&Bucket<Ty0>): bool
39214MoveLoc[0](Arg0: &mut BucketProtocol)
39416MoveLoc[1](Arg1: &BucketOracle)
39618MoveLoc[2](Arg2: &Clock)
39820MoveLoc[8](loc3: &mut Bucket<Ty0>)
40022LdConst[12](u64: 14)
40324CopyLoc[8](loc3: &mut Bucket<Ty0>)
40526Call bucket::get_minted_buck_amount<Ty0>(&Bucket<Ty0>): u64
40728CopyLoc[8](loc3: &mut Bucket<Ty0>)
40829MoveLoc[1](Arg1: &BucketOracle)
40930CopyLoc[2](Arg2: &Clock)
41031CopyLoc[6](loc1: u64)
41132MoveLoc[4](Arg4: Option<address>)
41233Call bucket::handle_redeem<Ty0>(&mut Bucket<Ty0>, &BucketOracle, &Clock, u64, Option<address>): Balance<Ty0>
41334StLoc[9](loc4: Balance<Ty0>)
41435ImmBorrowLoc[9](loc4: Balance<Ty0>)
41536Call balance::value<Ty0>(&Balance<Ty0>): u64
41637StLoc[10](loc5: u64)
41738CopyLoc[8](loc3: &mut Bucket<Ty0>)
41839CopyLoc[2](Arg2: &Clock)
41940StLoc[5](loc0: &Clock)
42142MoveLoc[5](loc0: &Clock)
42243Call compute_base_rate_fee<Ty0>(&Bucket<Ty0>, &Clock): u64
42344Call constants::fee_precision(): u64
42445MoveLoc[6](loc1: u64)
42546MoveLoc[7](loc2: u64)
42647Call math::mul_factor(u64, u64, u64): u64
43051StLoc[13](loc8: u64)
43152MoveLoc[10](loc5: u64)
43253CopyLoc[13](loc8: u64)
43354Call constants::fee_precision(): u64
43455Call math::mul_factor(u64, u64, u64): u64
43556StLoc[12](loc7: u64)
43657MoveLoc[8](loc3: &mut Bucket<Ty0>)
43758MoveLoc[13](loc8: u64)
43859MoveLoc[2](Arg2: &Clock)
43960Call clock::timestamp_ms(&Clock): u64
44061Call bucket::update_base_rate_fee<Ty0>(&mut Bucket<Ty0>, u64, u64)
44162MutBorrowLoc[9](loc4: Balance<Ty0>)
44263MoveLoc[12](loc7: u64)
44364Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
44465StLoc[11](loc6: Balance<Ty0>)
44566ImmBorrowLoc[11](loc6: Balance<Ty0>)
44667LdConst[24](vector<u8>: "red..)
44768Call well_events::emit_collect_fee_from<Ty0>(&Balance<Ty0>, vector<u8>)
44869CopyLoc[0](Arg0: &mut BucketProtocol)
44970Call borrow_well_mut<Ty0>(&mut BucketProtocol): &mut Well<Ty0>
45071MoveLoc[11](loc6: Balance<Ty0>)
45172Call well::collect_fee<Ty0>(&mut Well<Ty0>, Balance<Ty0>)
45273ImmBorrowLoc[9](loc4: Balance<Ty0>)
45374Call balance::value<Ty0>(&Balance<Ty0>): u64
45475Call buck_events::emit_collateral_decreased<Ty0>(u64)
45576MoveLoc[0](Arg0: &mut BucketProtocol)
45677MoveLoc[3](Arg3: Balance<BUCK>)
45778Call burn_buck<Ty0>(&mut BucketProtocol, Balance<BUCK>)
45879MoveLoc[9](loc4: Balance<Ty0>)
462public is_liquidatable<Ty0>(Arg0: &BucketProtocol, Arg1: &BucketOracle, Arg2: &Clock, Arg3: address): bool {
4640MoveLoc[0](Arg0: &BucketProtocol)
4651Call borrow_bucket<Ty0>(&BucketProtocol): &Bucket<Ty0>
4662MoveLoc[1](Arg1: &BucketOracle)
4673MoveLoc[2](Arg2: &Clock)
4684MoveLoc[3](Arg3: address)
4695Call bucket::is_liquidatable<Ty0>(&Bucket<Ty0>, &BucketOracle, &Clock, address): bool
473public liquidate_under_normal_mode<Ty0>(Arg0: &mut BucketProtocol, Arg1: &BucketOracle, Arg2: &Clock, Arg3: address): Balance<Ty0> {
474L4: loc0: &Bucket<Ty0>
4760CopyLoc[0](Arg0: &mut BucketProtocol)
4782Call assert_valid_package_version(&BucketProtocol)
4793CopyLoc[0](Arg0: &mut BucketProtocol)
4815Call borrow_bucket<Ty0>(&BucketProtocol): &Bucket<Ty0>
4826StLoc[4](loc0: &Bucket<Ty0>)
4837CopyLoc[4](loc0: &Bucket<Ty0>)
4848CopyLoc[1](Arg1: &BucketOracle)
4859CopyLoc[2](Arg2: &Clock)
48610Call bucket::is_in_recovery_mode<Ty0>(&Bucket<Ty0>, &BucketOracle, &Clock): bool
49214MoveLoc[0](Arg0: &mut BucketProtocol)
49416MoveLoc[1](Arg1: &BucketOracle)
49618MoveLoc[2](Arg2: &Clock)
49820MoveLoc[4](loc0: &Bucket<Ty0>)
50324MoveLoc[4](loc0: &Bucket<Ty0>)
50425Call bucket::is_not_locked<Ty0>(&Bucket<Ty0>): bool
50928MoveLoc[0](Arg0: &mut BucketProtocol)
51130MoveLoc[1](Arg1: &BucketOracle)
51332MoveLoc[2](Arg2: &Clock)
51534LdConst[12](u64: 14)
51836MoveLoc[0](Arg0: &mut BucketProtocol)
51937MoveLoc[1](Arg1: &BucketOracle)
52038MoveLoc[2](Arg2: &Clock)
52139MoveLoc[3](Arg3: address)
52240Call option::none<u64>(): Option<u64>
52341Call normally_liquidate<Ty0>(&mut BucketProtocol, &BucketOracle, &Clock, address, Option<u64>): Balance<Ty0>
527public liquidate_under_recovery_mode<Ty0>(Arg0: &mut BucketProtocol, Arg1: &BucketOracle, Arg2: &Clock, Arg3: address): Balance<Ty0> {
532L8: loc4: &BucketOracle
535L11: loc7: &BucketOracle
536L12: loc8: &BucketOracle
540L16: loc12: Balance<Ty0>
541L17: loc13: Balance<Ty0>
544L20: loc16: &BucketOracle
549L25: loc21: Balance<BUCK>
550L26: loc22: &mut Bucket<Ty0>
552L28: loc24: Balance<Ty0>
553L29: loc25: Balance<Ty0>
554L30: loc26: Balance<Ty0>
558L34: loc30: Balance<Ty0>
559L35: loc31: Balance<Ty0>
560L36: loc32: Balance<Ty0>
5650CopyLoc[0](Arg0: &mut BucketProtocol)
5672Call assert_valid_package_version(&BucketProtocol)
5683CopyLoc[0](Arg0: &mut BucketProtocol)
5694CopyLoc[1](Arg1: &BucketOracle)
5705CopyLoc[2](Arg2: &Clock)
5716CopyLoc[3](Arg3: address)
5727StLoc[19](loc15: address)
5738StLoc[18](loc14: &Clock)
5749StLoc[11](loc7: &BucketOracle)
57611MoveLoc[11](loc7: &BucketOracle)
57712MoveLoc[18](loc14: &Clock)
57813MoveLoc[19](loc15: address)
57914Call is_liquidatable<Ty0>(&BucketProtocol, &BucketOracle, &Clock, address): bool
58417MoveLoc[0](Arg0: &mut BucketProtocol)
58619MoveLoc[1](Arg1: &BucketOracle)
58821MoveLoc[2](Arg2: &Clock)
59325CopyLoc[0](Arg0: &mut BucketProtocol)
59527Call borrow_tank<Ty0>(&BucketProtocol): &Tank<BUCK, Ty0>
59628Call tank::is_not_locked<BUCK, Ty0>(&Tank<BUCK, Ty0>): bool
60131MoveLoc[0](Arg0: &mut BucketProtocol)
60333MoveLoc[1](Arg1: &BucketOracle)
60535MoveLoc[2](Arg2: &Clock)
61039CopyLoc[0](Arg0: &mut BucketProtocol)
61241Call borrow_tank<Ty0>(&BucketProtocol): &Tank<BUCK, Ty0>
61342Call tank::get_reserve_balance<BUCK, Ty0>(&Tank<BUCK, Ty0>): u64
61443StLoc[38](loc34: u64)
61544CopyLoc[0](Arg0: &mut BucketProtocol)
61645Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
61746StLoc[26](loc22: &mut Bucket<Ty0>)
61847CopyLoc[26](loc22: &mut Bucket<Ty0>)
61948CopyLoc[1](Arg1: &BucketOracle)
62049CopyLoc[2](Arg2: &Clock)
62150StLoc[21](loc17: &Clock)
62251StLoc[20](loc16: &BucketOracle)
62453MoveLoc[20](loc16: &BucketOracle)
62554MoveLoc[21](loc17: &Clock)
62655Call bucket::is_in_recovery_mode<Ty0>(&Bucket<Ty0>, &BucketOracle, &Clock): bool
63158MoveLoc[0](Arg0: &mut BucketProtocol)
63360MoveLoc[1](Arg1: &BucketOracle)
63562MoveLoc[2](Arg2: &Clock)
63764MoveLoc[26](loc22: &mut Bucket<Ty0>)
64268CopyLoc[26](loc22: &mut Bucket<Ty0>)
64470Call bucket::is_not_locked<Ty0>(&Bucket<Ty0>): bool
64973MoveLoc[0](Arg0: &mut BucketProtocol)
65175MoveLoc[1](Arg1: &BucketOracle)
65377MoveLoc[2](Arg2: &Clock)
65579MoveLoc[26](loc22: &mut Bucket<Ty0>)
65781LdConst[12](u64: 14)
66083CopyLoc[26](loc22: &mut Bucket<Ty0>)
66285Call bucket::is_interest_table_exists<Ty0>(&Bucket<Ty0>): bool
66587CopyLoc[26](loc22: &mut Bucket<Ty0>)
66688CopyLoc[3](Arg3: address)
66789CopyLoc[2](Arg2: &Clock)
66890Call bucket::accrue_interests_by_debtor<Ty0>(&mut Bucket<Ty0>, address, &Clock): u64
67092CopyLoc[26](loc22: &mut Bucket<Ty0>)
67193CopyLoc[3](Arg3: address)
67294CopyLoc[2](Arg2: &Clock)
67395StLoc[4](loc0: &Clock)
67496StLoc[22](loc18: address)
67698MoveLoc[22](loc18: address)
67799MoveLoc[4](loc0: &Clock)
678100Call bucket::get_bottle_info_with_interest_by_debtor<Ty0>(&Bucket<Ty0>, address, &Clock): u64 * u64
679101StLoc[7](loc3: u64)
680102StLoc[6](loc2: u64)
683104CopyLoc[26](loc22: &mut Bucket<Ty0>)
684105CopyLoc[3](Arg3: address)
685106StLoc[5](loc1: address)
687108MoveLoc[5](loc1: address)
688109Call bucket::get_bottle_info_by_debtor<Ty0>(&Bucket<Ty0>, address): u64 * u64
689110StLoc[7](loc3: u64)
690111StLoc[6](loc2: u64)
692112MoveLoc[6](loc2: u64)
693113MoveLoc[7](loc3: u64)
694114StLoc[23](loc19: u64)
696116CopyLoc[26](loc22: &mut Bucket<Ty0>)
697117CopyLoc[1](Arg1: &BucketOracle)
698118CopyLoc[2](Arg2: &Clock)
699119CopyLoc[3](Arg3: address)
700120StLoc[10](loc6: address)
701121StLoc[9](loc5: &Clock)
702122StLoc[8](loc4: &BucketOracle)
704124MoveLoc[8](loc4: &BucketOracle)
705125MoveLoc[9](loc5: &Clock)
706126MoveLoc[10](loc6: address)
707127Call bucket::get_bottle_icr<Ty0>(&Bucket<Ty0>, &BucketOracle, &Clock, address): u64
708128StLoc[32](loc28: u64)
709129CopyLoc[26](loc22: &mut Bucket<Ty0>)
710130CopyLoc[1](Arg1: &BucketOracle)
711131CopyLoc[2](Arg2: &Clock)
712132StLoc[13](loc9: &Clock)
713133StLoc[12](loc8: &BucketOracle)
715135MoveLoc[12](loc8: &BucketOracle)
716136MoveLoc[13](loc9: &Clock)
717137Call bucket::get_bucket_tcr<Ty0>(&Bucket<Ty0>, &BucketOracle, &Clock): u64
718138StLoc[39](loc35: u64)
719139MoveLoc[26](loc22: &mut Bucket<Ty0>)
721141Call bucket::get_minimum_collateral_ratio<Ty0>(&Bucket<Ty0>): u64
724144StLoc[33](loc29: u64)
725145CopyLoc[32](loc28: u64)
726146CopyLoc[33](loc29: u64)
730149CopyLoc[0](Arg0: &mut BucketProtocol)
731150MoveLoc[1](Arg1: &BucketOracle)
732151MoveLoc[2](Arg2: &Clock)
733152MoveLoc[3](Arg3: address)
734153MoveLoc[39](loc35: u64)
735154Call option::some<u64>(u64): Option<u64>
736155Call normally_liquidate<Ty0>(&mut BucketProtocol, &BucketOracle, &Clock, address, Option<u64>): Balance<Ty0>
737156StLoc[34](loc30: Balance<Ty0>)
738157Call balance::zero<Ty0>(): Balance<Ty0>
739158MoveLoc[34](loc30: Balance<Ty0>)
740159StLoc[17](loc13: Balance<Ty0>)
741160StLoc[16](loc12: Balance<Ty0>)
744162CopyLoc[32](loc28: u64)
745163MoveLoc[33](loc29: u64)
749166MoveLoc[32](loc28: u64)
750167CopyLoc[39](loc35: u64)
752169StLoc[14](loc10: bool)
756172StLoc[14](loc10: bool)
758173MoveLoc[14](loc10: bool)
761175CopyLoc[38](loc34: u64)
768180MoveLoc[0](Arg0: &mut BucketProtocol)
770182MoveLoc[1](Arg1: &BucketOracle)
772184MoveLoc[2](Arg2: &Clock)
777188CopyLoc[23](loc19: u64)
778189CopyLoc[38](loc34: u64)
782192CopyLoc[23](loc19: u64)
783193StLoc[15](loc11: u64)
786195MoveLoc[38](loc34: u64)
787196StLoc[15](loc11: u64)
789197MoveLoc[15](loc11: u64)
790198StLoc[24](loc20: u64)
791199CopyLoc[0](Arg0: &mut BucketProtocol)
792200Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
793201CopyLoc[3](Arg3: address)
794202CopyLoc[24](loc20: u64)
795203CopyLoc[1](Arg1: &BucketOracle)
796204CopyLoc[2](Arg2: &Clock)
797205Call bucket::handle_repay_capped<Ty0>(&mut Bucket<Ty0>, address, u64, &BucketOracle, &Clock): Balance<Ty0>
798206StLoc[28](loc24: Balance<Ty0>)
799207ImmBorrowLoc[28](loc24: Balance<Ty0>)
800208Call balance::value<Ty0>(&Balance<Ty0>): u64
801209StLoc[27](loc23: u64)
802210MoveLoc[23](loc19: u64)
803211CopyLoc[24](loc20: u64)
807214CopyLoc[0](Arg0: &mut BucketProtocol)
809216Call borrow_bucket<Ty0>(&BucketProtocol): &Bucket<Ty0>
810217Call bucket::borrow_surplus_bottle_table<Ty0>(&Bucket<Ty0>): &Table<address, Bottle>
811218CopyLoc[3](Arg3: address)
812219Call table::contains<address, Bottle>(&Table<address, Bottle>, address): bool
817222MoveLoc[0](Arg0: &mut BucketProtocol)
819224MoveLoc[1](Arg1: &BucketOracle)
821226MoveLoc[2](Arg2: &Clock)
823228LdConst[8](u64: 10)
830232MoveLoc[0](Arg0: &mut BucketProtocol)
832234MoveLoc[1](Arg1: &BucketOracle)
834236MoveLoc[2](Arg2: &Clock)
839240ImmBorrowLoc[28](loc24: Balance<Ty0>)
840241Call balance::value<Ty0>(&Balance<Ty0>): u64
841242Call constants::liquidation_rebate(): u64
842243Call constants::fee_precision(): u64
843244Call math::mul_factor(u64, u64, u64): u64
844245StLoc[37](loc33: u64)
845246ImmBorrowLoc[28](loc24: Balance<Ty0>)
846247Call balance::value<Ty0>(&Balance<Ty0>): u64
847248Call constants::liquidation_fee(): u64
848249Call constants::fee_precision(): u64
849250Call math::mul_factor(u64, u64, u64): u64
850251StLoc[31](loc27: u64)
851252MutBorrowLoc[28](loc24: Balance<Ty0>)
852253MoveLoc[37](loc33: u64)
853254Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
854255StLoc[35](loc31: Balance<Ty0>)
855256MutBorrowLoc[28](loc24: Balance<Ty0>)
856257MoveLoc[31](loc27: u64)
857258Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
858259StLoc[29](loc25: Balance<Ty0>)
859260CopyLoc[0](Arg0: &mut BucketProtocol)
860261Call borrow_tank_mut<Ty0>(&mut BucketProtocol): &mut Tank<BUCK, Ty0>
861262MoveLoc[28](loc24: Balance<Ty0>)
862263CopyLoc[24](loc20: u64)
863264Call tank::absorb<BUCK, Ty0>(&mut Tank<BUCK, Ty0>, Balance<Ty0>, u64): Balance<BUCK>
864265StLoc[25](loc21: Balance<BUCK>)
865266CopyLoc[0](Arg0: &mut BucketProtocol)
866267MoveLoc[25](loc21: Balance<BUCK>)
867268Call burn_buck<Ty0>(&mut BucketProtocol, Balance<BUCK>)
868269CopyLoc[0](Arg0: &mut BucketProtocol)
869270Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
870271Call bucket::update_snapshot<Ty0>(&mut Bucket<Ty0>)
871272CopyLoc[27](loc23: u64)
872273Call buck_events::emit_collateral_decreased<Ty0>(u64)
873274MoveLoc[1](Arg1: &BucketOracle)
874275MoveLoc[2](Arg2: &Clock)
875276Call bucket_oracle::get_price<Ty0>(&BucketOracle, &Clock): u64 * u64
876277MoveLoc[27](loc23: u64)
877278MoveLoc[24](loc20: u64)
878279MoveLoc[39](loc35: u64)
879280Call option::some<u64>(u64): Option<u64>
880281MoveLoc[3](Arg3: address)
881282Call buck_events::emit_liquidation<Ty0>(u64, u64, u64, u64, Option<u64>, address)
882283MoveLoc[29](loc25: Balance<Ty0>)
883284MoveLoc[35](loc31: Balance<Ty0>)
884285StLoc[17](loc13: Balance<Ty0>)
885286StLoc[16](loc12: Balance<Ty0>)
887287MoveLoc[16](loc12: Balance<Ty0>)
888288MoveLoc[17](loc13: Balance<Ty0>)
889289StLoc[36](loc32: Balance<Ty0>)
890290StLoc[30](loc26: Balance<Ty0>)
891291ImmBorrowLoc[30](loc26: Balance<Ty0>)
892292LdConst[25](vector<u8>: "liq..)
893293Call well_events::emit_collect_fee_from<Ty0>(&Balance<Ty0>, vector<u8>)
894294MoveLoc[0](Arg0: &mut BucketProtocol)
895295Call borrow_well_mut<Ty0>(&mut BucketProtocol): &mut Well<Ty0>
896296MoveLoc[30](loc26: Balance<Ty0>)
897297Call well::collect_fee<Ty0>(&mut Well<Ty0>, Balance<Ty0>)
898298MoveLoc[36](loc32: Balance<Ty0>)
902normally_liquidate<Ty0>(Arg0: &mut BucketProtocol, Arg1: &BucketOracle, Arg2: &Clock, Arg3: address, Arg4: Option<u64>): Balance<Ty0> {
906L8: loc3: &BucketOracle
914L16: loc11: Balance<BUCK>
915L17: loc12: &mut Bucket<Ty0>
917L19: loc14: Balance<Ty0>
918L20: loc15: Balance<Ty0>
921L23: loc18: Balance<Ty0>
9250CopyLoc[0](Arg0: &mut BucketProtocol)
9272Call assert_valid_package_version(&BucketProtocol)
9283CopyLoc[0](Arg0: &mut BucketProtocol)
9294ImmBorrowField[0](BucketProtocol.min_bottle_size: u64)
9316StLoc[22](loc17: u64)
9327CopyLoc[0](Arg0: &mut BucketProtocol)
9338CopyLoc[1](Arg1: &BucketOracle)
9349CopyLoc[2](Arg2: &Clock)
93510CopyLoc[3](Arg3: address)
93611StLoc[10](loc5: address)
93712StLoc[9](loc4: &Clock)
93813StLoc[8](loc3: &BucketOracle)
94015MoveLoc[8](loc3: &BucketOracle)
94116MoveLoc[9](loc4: &Clock)
94217MoveLoc[10](loc5: address)
94318Call is_liquidatable<Ty0>(&BucketProtocol, &BucketOracle, &Clock, address): bool
94821MoveLoc[0](Arg0: &mut BucketProtocol)
95023MoveLoc[1](Arg1: &BucketOracle)
95225MoveLoc[2](Arg2: &Clock)
95729CopyLoc[0](Arg0: &mut BucketProtocol)
95931Call borrow_tank<Ty0>(&BucketProtocol): &Tank<BUCK, Ty0>
96032Call tank::is_not_locked<BUCK, Ty0>(&Tank<BUCK, Ty0>): bool
96535MoveLoc[0](Arg0: &mut BucketProtocol)
96737MoveLoc[1](Arg1: &BucketOracle)
96939MoveLoc[2](Arg2: &Clock)
97443CopyLoc[0](Arg0: &mut BucketProtocol)
97645Call borrow_tank<Ty0>(&BucketProtocol): &Tank<BUCK, Ty0>
97746Call tank::get_reserve_balance<BUCK, Ty0>(&Tank<BUCK, Ty0>): u64
97847StLoc[25](loc20: u64)
97948CopyLoc[0](Arg0: &mut BucketProtocol)
98049Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
98150StLoc[17](loc12: &mut Bucket<Ty0>)
98251CopyLoc[17](loc12: &mut Bucket<Ty0>)
98453Call bucket::is_interest_table_exists<Ty0>(&Bucket<Ty0>): bool
98755CopyLoc[17](loc12: &mut Bucket<Ty0>)
98856CopyLoc[3](Arg3: address)
98957CopyLoc[2](Arg2: &Clock)
99058Call bucket::accrue_interests_by_debtor<Ty0>(&mut Bucket<Ty0>, address, &Clock): u64
99260CopyLoc[17](loc12: &mut Bucket<Ty0>)
99361CopyLoc[3](Arg3: address)
99462CopyLoc[2](Arg2: &Clock)
99563StLoc[12](loc7: &Clock)
99664StLoc[11](loc6: address)
99866MoveLoc[11](loc6: address)
99967MoveLoc[12](loc7: &Clock)
100068Call bucket::get_bottle_info_with_interest_by_debtor<Ty0>(&Bucket<Ty0>, address, &Clock): u64 * u64
100169StLoc[6](loc1: u64)
100270StLoc[5](loc0: u64)
100572CopyLoc[17](loc12: &mut Bucket<Ty0>)
100673CopyLoc[3](Arg3: address)
100774StLoc[13](loc8: address)
100976MoveLoc[13](loc8: address)
101077Call bucket::get_bottle_info_by_debtor<Ty0>(&Bucket<Ty0>, address): u64 * u64
101178StLoc[6](loc1: u64)
101279StLoc[5](loc0: u64)
101480MoveLoc[5](loc0: u64)
101581MoveLoc[6](loc1: u64)
101682StLoc[14](loc9: u64)
101884CopyLoc[14](loc9: u64)
101985CopyLoc[25](loc20: u64)
102388MoveLoc[14](loc9: u64)
102489StLoc[7](loc2: u64)
102791MoveLoc[25](loc20: u64)
102892StLoc[7](loc2: u64)
103093MoveLoc[7](loc2: u64)
103194StLoc[15](loc10: u64)
103295Call balance::zero<Ty0>(): Balance<Ty0>
103396StLoc[23](loc18: Balance<Ty0>)
103497Call balance::zero<Ty0>(): Balance<Ty0>
103598StLoc[20](loc15: Balance<Ty0>)
103699MoveLoc[17](loc12: &mut Bucket<Ty0>)
1037100CopyLoc[3](Arg3: address)
1038101CopyLoc[15](loc10: u64)
1039102MoveLoc[22](loc17: u64)
1041104CopyLoc[2](Arg2: &Clock)
1042105Call bucket::handle_repay<Ty0>(&mut Bucket<Ty0>, address, u64, u64, bool, &Clock): Balance<Ty0>
1043106StLoc[19](loc14: Balance<Ty0>)
1044107ImmBorrowLoc[19](loc14: Balance<Ty0>)
1045108Call balance::value<Ty0>(&Balance<Ty0>): u64
1046109StLoc[18](loc13: u64)
1047110ImmBorrowLoc[19](loc14: Balance<Ty0>)
1048111Call balance::value<Ty0>(&Balance<Ty0>): u64
1049112Call buck_events::emit_collateral_decreased<Ty0>(u64)
1050113ImmBorrowLoc[19](loc14: Balance<Ty0>)
1051114Call balance::value<Ty0>(&Balance<Ty0>): u64
1052115Call constants::liquidation_rebate(): u64
1053116Call constants::fee_precision(): u64
1054117Call math::mul_factor(u64, u64, u64): u64
1055118StLoc[24](loc19: u64)
1056119ImmBorrowLoc[19](loc14: Balance<Ty0>)
1057120Call balance::value<Ty0>(&Balance<Ty0>): u64
1058121Call constants::liquidation_fee(): u64
1059122Call constants::fee_precision(): u64
1060123Call math::mul_factor(u64, u64, u64): u64
1061124StLoc[21](loc16: u64)
1062125MutBorrowLoc[23](loc18: Balance<Ty0>)
1063126MutBorrowLoc[19](loc14: Balance<Ty0>)
1064127MoveLoc[24](loc19: u64)
1065128Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
1066129Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
1068131MutBorrowLoc[20](loc15: Balance<Ty0>)
1069132MutBorrowLoc[19](loc14: Balance<Ty0>)
1070133MoveLoc[21](loc16: u64)
1071134Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
1072135Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
1074137CopyLoc[0](Arg0: &mut BucketProtocol)
1075138Call borrow_tank_mut<Ty0>(&mut BucketProtocol): &mut Tank<BUCK, Ty0>
1076139MoveLoc[19](loc14: Balance<Ty0>)
1077140CopyLoc[15](loc10: u64)
1078141Call tank::absorb<BUCK, Ty0>(&mut Tank<BUCK, Ty0>, Balance<Ty0>, u64): Balance<BUCK>
1079142StLoc[16](loc11: Balance<BUCK>)
1080143CopyLoc[0](Arg0: &mut BucketProtocol)
1081144MoveLoc[16](loc11: Balance<BUCK>)
1082145Call burn_buck<Ty0>(&mut BucketProtocol, Balance<BUCK>)
1083146CopyLoc[0](Arg0: &mut BucketProtocol)
1084147Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
1085148Call bucket::update_snapshot<Ty0>(&mut Bucket<Ty0>)
1086149ImmBorrowLoc[20](loc15: Balance<Ty0>)
1087150LdConst[25](vector<u8>: "liq..)
1088151Call well_events::emit_collect_fee_from<Ty0>(&Balance<Ty0>, vector<u8>)
1089152MoveLoc[0](Arg0: &mut BucketProtocol)
1090153Call borrow_well_mut<Ty0>(&mut BucketProtocol): &mut Well<Ty0>
1091154MoveLoc[20](loc15: Balance<Ty0>)
1092155Call well::collect_fee<Ty0>(&mut Well<Ty0>, Balance<Ty0>)
1093156MoveLoc[1](Arg1: &BucketOracle)
1094157MoveLoc[2](Arg2: &Clock)
1095158Call bucket_oracle::get_price<Ty0>(&BucketOracle, &Clock): u64 * u64
1096159MoveLoc[18](loc13: u64)
1097160MoveLoc[15](loc10: u64)
1098161MoveLoc[4](Arg4: Option<u64>)
1099162MoveLoc[3](Arg3: address)
1100163Call buck_events::emit_liquidation<Ty0>(u64, u64, u64, u64, Option<u64>, address)
1101164MoveLoc[23](loc18: Balance<Ty0>)
1105public flash_borrow<Ty0>(Arg0: &mut BucketProtocol, Arg1: u64): Balance<Ty0> * FlashReceipt<Ty0> {
1106L2: loc0: &mut Bucket<Ty0>
11080CopyLoc[0](Arg0: &mut BucketProtocol)
11102Call assert_valid_package_version(&BucketProtocol)
11113MoveLoc[0](Arg0: &mut BucketProtocol)
11124Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
11135StLoc[2](loc0: &mut Bucket<Ty0>)
11146CopyLoc[1](Arg1: u64)
11157Call buck_events::emit_flash_loan<Ty0>(u64)
11168MoveLoc[2](loc0: &mut Bucket<Ty0>)
11179MoveLoc[1](Arg1: u64)
111810Call bucket::handle_flash_borrow<Ty0>(&mut Bucket<Ty0>, u64): Balance<Ty0> * FlashReceipt<Ty0>
1122public flash_repay<Ty0>(Arg0: &mut BucketProtocol, Arg1: Balance<Ty0>, Arg2: FlashReceipt<Ty0>) {
1123L3: loc0: Balance<Ty0>
1124L4: loc1: &mut Well<Ty0>
11260CopyLoc[0](Arg0: &mut BucketProtocol)
11282Call assert_valid_package_version(&BucketProtocol)
11293CopyLoc[0](Arg0: &mut BucketProtocol)
11304Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
11315MoveLoc[1](Arg1: Balance<Ty0>)
11326MoveLoc[2](Arg2: FlashReceipt<Ty0>)
11337Call bucket::handle_flash_repay<Ty0>(&mut Bucket<Ty0>, Balance<Ty0>, FlashReceipt<Ty0>): Balance<Ty0>
11348StLoc[3](loc0: Balance<Ty0>)
11359MoveLoc[0](Arg0: &mut BucketProtocol)
113610Call borrow_well_mut<Ty0>(&mut BucketProtocol): &mut Well<Ty0>
113711StLoc[4](loc1: &mut Well<Ty0>)
113812ImmBorrowLoc[3](loc0: Balance<Ty0>)
113913LdConst[26](vector<u8>: "fla..)
114014Call well_events::emit_collect_fee_from<Ty0>(&Balance<Ty0>, vector<u8>)
114115MoveLoc[4](loc1: &mut Well<Ty0>)
114216MoveLoc[3](loc0: Balance<Ty0>)
114317Call well::collect_fee<Ty0>(&mut Well<Ty0>, Balance<Ty0>)
1147public flash_borrow_buck<Ty0>(Arg0: &mut BucketProtocol, Arg1: u64): Balance<BUCK> * FlashReceipt<BUCK, Ty0> {
1148L2: loc0: &mut Tank<BUCK, Ty0>
11500CopyLoc[0](Arg0: &mut BucketProtocol)
11522Call assert_valid_package_version(&BucketProtocol)
11533MoveLoc[0](Arg0: &mut BucketProtocol)
11544Call borrow_tank_mut<Ty0>(&mut BucketProtocol): &mut Tank<BUCK, Ty0>
11555StLoc[2](loc0: &mut Tank<BUCK, Ty0>)
11566CopyLoc[1](Arg1: u64)
11577Call buck_events::emit_flash_loan<BUCK>(u64)
11588MoveLoc[2](loc0: &mut Tank<BUCK, Ty0>)
11599MoveLoc[1](Arg1: u64)
116010Call tank::handle_flash_borrow<BUCK, Ty0>(&mut Tank<BUCK, Ty0>, u64): Balance<BUCK> * FlashReceipt<BUCK, Ty0>
1164public flash_repay_buck<Ty0>(Arg0: &mut BucketProtocol, Arg1: Balance<BUCK>, Arg2: FlashReceipt<BUCK, Ty0>) {
1165L3: loc0: Balance<BUCK>
1166L4: loc1: &mut Well<BUCK>
11680CopyLoc[0](Arg0: &mut BucketProtocol)
11702Call assert_valid_package_version(&BucketProtocol)
11713CopyLoc[0](Arg0: &mut BucketProtocol)
11724Call borrow_tank_mut<Ty0>(&mut BucketProtocol): &mut Tank<BUCK, Ty0>
11735MoveLoc[1](Arg1: Balance<BUCK>)
11746MoveLoc[2](Arg2: FlashReceipt<BUCK, Ty0>)
11757Call tank::handle_flash_repay<BUCK, Ty0>(&mut Tank<BUCK, Ty0>, Balance<BUCK>, FlashReceipt<BUCK, Ty0>): Balance<BUCK>
11768StLoc[3](loc0: Balance<BUCK>)
11779MoveLoc[0](Arg0: &mut BucketProtocol)
117810Call borrow_well_mut<BUCK>(&mut BucketProtocol): &mut Well<BUCK>
117911StLoc[4](loc1: &mut Well<BUCK>)
118012ImmBorrowLoc[3](loc0: Balance<BUCK>)
118113LdConst[26](vector<u8>: "fla..)
118214Call well_events::emit_collect_fee_from<BUCK>(&Balance<BUCK>, vector<u8>)
118315MoveLoc[4](loc1: &mut Well<BUCK>)
118416MoveLoc[3](loc0: Balance<BUCK>)
118517Call well::collect_fee<BUCK>(&mut Well<BUCK>, Balance<BUCK>)
1189public tank_withdraw<Ty0>(Arg0: &mut BucketProtocol, Arg1: &BucketOracle, Arg2: &Clock, Arg3: &mut BktTreasury, Arg4: ContributorToken<BUCK, Ty0>, Arg5: &TxContext): Balance<BUCK> * Balance<Ty0> * Balance<BKT> {
11910CopyLoc[0](Arg0: &mut BucketProtocol)
11932Call assert_valid_package_version(&BucketProtocol)
11943CopyLoc[0](Arg0: &mut BucketProtocol)
11965Call borrow_bucket<Ty0>(&BucketProtocol): &Bucket<Ty0>
11976MoveLoc[1](Arg1: &BucketOracle)
11987MoveLoc[2](Arg2: &Clock)
11998Call bucket::has_liquidatable_bottle<Ty0>(&Bucket<Ty0>, &BucketOracle, &Clock): bool
120512MoveLoc[0](Arg0: &mut BucketProtocol)
120714MoveLoc[5](Arg5: &TxContext)
120916MoveLoc[3](Arg3: &mut BktTreasury)
121420MoveLoc[0](Arg0: &mut BucketProtocol)
121521Call borrow_tank_mut<Ty0>(&mut BucketProtocol): &mut Tank<BUCK, Ty0>
121622MoveLoc[3](Arg3: &mut BktTreasury)
121723MoveLoc[4](Arg4: ContributorToken<BUCK, Ty0>)
121824MoveLoc[5](Arg5: &TxContext)
121925Call tank::withdraw<BUCK, Ty0>(&mut Tank<BUCK, Ty0>, &mut BktTreasury, ContributorToken<BUCK, Ty0>, &TxContext): Balance<BUCK> * Balance<Ty0> * Balance<BKT>
1223public get_bottle_info_by_debtor<Ty0>(Arg0: &BucketProtocol, Arg1: address): u64 * u64 {
12250MoveLoc[0](Arg0: &BucketProtocol)
12261Call borrow_bucket<Ty0>(&BucketProtocol): &Bucket<Ty0>
12272MoveLoc[1](Arg1: address)
12283Call bucket::get_bottle_info_by_debtor<Ty0>(&Bucket<Ty0>, address): u64 * u64
1232public get_bottle_info_with_interest_by_debtor<Ty0>(Arg0: &BucketProtocol, Arg1: address, Arg2: &Clock): u64 * u64 {
12340MoveLoc[0](Arg0: &BucketProtocol)
12351Call borrow_bucket<Ty0>(&BucketProtocol): &Bucket<Ty0>
12362MoveLoc[1](Arg1: address)
12373MoveLoc[2](Arg2: &Clock)
12384Call bucket::get_bottle_info_with_interest_by_debtor<Ty0>(&Bucket<Ty0>, address, &Clock): u64 * u64
1242entry public create_bucket<Ty0>(Arg0: &AdminCap, Arg1: &mut BucketProtocol, Arg2: u64, Arg3: u64, Arg4: u8, Arg5: Option<u64>, Arg6: &mut TxContext) {
1243L7: loc0: BucketType<Ty0>
12461PackGeneric[1](BucketType<Ty0>)
12472StLoc[7](loc0: BucketType<Ty0>)
12483CopyLoc[1](Arg1: &mut BucketProtocol)
12494ImmBorrowField[1](BucketProtocol.id: UID)
12505CopyLoc[7](loc0: BucketType<Ty0>)
12516Call dynamic_object_field::exists_with_type<BucketType<Ty0>, Bucket<Ty0>>(&UID, BucketType<Ty0>): bool
125710MoveLoc[1](Arg1: &mut BucketProtocol)
125912MoveLoc[6](Arg6: &mut TxContext)
126416CopyLoc[1](Arg1: &mut BucketProtocol)
126517MutBorrowField[1](BucketProtocol.id: UID)
126618MoveLoc[7](loc0: BucketType<Ty0>)
126719MoveLoc[2](Arg2: u64)
126820MoveLoc[3](Arg3: u64)
126921MoveLoc[4](Arg4: u8)
127022MoveLoc[5](Arg5: Option<u64>)
127123CopyLoc[6](Arg6: &mut TxContext)
127224Call bucket::new<Ty0>(u64, u64, u8, Option<u64>, &mut TxContext): Bucket<Ty0>
127325Call dynamic_object_field::add<BucketType<Ty0>, Bucket<Ty0>>(&mut UID, BucketType<Ty0>, Bucket<Ty0>)
127426CopyLoc[1](Arg1: &mut BucketProtocol)
127527MutBorrowField[1](BucketProtocol.id: UID)
127729PackGeneric[2](WellType<Ty0>)
127830CopyLoc[6](Arg6: &mut TxContext)
127931Call well::new<Ty0>(&mut TxContext): Well<Ty0>
128032Call dynamic_object_field::add<WellType<Ty0>, Well<Ty0>>(&mut UID, WellType<Ty0>, Well<Ty0>)
128133MoveLoc[1](Arg1: &mut BucketProtocol)
128234MutBorrowField[1](BucketProtocol.id: UID)
128436PackGeneric[3](TankType<Ty0>)
128537MoveLoc[6](Arg6: &mut TxContext)
128638Call tank::new<BUCK, Ty0>(&mut TxContext): Tank<BUCK, Ty0>
128739Call dynamic_object_field::add<TankType<Ty0>, Tank<BUCK, Ty0>>(&mut UID, TankType<Ty0>, Tank<BUCK, Ty0>)
1291entry public release_bkt<Ty0>(Arg0: &AdminCap, Arg1: &mut BucketProtocol, Arg2: &mut BktTreasury, Arg3: u64) {
1292L4: loc0: Balance<BKT>
12940MoveLoc[2](Arg2: &mut BktTreasury)
12951MoveLoc[3](Arg3: u64)
12962Call bkt::release_bkt(&mut BktTreasury, u64): Balance<BKT>
12973StLoc[4](loc0: Balance<BKT>)
12984MoveLoc[1](Arg1: &mut BucketProtocol)
12995Call borrow_tank_mut<Ty0>(&mut BucketProtocol): &mut Tank<BUCK, Ty0>
13006MoveLoc[4](loc0: Balance<BKT>)
13017Call tank::collect_bkt<BUCK, Ty0>(&mut Tank<BUCK, Ty0>, Balance<BKT>)
1305entry public update_max_mint_amount<Ty0>(Arg0: &AdminCap, Arg1: &mut BucketProtocol, Arg2: Option<u64>) {
13090MoveLoc[1](Arg1: &mut BucketProtocol)
13101Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
13112CopyLoc[2](Arg2: Option<u64>)
13123Call bucket::update_max_mint_amount<Ty0>(&mut Bucket<Ty0>, Option<u64>)
13134ImmBorrowLoc[2](Arg2: Option<u64>)
13145Call option::is_some<u64>(&Option<u64>): bool
13177MoveLoc[2](Arg2: Option<u64>)
13188Call option::destroy_some<u64>(Option<u64>): u64
132312StLoc[3](loc0: u64)
132513MoveLoc[3](loc0: u64)
132614StLoc[4](loc1: u64)
132715LdConst[27](vector<u8>: "max..)
132816MoveLoc[4](loc1: u64)
132917Call buck_events::emit_param_updated<BucketProtocol>(vector<u8>, u64)
1333entry public update_min_bottle_size(Arg0: &AdminCap, Arg1: &mut BucketProtocol, Arg2: u64) {
13350CopyLoc[2](Arg2: u64)
13361MoveLoc[1](Arg1: &mut BucketProtocol)
13372MutBorrowField[0](BucketProtocol.min_bottle_size: u64)
13394LdConst[28](vector<u8>: "min..)
13405MoveLoc[2](Arg2: u64)
13416Call buck_events::emit_param_updated<BucketProtocol>(vector<u8>, u64)
1345entry public update_protocol_version(Arg0: &AdminCap, Arg1: &mut BucketProtocol, Arg2: u64) {
13470CopyLoc[2](Arg2: u64)
13481MoveLoc[1](Arg1: &mut BucketProtocol)
13492MutBorrowField[2](BucketProtocol.version: u64)
13514LdConst[29](vector<u8>: "ver..)
13525MoveLoc[2](Arg2: u64)
13536Call buck_events::emit_param_updated<BucketProtocol>(vector<u8>, u64)
1357public borrow_bucket<Ty0>(Arg0: &BucketProtocol): &Bucket<Ty0> {
1358L1: loc0: BucketType<Ty0>
13600CopyLoc[0](Arg0: &BucketProtocol)
13611Call assert_valid_package_version(&BucketProtocol)
13633PackGeneric[1](BucketType<Ty0>)
13644StLoc[1](loc0: BucketType<Ty0>)
13655CopyLoc[0](Arg0: &BucketProtocol)
13666ImmBorrowField[1](BucketProtocol.id: UID)
13677CopyLoc[1](loc0: BucketType<Ty0>)
13688Call dynamic_object_field::exists_with_type<BucketType<Ty0>, Bucket<Ty0>>(&UID, BucketType<Ty0>): bool
137311MoveLoc[0](Arg0: &BucketProtocol)
137815MoveLoc[0](Arg0: &BucketProtocol)
137916ImmBorrowField[1](BucketProtocol.id: UID)
138017MoveLoc[1](loc0: BucketType<Ty0>)
138118Call dynamic_object_field::borrow<BucketType<Ty0>, Bucket<Ty0>>(&UID, BucketType<Ty0>): &Bucket<Ty0>
1385borrow_bucket_mut<Ty0>(Arg0: &mut BucketProtocol): &mut Bucket<Ty0> {
13870CopyLoc[0](Arg0: &mut BucketProtocol)
13892Call assert_valid_package_version(&BucketProtocol)
13903CopyLoc[0](Arg0: &mut BucketProtocol)
13914ImmBorrowField[1](BucketProtocol.id: UID)
13936PackGeneric[1](BucketType<Ty0>)
13947Call dynamic_object_field::exists_with_type<BucketType<Ty0>, Bucket<Ty0>>(&UID, BucketType<Ty0>): bool
139910MoveLoc[0](Arg0: &mut BucketProtocol)
140414MoveLoc[0](Arg0: &mut BucketProtocol)
140515MutBorrowField[1](BucketProtocol.id: UID)
140717PackGeneric[1](BucketType<Ty0>)
140818Call dynamic_object_field::borrow_mut<BucketType<Ty0>, Bucket<Ty0>>(&mut UID, BucketType<Ty0>): &mut Bucket<Ty0>
1412public borrow_well<Ty0>(Arg0: &BucketProtocol): &Well<Ty0> {
14140CopyLoc[0](Arg0: &BucketProtocol)
14151Call assert_valid_package_version(&BucketProtocol)
14162CopyLoc[0](Arg0: &BucketProtocol)
14173ImmBorrowField[1](BucketProtocol.id: UID)
14195PackGeneric[2](WellType<Ty0>)
14206Call dynamic_object_field::exists_with_type<WellType<Ty0>, Well<Ty0>>(&UID, WellType<Ty0>): bool
14259MoveLoc[0](Arg0: &BucketProtocol)
143013MoveLoc[0](Arg0: &BucketProtocol)
143114ImmBorrowField[1](BucketProtocol.id: UID)
143316PackGeneric[2](WellType<Ty0>)
143417Call dynamic_object_field::borrow<WellType<Ty0>, Well<Ty0>>(&UID, WellType<Ty0>): &Well<Ty0>
1438public borrow_well_mut<Ty0>(Arg0: &mut BucketProtocol): &mut Well<Ty0> {
14400CopyLoc[0](Arg0: &mut BucketProtocol)
14422Call assert_valid_package_version(&BucketProtocol)
14433CopyLoc[0](Arg0: &mut BucketProtocol)
14444ImmBorrowField[1](BucketProtocol.id: UID)
14466PackGeneric[2](WellType<Ty0>)
14477Call dynamic_object_field::exists_with_type<WellType<Ty0>, Well<Ty0>>(&UID, WellType<Ty0>): bool
145210MoveLoc[0](Arg0: &mut BucketProtocol)
145714MoveLoc[0](Arg0: &mut BucketProtocol)
145815MutBorrowField[1](BucketProtocol.id: UID)
146017PackGeneric[2](WellType<Ty0>)
146118Call dynamic_object_field::borrow_mut<WellType<Ty0>, Well<Ty0>>(&mut UID, WellType<Ty0>): &mut Well<Ty0>
1465public borrow_tank<Ty0>(Arg0: &BucketProtocol): &Tank<BUCK, Ty0> {
14670CopyLoc[0](Arg0: &BucketProtocol)
14681Call assert_valid_package_version(&BucketProtocol)
14692CopyLoc[0](Arg0: &BucketProtocol)
14703ImmBorrowField[1](BucketProtocol.id: UID)
14725PackGeneric[3](TankType<Ty0>)
14736Call dynamic_object_field::exists_with_type<TankType<Ty0>, Tank<BUCK, Ty0>>(&UID, TankType<Ty0>): bool
14789MoveLoc[0](Arg0: &BucketProtocol)
148313MoveLoc[0](Arg0: &BucketProtocol)
148414ImmBorrowField[1](BucketProtocol.id: UID)
148616PackGeneric[3](TankType<Ty0>)
148717Call dynamic_object_field::borrow<TankType<Ty0>, Tank<BUCK, Ty0>>(&UID, TankType<Ty0>): &Tank<BUCK, Ty0>
1491public borrow_tank_mut<Ty0>(Arg0: &mut BucketProtocol): &mut Tank<BUCK, Ty0> {
14930CopyLoc[0](Arg0: &mut BucketProtocol)
14952Call assert_valid_package_version(&BucketProtocol)
14963CopyLoc[0](Arg0: &mut BucketProtocol)
14974ImmBorrowField[1](BucketProtocol.id: UID)
14996PackGeneric[3](TankType<Ty0>)
15007Call dynamic_object_field::exists_with_type<TankType<Ty0>, Tank<BUCK, Ty0>>(&UID, TankType<Ty0>): bool
150510MoveLoc[0](Arg0: &mut BucketProtocol)
151014MoveLoc[0](Arg0: &mut BucketProtocol)
151115MutBorrowField[1](BucketProtocol.id: UID)
151317PackGeneric[3](TankType<Ty0>)
151418Call dynamic_object_field::borrow_mut<TankType<Ty0>, Tank<BUCK, Ty0>>(&mut UID, TankType<Ty0>): &mut Tank<BUCK, Ty0>
1518public get_min_bottle_size(Arg0: &BucketProtocol): u64 {
15200CopyLoc[0](Arg0: &BucketProtocol)
15211Call assert_valid_package_version(&BucketProtocol)
15222MoveLoc[0](Arg0: &BucketProtocol)
15233ImmBorrowField[0](BucketProtocol.min_bottle_size: u64)
1528public compute_base_rate_fee<Ty0>(Arg0: &Bucket<Ty0>, Arg1: &Clock): u64 {
15310MoveLoc[0](Arg0: &Bucket<Ty0>)
15321MoveLoc[1](Arg1: &Clock)
15332Call clock::timestamp_ms(&Clock): u64
15343Call bucket::compute_base_rate<Ty0>(&Bucket<Ty0>, u64): u64
15365CopyLoc[2](loc0: u64)
15376Call constants::max_fee(): u64
15419Call constants::max_fee(): u64
154210StLoc[2](loc0: u64)
154411CopyLoc[2](loc0: u64)
154512Call constants::min_fee(): u64
154915Call constants::min_fee(): u64
155016StLoc[2](loc0: u64)
155217MoveLoc[2](loc0: u64)
1556public withdraw_surplus_collateral<Ty0>(Arg0: &mut BucketProtocol, Arg1: &TxContext): Balance<Ty0> {
1557L2: loc0: &mut Bucket<Ty0>
15600CopyLoc[0](Arg0: &mut BucketProtocol)
15622Call assert_valid_package_version(&BucketProtocol)
15633MoveLoc[0](Arg0: &mut BucketProtocol)
15644Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
15655StLoc[2](loc0: &mut Bucket<Ty0>)
15666MoveLoc[1](Arg1: &TxContext)
15677Call tx_context::sender(&TxContext): address
15688StLoc[3](loc1: address)
15699MoveLoc[2](loc0: &mut Bucket<Ty0>)
157010MoveLoc[3](loc1: address)
157111Call bucket::withdraw_surplus_collateral<Ty0>(&mut Bucket<Ty0>, address): Balance<Ty0>
1575mint_buck<Ty0>(Arg0: &mut BucketProtocol, Arg1: u64): Balance<BUCK> {
15770CopyLoc[0](Arg0: &mut BucketProtocol)
15792Call assert_valid_package_version(&BucketProtocol)
15803CopyLoc[1](Arg1: u64)
15814Call buck_events::emit_buck_minted<Ty0>(u64)
15825MoveLoc[0](Arg0: &mut BucketProtocol)
15836MutBorrowField[3](BucketProtocol.buck_treasury_cap: TreasuryCap<BUCK>)
15847MoveLoc[1](Arg1: u64)
15858Call coin::mint_balance<BUCK>(&mut TreasuryCap<BUCK>, u64): Balance<BUCK>
1589burn_buck<Ty0>(Arg0: &mut BucketProtocol, Arg1: Balance<BUCK>) {
15910CopyLoc[0](Arg0: &mut BucketProtocol)
15932Call assert_valid_package_version(&BucketProtocol)
15943ImmBorrowLoc[1](Arg1: Balance<BUCK>)
15954Call balance::value<BUCK>(&Balance<BUCK>): u64
15965Call buck_events::emit_buck_burnt<Ty0>(u64)
15976MoveLoc[0](Arg0: &mut BucketProtocol)
15987MutBorrowField[3](BucketProtocol.buck_treasury_cap: TreasuryCap<BUCK>)
15998Call coin::supply_mut<BUCK>(&mut TreasuryCap<BUCK>): &mut Supply<BUCK>
16009MoveLoc[1](Arg1: Balance<BUCK>)
160110Call balance::decrease_supply<BUCK>(&mut Supply<BUCK>, Balance<BUCK>): u64
1606public create_flash_mint_config_to(Arg0: &AdminCap, Arg1: u64, Arg2: u64, Arg3: address, Arg4: &mut TxContext) {
16080MoveLoc[4](Arg4: &mut TxContext)
16091Call object::new(&mut TxContext): UID
16102MoveLoc[1](Arg1: u64)
16113MoveLoc[2](Arg2: u64)
16135Pack[6](FlashMintConfig)
16146MoveLoc[3](Arg3: address)
16157Call transfer::transfer<FlashMintConfig>(FlashMintConfig, address)
1619public share_flash_mint_config(Arg0: &AdminCap, Arg1: u64, Arg2: u64, Arg3: &mut TxContext) {
16210MoveLoc[3](Arg3: &mut TxContext)
16221Call object::new(&mut TxContext): UID
16232MoveLoc[1](Arg1: u64)
16243MoveLoc[2](Arg2: u64)
16265Pack[6](FlashMintConfig)
16276Call transfer::share_object<FlashMintConfig>(FlashMintConfig)
1631public update_flash_mint_config(Arg0: &AdminCap, Arg1: &mut FlashMintConfig, Arg2: u64, Arg3: u64) {
16330CopyLoc[2](Arg2: u64)
16341CopyLoc[1](Arg1: &mut FlashMintConfig)
16352MutBorrowField[4](FlashMintConfig.fee_rate: u64)
16374LdConst[30](vector<u8>: "fee..)
16385MoveLoc[2](Arg2: u64)
16396Call buck_events::emit_param_updated<FlashMintConfig>(vector<u8>, u64)
16407CopyLoc[3](Arg3: u64)
16418MoveLoc[1](Arg1: &mut FlashMintConfig)
16429MutBorrowField[5](FlashMintConfig.max_amount: u64)
164411LdConst[31](vector<u8>: "max..)
164512MoveLoc[3](Arg3: u64)
164613Call buck_events::emit_param_updated<FlashMintConfig>(vector<u8>, u64)
1650public flash_mint(Arg0: &mut BucketProtocol, Arg1: &mut FlashMintConfig, Arg2: u64): Balance<BUCK> * FlashMintReceipt {
1653L5: loc2: Balance<BUCK>
1654L6: loc3: FlashMintReceipt
16560CopyLoc[1](Arg1: &mut FlashMintConfig)
16571ImmBorrowField[6](FlashMintConfig.total_amount: u64)
16593CopyLoc[2](Arg2: u64)
16615CopyLoc[1](Arg1: &mut FlashMintConfig)
16626MutBorrowField[6](FlashMintConfig.total_amount: u64)
16648CopyLoc[1](Arg1: &mut FlashMintConfig)
16659ImmBorrowField[6](FlashMintConfig.total_amount: u64)
166711CopyLoc[1](Arg1: &mut FlashMintConfig)
166812ImmBorrowField[5](FlashMintConfig.max_amount: u64)
167517MoveLoc[0](Arg0: &mut BucketProtocol)
167719MoveLoc[1](Arg1: &mut FlashMintConfig)
167921LdConst[9](u64: 11)
168223CopyLoc[1](Arg1: &mut FlashMintConfig)
168425Call object::id<FlashMintConfig>(&FlashMintConfig): ID
168627MoveLoc[0](Arg0: &mut BucketProtocol)
168728CopyLoc[2](Arg2: u64)
168829Call mint_buck<BUCK>(&mut BucketProtocol, u64): Balance<BUCK>
168930StLoc[5](loc2: Balance<BUCK>)
169031CopyLoc[2](Arg2: u64)
169132MoveLoc[1](Arg1: &mut FlashMintConfig)
169233ImmBorrowField[4](FlashMintConfig.fee_rate: u64)
169435Call constants::fee_precision(): u64
169536Call math::mul_factor(u64, u64, u64): u64
169637StLoc[4](loc1: u64)
169738CopyLoc[3](loc0: ID)
169839CopyLoc[2](Arg2: u64)
169940CopyLoc[4](loc1: u64)
170041Pack[7](FlashMintReceipt)
170142StLoc[6](loc3: FlashMintReceipt)
170243MoveLoc[3](loc0: ID)
170344MoveLoc[2](Arg2: u64)
170445MoveLoc[4](loc1: u64)
170546Call buck_events::emit_flash_mint(ID, u64, u64)
170647MoveLoc[5](loc2: Balance<BUCK>)
170748MoveLoc[6](loc3: FlashMintReceipt)
1711public flash_burn(Arg0: &mut BucketProtocol, Arg1: &mut FlashMintConfig, Arg2: Balance<BUCK>, Arg3: FlashMintReceipt) {
1712L4: loc0: &mut Well<BUCK>
1714L6: loc2: Balance<BUCK>
17180MoveLoc[3](Arg3: FlashMintReceipt)
17191Unpack[7](FlashMintReceipt)
17235ImmBorrowLoc[2](Arg2: Balance<BUCK>)
17246Call balance::value<BUCK>(&Balance<BUCK>): u64
17257CopyLoc[8](loc4: u64)
17268CopyLoc[7](loc3: u64)
173313MoveLoc[0](Arg0: &mut BucketProtocol)
173515MoveLoc[1](Arg1: &mut FlashMintConfig)
173717LdConst[10](u64: 12)
174019MoveLoc[5](loc1: ID)
174120CopyLoc[1](Arg1: &mut FlashMintConfig)
174322Call object::id<FlashMintConfig>(&FlashMintConfig): ID
174926MoveLoc[0](Arg0: &mut BucketProtocol)
175128MoveLoc[1](Arg1: &mut FlashMintConfig)
175330LdConst[11](u64: 13)
175632CopyLoc[1](Arg1: &mut FlashMintConfig)
175733ImmBorrowField[6](FlashMintConfig.total_amount: u64)
175935MoveLoc[8](loc4: u64)
176137MoveLoc[1](Arg1: &mut FlashMintConfig)
176238MutBorrowField[6](FlashMintConfig.total_amount: u64)
176440MutBorrowLoc[2](Arg2: Balance<BUCK>)
176541MoveLoc[7](loc3: u64)
176642Call balance::split<BUCK>(&mut Balance<BUCK>, u64): Balance<BUCK>
176743StLoc[6](loc2: Balance<BUCK>)
176844CopyLoc[0](Arg0: &mut BucketProtocol)
176945MoveLoc[2](Arg2: Balance<BUCK>)
177046Call burn_buck<BUCK>(&mut BucketProtocol, Balance<BUCK>)
177147MoveLoc[0](Arg0: &mut BucketProtocol)
177248Call borrow_well_mut<BUCK>(&mut BucketProtocol): &mut Well<BUCK>
177349StLoc[4](loc0: &mut Well<BUCK>)
177450ImmBorrowLoc[6](loc2: Balance<BUCK>)
177551LdConst[32](vector<u8>: "fla..)
177652Call well_events::emit_collect_fee_from<BUCK>(&Balance<BUCK>, vector<u8>)
177753MoveLoc[4](loc0: &mut Well<BUCK>)
177854MoveLoc[6](loc2: Balance<BUCK>)
177955Call well::collect_fee<BUCK>(&mut Well<BUCK>, Balance<BUCK>)
1783public create_reservoir<Ty0>(Arg0: &AdminCap, Arg1: &mut BucketProtocol, Arg2: u64, Arg3: u64, Arg4: u64, Arg5: &mut TxContext) {
1784L6: loc0: Reservoir<Ty0>
1785L7: loc1: WellType<Ty0>
17870CopyLoc[1](Arg1: &mut BucketProtocol)
17892Call assert_valid_package_version(&BucketProtocol)
17903MoveLoc[2](Arg2: u64)
17914MoveLoc[3](Arg3: u64)
17925MoveLoc[4](Arg4: u64)
17936CopyLoc[5](Arg5: &mut TxContext)
17947Call reservoir::new<Ty0>(u64, u64, u64, &mut TxContext): Reservoir<Ty0>
17958StLoc[6](loc0: Reservoir<Ty0>)
17969CopyLoc[1](Arg1: &mut BucketProtocol)
179710MutBorrowField[1](BucketProtocol.id: UID)
179912PackGeneric[4](ReservoirType<Ty0>)
180013MoveLoc[6](loc0: Reservoir<Ty0>)
180114Call dynamic_object_field::add<ReservoirType<Ty0>, Reservoir<Ty0>>(&mut UID, ReservoirType<Ty0>, Reservoir<Ty0>)
180316PackGeneric[2](WellType<Ty0>)
180417StLoc[7](loc1: WellType<Ty0>)
180518CopyLoc[1](Arg1: &mut BucketProtocol)
180619ImmBorrowField[1](BucketProtocol.id: UID)
180720CopyLoc[7](loc1: WellType<Ty0>)
180821Call dynamic_object_field::exists_with_type<WellType<Ty0>, Well<Ty0>>(&UID, WellType<Ty0>): bool
181224MoveLoc[1](Arg1: &mut BucketProtocol)
181325MutBorrowField[1](BucketProtocol.id: UID)
181426MoveLoc[7](loc1: WellType<Ty0>)
181527MoveLoc[5](Arg5: &mut TxContext)
181628Call well::new<Ty0>(&mut TxContext): Well<Ty0>
181729Call dynamic_object_field::add<WellType<Ty0>, Well<Ty0>>(&mut UID, WellType<Ty0>, Well<Ty0>)
182031MoveLoc[1](Arg1: &mut BucketProtocol)
182233MoveLoc[5](Arg5: &mut TxContext)
1828public borrow_reservoir<Ty0>(Arg0: &BucketProtocol): &Reservoir<Ty0> {
1829L1: loc0: ReservoirType<Ty0>
18310CopyLoc[0](Arg0: &BucketProtocol)
18321Call assert_valid_package_version(&BucketProtocol)
18343PackGeneric[4](ReservoirType<Ty0>)
18354StLoc[1](loc0: ReservoirType<Ty0>)
18365CopyLoc[0](Arg0: &BucketProtocol)
18376ImmBorrowField[1](BucketProtocol.id: UID)
18387CopyLoc[1](loc0: ReservoirType<Ty0>)
18398Call dynamic_object_field::exists_with_type<ReservoirType<Ty0>, Reservoir<Ty0>>(&UID, ReservoirType<Ty0>): bool
184411MoveLoc[0](Arg0: &BucketProtocol)
184915MoveLoc[0](Arg0: &BucketProtocol)
185016ImmBorrowField[1](BucketProtocol.id: UID)
185117MoveLoc[1](loc0: ReservoirType<Ty0>)
185218Call dynamic_object_field::borrow<ReservoirType<Ty0>, Reservoir<Ty0>>(&UID, ReservoirType<Ty0>): &Reservoir<Ty0>
1856borrow_reservoir_mut<Ty0>(Arg0: &mut BucketProtocol): &mut Reservoir<Ty0> {
1857L1: loc0: ReservoirType<Ty0>
18590CopyLoc[0](Arg0: &mut BucketProtocol)
18612Call assert_valid_package_version(&BucketProtocol)
18634PackGeneric[4](ReservoirType<Ty0>)
18645StLoc[1](loc0: ReservoirType<Ty0>)
18656CopyLoc[0](Arg0: &mut BucketProtocol)
18667ImmBorrowField[1](BucketProtocol.id: UID)
18678CopyLoc[1](loc0: ReservoirType<Ty0>)
18689Call dynamic_object_field::exists_with_type<ReservoirType<Ty0>, Reservoir<Ty0>>(&UID, ReservoirType<Ty0>): bool
187312MoveLoc[0](Arg0: &mut BucketProtocol)
187816MoveLoc[0](Arg0: &mut BucketProtocol)
187917MutBorrowField[1](BucketProtocol.id: UID)
188018MoveLoc[1](loc0: ReservoirType<Ty0>)
188119Call dynamic_object_field::borrow_mut<ReservoirType<Ty0>, Reservoir<Ty0>>(&mut UID, ReservoirType<Ty0>): &mut Reservoir<Ty0>
1885public update_reservoir_fee_rate<Ty0>(Arg0: &AdminCap, Arg1: &mut BucketProtocol, Arg2: u64, Arg3: u64) {
18870CopyLoc[1](Arg1: &mut BucketProtocol)
18892Call assert_valid_package_version(&BucketProtocol)
18903MoveLoc[1](Arg1: &mut BucketProtocol)
18914Call borrow_reservoir_mut<Ty0>(&mut BucketProtocol): &mut Reservoir<Ty0>
18925CopyLoc[2](Arg2: u64)
18936CopyLoc[3](Arg3: u64)
18947Call reservoir::update_fee_rate<Ty0>(&mut Reservoir<Ty0>, u64, u64)
18958LdConst[33](vector<u8>: "cha..)
18969MoveLoc[2](Arg2: u64)
189710Call buck_events::emit_param_updated<Reservoir<Ty0>>(vector<u8>, u64)
189811LdConst[34](vector<u8>: "dis..)
189912MoveLoc[3](Arg3: u64)
190013Call buck_events::emit_param_updated<Reservoir<Ty0>>(vector<u8>, u64)
1904public charge_reservoir<Ty0>(Arg0: &mut BucketProtocol, Arg1: Balance<Ty0>): Balance<BUCK> {
19070CopyLoc[0](Arg0: &mut BucketProtocol)
19092Call borrow_reservoir<Ty0>(&BucketProtocol): &Reservoir<Ty0>
19103Call reservoir::charge_fee_rate<Ty0>(&Reservoir<Ty0>): u64
19125MoveLoc[0](Arg0: &mut BucketProtocol)
19136MoveLoc[1](Arg1: Balance<Ty0>)
19147MoveLoc[2](loc0: u64)
19158Call charge_reservoir_internal<Ty0>(&mut BucketProtocol, Balance<Ty0>, u64): Balance<BUCK>
1919public discharge_reservoir<Ty0>(Arg0: &mut BucketProtocol, Arg1: Balance<BUCK>): Balance<Ty0> {
19220CopyLoc[0](Arg0: &mut BucketProtocol)
19242Call borrow_reservoir<Ty0>(&BucketProtocol): &Reservoir<Ty0>
19253Call reservoir::discharge_fee_rate<Ty0>(&Reservoir<Ty0>): u64
19275MoveLoc[0](Arg0: &mut BucketProtocol)
19286MoveLoc[1](Arg1: Balance<BUCK>)
19297MoveLoc[2](loc0: u64)
19308Call discharge_reservoir_internal<Ty0>(&mut BucketProtocol, Balance<BUCK>, u64): Balance<Ty0>
1934public charge_reservoir_without_fee<Ty0>(Arg0: &NoFeePermission, Arg1: &mut BucketProtocol, Arg2: Balance<Ty0>): Balance<BUCK> {
19360MoveLoc[1](Arg1: &mut BucketProtocol)
19371MoveLoc[2](Arg2: Balance<Ty0>)
19393Call charge_reservoir_internal<Ty0>(&mut BucketProtocol, Balance<Ty0>, u64): Balance<BUCK>
1943public discharge_reservoir_without_fee<Ty0>(Arg0: &NoFeePermission, Arg1: &mut BucketProtocol, Arg2: Balance<BUCK>): Balance<Ty0> {
19450MoveLoc[1](Arg1: &mut BucketProtocol)
19461MoveLoc[2](Arg2: Balance<BUCK>)
19483Call discharge_reservoir_internal<Ty0>(&mut BucketProtocol, Balance<BUCK>, u64): Balance<Ty0>
1952public create_no_fee_permission_to(Arg0: &AdminCap, Arg1: address, Arg2: &mut TxContext) {
19540MoveLoc[2](Arg2: &mut TxContext)
19551Call object::new(&mut TxContext): UID
19562Pack[8](NoFeePermission)
19573MoveLoc[1](Arg1: address)
19584Call transfer::transfer<NoFeePermission>(NoFeePermission, address)
1962public set_reservoir_partner<Ty0, Ty1: drop>(Arg0: &AdminCap, Arg1: &mut BucketProtocol, Arg2: u64, Arg3: u64) {
19640MoveLoc[1](Arg1: &mut BucketProtocol)
19651Call borrow_reservoir_mut<Ty0>(&mut BucketProtocol): &mut Reservoir<Ty0>
19662MoveLoc[2](Arg2: u64)
19673MoveLoc[3](Arg3: u64)
19684Call reservoir::set_fee_config<Ty0, Ty1>(&mut Reservoir<Ty0>, u64, u64)
1972public charge_reservoir_by_partner<Ty0, Ty1: drop>(Arg0: &mut BucketProtocol, Arg1: Balance<Ty0>, Arg2: Ty1): Balance<BUCK> {
19750CopyLoc[0](Arg0: &mut BucketProtocol)
19772Call borrow_reservoir<Ty0>(&BucketProtocol): &Reservoir<Ty0>
19783Call reservoir::charge_fee_rate_for_partner<Ty0, Ty1>(&Reservoir<Ty0>): u64
19805MoveLoc[0](Arg0: &mut BucketProtocol)
19816MoveLoc[1](Arg1: Balance<Ty0>)
19827MoveLoc[3](loc0: u64)
19838Call charge_reservoir_internal<Ty0>(&mut BucketProtocol, Balance<Ty0>, u64): Balance<BUCK>
1987public discharge_reservoir_by_partner<Ty0, Ty1: drop>(Arg0: &mut BucketProtocol, Arg1: Balance<BUCK>, Arg2: Ty1): Balance<Ty0> {
19900CopyLoc[0](Arg0: &mut BucketProtocol)
19922Call borrow_reservoir<Ty0>(&BucketProtocol): &Reservoir<Ty0>
19933Call reservoir::discharge_fee_rate_for_partner<Ty0, Ty1>(&Reservoir<Ty0>): u64
19955MoveLoc[0](Arg0: &mut BucketProtocol)
19966MoveLoc[1](Arg1: Balance<BUCK>)
19977MoveLoc[3](loc0: u64)
19988Call discharge_reservoir_internal<Ty0>(&mut BucketProtocol, Balance<BUCK>, u64): Balance<Ty0>
2002charge_reservoir_internal<Ty0>(Arg0: &mut BucketProtocol, Arg1: Balance<Ty0>, Arg2: u64): Balance<BUCK> {
2004L4: loc1: Balance<BUCK>
2006L6: loc3: Balance<BUCK>
2007L7: loc4: &mut Well<BUCK>
20090CopyLoc[0](Arg0: &mut BucketProtocol)
20101Call borrow_reservoir_mut<Ty0>(&mut BucketProtocol): &mut Reservoir<Ty0>
20112MoveLoc[1](Arg1: Balance<Ty0>)
20123Call reservoir::handle_charge<Ty0>(&mut Reservoir<Ty0>, Balance<Ty0>): u64
20145CopyLoc[3](loc0: u64)
20156MoveLoc[2](Arg2: u64)
20167Call constants::fee_precision(): u64
20178Call math::mul_factor(u64, u64, u64): u64
201910CopyLoc[0](Arg0: &mut BucketProtocol)
202011MoveLoc[3](loc0: u64)
202112Call mint_buck<Ty0>(&mut BucketProtocol, u64): Balance<BUCK>
202213StLoc[6](loc3: Balance<BUCK>)
202314MutBorrowLoc[6](loc3: Balance<BUCK>)
202415MoveLoc[5](loc2: u64)
202516Call balance::split<BUCK>(&mut Balance<BUCK>, u64): Balance<BUCK>
202617StLoc[4](loc1: Balance<BUCK>)
202718MoveLoc[0](Arg0: &mut BucketProtocol)
202819Call borrow_well_mut<BUCK>(&mut BucketProtocol): &mut Well<BUCK>
202920StLoc[7](loc4: &mut Well<BUCK>)
203021ImmBorrowLoc[4](loc1: Balance<BUCK>)
203122LdConst[35](vector<u8>: "cha..)
203223Call well_events::emit_collect_fee_from<BUCK>(&Balance<BUCK>, vector<u8>)
203324MoveLoc[7](loc4: &mut Well<BUCK>)
203425MoveLoc[4](loc1: Balance<BUCK>)
203526Call well::collect_fee<BUCK>(&mut Well<BUCK>, Balance<BUCK>)
203627MoveLoc[6](loc3: Balance<BUCK>)
2040discharge_reservoir_internal<Ty0>(Arg0: &mut BucketProtocol, Arg1: Balance<BUCK>, Arg2: u64): Balance<Ty0> {
2042L4: loc1: Balance<Ty0>
2043L5: loc2: Balance<Ty0>
2045L7: loc4: &mut Well<Ty0>
20470ImmBorrowLoc[1](Arg1: Balance<BUCK>)
20481Call balance::value<BUCK>(&Balance<BUCK>): u64
20503CopyLoc[0](Arg0: &mut BucketProtocol)
20514MoveLoc[1](Arg1: Balance<BUCK>)
20525Call burn_buck<Ty0>(&mut BucketProtocol, Balance<BUCK>)
20536CopyLoc[0](Arg0: &mut BucketProtocol)
20547Call borrow_reservoir_mut<Ty0>(&mut BucketProtocol): &mut Reservoir<Ty0>
20558MoveLoc[3](loc0: u64)
20569Call reservoir::handle_discharge<Ty0>(&mut Reservoir<Ty0>, u64): Balance<Ty0>
205710StLoc[4](loc1: Balance<Ty0>)
205811ImmBorrowLoc[4](loc1: Balance<Ty0>)
205912Call balance::value<Ty0>(&Balance<Ty0>): u64
206013MoveLoc[2](Arg2: u64)
206114Call constants::fee_precision(): u64
206215Call math::mul_factor(u64, u64, u64): u64
206316StLoc[6](loc3: u64)
206417MutBorrowLoc[4](loc1: Balance<Ty0>)
206518MoveLoc[6](loc3: u64)
206619Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
206720StLoc[5](loc2: Balance<Ty0>)
206821MoveLoc[0](Arg0: &mut BucketProtocol)
206922Call borrow_well_mut<Ty0>(&mut BucketProtocol): &mut Well<Ty0>
207023StLoc[7](loc4: &mut Well<Ty0>)
207124ImmBorrowLoc[5](loc2: Balance<Ty0>)
207225LdConst[36](vector<u8>: "dis..)
207326Call well_events::emit_collect_fee_from<Ty0>(&Balance<Ty0>, vector<u8>)
207427MoveLoc[7](loc4: &mut Well<Ty0>)
207528MoveLoc[5](loc2: Balance<Ty0>)
207629Call well::collect_fee<Ty0>(&mut Well<Ty0>, Balance<Ty0>)
207730MoveLoc[4](loc1: Balance<Ty0>)
2081public collect_interests<Ty0>(Arg0: &mut BucketProtocol) {
2082L1: loc0: Balance<BUCK>
20850CopyLoc[0](Arg0: &mut BucketProtocol)
20872Call assert_valid_package_version(&BucketProtocol)
20883CopyLoc[0](Arg0: &mut BucketProtocol)
20894Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
20905Call bucket::borrow_interest_table_mut<Ty0>(&mut Bucket<Ty0>): &mut InterestTable
20916Call interest::collect_interests(&mut InterestTable): u64
20938CopyLoc[0](Arg0: &mut BucketProtocol)
20949MoveLoc[2](loc1: u64)
209510Call mint_buck<Ty0>(&mut BucketProtocol, u64): Balance<BUCK>
209611StLoc[1](loc0: Balance<BUCK>)
209712ImmBorrowLoc[1](loc0: Balance<BUCK>)
209813LdConst[37](vector<u8>: "int..)
209914Call well_events::emit_collect_fee_from<BUCK>(&Balance<BUCK>, vector<u8>)
210015MoveLoc[0](Arg0: &mut BucketProtocol)
210116Call borrow_well_mut<BUCK>(&mut BucketProtocol): &mut Well<BUCK>
210217MoveLoc[1](loc0: Balance<BUCK>)
210318Call well::collect_fee<BUCK>(&mut Well<BUCK>, Balance<BUCK>)
2107public collect_interests_to_flask<Ty0>(Arg0: &mut BucketProtocol, Arg1: &mut Flask<BUCK>) {
21090LdConst[18](u64: 404)
2113public mint_sbuck(Arg0: &mut BucketProtocol, Arg1: &mut Flask<BUCK>, Arg2: Coin<BUCK>): Balance<SBUCK> {
21150LdConst[18](u64: 404)
2119public burn_sbuck(Arg0: &mut BucketProtocol, Arg1: &mut Flask<BUCK>, Arg2: Coin<SBUCK>): Balance<BUCK> {
21210LdConst[18](u64: 404)
2125public set_sbuck_rate(Arg0: &AdminCap, Arg1: &mut BucketProtocol, Arg2: &mut Flask<BUCK>, Arg3: &Clock, Arg4: u64, Arg5: &mut TxContext) {
2127L7: loc1: &mut SBuckEmission
21290CopyLoc[1](Arg1: &mut BucketProtocol)
21312Call assert_valid_package_version(&BucketProtocol)
21323CopyLoc[3](Arg3: &Clock)
21334Call clock::timestamp_ms(&Clock): u64
21356CopyLoc[1](Arg1: &mut BucketProtocol)
21378Call has_emission(&BucketProtocol): bool
214010MoveLoc[5](Arg5: &mut TxContext)
214212CopyLoc[1](Arg1: &mut BucketProtocol)
214313MoveLoc[2](Arg2: &mut Flask<BUCK>)
214414MoveLoc[3](Arg3: &Clock)
214515Call collect_interest(&mut BucketProtocol, &mut Flask<BUCK>, &Clock)
214616MoveLoc[1](Arg1: &mut BucketProtocol)
214717Call emission_mut(&mut BucketProtocol): &mut SBuckEmission
214818StLoc[7](loc1: &mut SBuckEmission)
214919MoveLoc[6](loc0: u64)
215020CopyLoc[7](loc1: &mut SBuckEmission)
215121MutBorrowField[7](SBuckEmission.latest_time: u64)
215323MoveLoc[4](Arg4: u64)
215424Call float::from_bps(u64): Float
215525MoveLoc[7](loc1: &mut SBuckEmission)
215626MutBorrowField[8](SBuckEmission.rate: Float)
216029MoveLoc[2](Arg2: &mut Flask<BUCK>)
216231MoveLoc[3](Arg3: &Clock)
216433MoveLoc[1](Arg1: &mut BucketProtocol)
216534MutBorrowField[1](BucketProtocol.id: UID)
216736Pack[10](SBuckRateKey)
216837MoveLoc[5](Arg5: &mut TxContext)
216938Call object::new(&mut TxContext): UID
217039MoveLoc[6](loc0: u64)
217140MoveLoc[4](Arg4: u64)
217241Call float::from_bps(u64): Float
217342Pack[11](SBuckEmission)
217443Call dynamic_object_field::add<SBuckRateKey, SBuckEmission>(&mut UID, SBuckRateKey, SBuckEmission)
2179public interest_amount(Arg0: &BucketProtocol, Arg1: &Flask<BUCK>, Arg2: &Clock): u64 {
2181L4: loc1: &SBuckEmission
21870CopyLoc[0](Arg0: &BucketProtocol)
21881Call has_emission(&BucketProtocol): bool
21913MoveLoc[0](Arg0: &BucketProtocol)
21924Call emission(&BucketProtocol): &SBuckEmission
21935StLoc[4](loc1: &SBuckEmission)
21946MoveLoc[2](Arg2: &Clock)
21957Call clock::timestamp_ms(&Clock): u64
21968CopyLoc[4](loc1: &SBuckEmission)
21979ImmBorrowField[7](SBuckEmission.latest_time: u64)
220012StLoc[6](loc3: u64)
220113MoveLoc[1](Arg1: &Flask<BUCK>)
220214Call sbuck::reserves<BUCK>(&Flask<BUCK>): u64
220315Call float::from(u64): Float
220416StLoc[5](loc2: Float)
220517MoveLoc[6](loc3: u64)
220618Call constants::ms_in_year(): u256
220820Call float::from_fraction(u64, u64): Float
220921StLoc[7](loc4: Float)
221022MoveLoc[4](loc1: &SBuckEmission)
221123ImmBorrowField[8](SBuckEmission.rate: Float)
221325MoveLoc[7](loc4: Float)
221426Call float::mul(Float, Float): Float
221527StLoc[8](loc5: Float)
221628MoveLoc[5](loc2: Float)
221729MoveLoc[8](loc5: Float)
221830Call float::mul(Float, Float): Float
221931Call float::floor(Float): u64
222032StLoc[3](loc0: u64)
222334MoveLoc[0](Arg0: &BucketProtocol)
222536MoveLoc[1](Arg1: &Flask<BUCK>)
222738MoveLoc[2](Arg2: &Clock)
223041StLoc[3](loc0: u64)
223242MoveLoc[3](loc0: u64)
2236public buck_to_sbuck(Arg0: &mut BucketProtocol, Arg1: &mut Flask<BUCK>, Arg2: &Clock, Arg3: Balance<BUCK>): Balance<SBUCK> {
22380CopyLoc[0](Arg0: &mut BucketProtocol)
22402Call assert_valid_package_version(&BucketProtocol)
22413MoveLoc[0](Arg0: &mut BucketProtocol)
22424CopyLoc[1](Arg1: &mut Flask<BUCK>)
22435MoveLoc[2](Arg2: &Clock)
22446Call collect_interest(&mut BucketProtocol, &mut Flask<BUCK>, &Clock)
22457MoveLoc[1](Arg1: &mut Flask<BUCK>)
22479Pack[12](BUCKET_PROTOCOL)
224810MoveLoc[3](Arg3: Balance<BUCK>)
224911Call sbuck::deposit_by_protocol<BUCK, BUCKET_PROTOCOL>(&mut Flask<BUCK>, BUCKET_PROTOCOL, Balance<BUCK>): Balance<SBUCK>
2253public sbuck_to_buck(Arg0: &mut BucketProtocol, Arg1: &mut Flask<BUCK>, Arg2: &Clock, Arg3: Balance<SBUCK>): Balance<BUCK> {
22550CopyLoc[0](Arg0: &mut BucketProtocol)
22572Call assert_valid_package_version(&BucketProtocol)
22583MoveLoc[0](Arg0: &mut BucketProtocol)
22594CopyLoc[1](Arg1: &mut Flask<BUCK>)
22605MoveLoc[2](Arg2: &Clock)
22616Call collect_interest(&mut BucketProtocol, &mut Flask<BUCK>, &Clock)
22627MoveLoc[1](Arg1: &mut Flask<BUCK>)
22649Pack[12](BUCKET_PROTOCOL)
226510MoveLoc[3](Arg3: Balance<SBUCK>)
226611Call sbuck::withdraw_by_protocol<BUCK, BUCKET_PROTOCOL>(&mut Flask<BUCK>, BUCKET_PROTOCOL, Balance<SBUCK>): Balance<BUCK>
2270collect_interest(Arg0: &mut BucketProtocol, Arg1: &mut Flask<BUCK>, Arg2: &Clock) {
2271L3: loc0: &mut Flask<BUCK>
2273L5: loc2: &mut SBuckEmission
2274L6: loc3: Balance<BUCK>
22770CopyLoc[0](Arg0: &mut BucketProtocol)
22781CopyLoc[1](Arg1: &mut Flask<BUCK>)
22792CopyLoc[2](Arg2: &Clock)
22803StLoc[4](loc1: &Clock)
22814StLoc[3](loc0: &mut Flask<BUCK>)
22836MoveLoc[3](loc0: &mut Flask<BUCK>)
22858MoveLoc[4](loc1: &Clock)
22869Call interest_amount(&BucketProtocol, &Flask<BUCK>, &Clock): u64
228710StLoc[7](loc4: u64)
228811CopyLoc[0](Arg0: &mut BucketProtocol)
228912MoveLoc[7](loc4: u64)
229013Call mint_buck<SBUCK>(&mut BucketProtocol, u64): Balance<BUCK>
229114StLoc[6](loc3: Balance<BUCK>)
229215MoveLoc[0](Arg0: &mut BucketProtocol)
229316Call emission_mut(&mut BucketProtocol): &mut SBuckEmission
229417StLoc[5](loc2: &mut SBuckEmission)
229518MoveLoc[2](Arg2: &Clock)
229619Call clock::timestamp_ms(&Clock): u64
229720MoveLoc[5](loc2: &mut SBuckEmission)
229821MutBorrowField[7](SBuckEmission.latest_time: u64)
230023MoveLoc[1](Arg1: &mut Flask<BUCK>)
230124MoveLoc[6](loc3: Balance<BUCK>)
230225Call sbuck::collect_rewards<BUCK>(&mut Flask<BUCK>, Balance<BUCK>)
2306has_emission(Arg0: &BucketProtocol): bool {
23080MoveLoc[0](Arg0: &BucketProtocol)
23091ImmBorrowField[1](BucketProtocol.id: UID)
23113Pack[10](SBuckRateKey)
23124Call dynamic_object_field::exists_with_type<SBuckRateKey, SBuckEmission>(&UID, SBuckRateKey): bool
2316emission(Arg0: &BucketProtocol): &SBuckEmission {
23180MoveLoc[0](Arg0: &BucketProtocol)
23191ImmBorrowField[1](BucketProtocol.id: UID)
23213Pack[10](SBuckRateKey)
23224Call dynamic_object_field::borrow<SBuckRateKey, SBuckEmission>(&UID, SBuckRateKey): &SBuckEmission
2326emission_mut(Arg0: &mut BucketProtocol): &mut SBuckEmission {
23280MoveLoc[0](Arg0: &mut BucketProtocol)
23291MutBorrowField[1](BucketProtocol.id: UID)
23313Pack[10](SBuckRateKey)
23324Call dynamic_object_field::borrow_mut<SBuckRateKey, SBuckEmission>(&mut UID, SBuckRateKey): &mut SBuckEmission
2336public create_bucket_with_interest_table<Ty0>(Arg0: &AdminCap, Arg1: &mut BucketProtocol, Arg2: u64, Arg3: u64, Arg4: u8, Arg5: Option<u64>, Arg6: &Clock, Arg7: u256, Arg8: &mut TxContext) {
23380CopyLoc[0](Arg0: &AdminCap)
23391CopyLoc[1](Arg1: &mut BucketProtocol)
23402MoveLoc[2](Arg2: u64)
23413MoveLoc[3](Arg3: u64)
23424MoveLoc[4](Arg4: u8)
23435MoveLoc[5](Arg5: Option<u64>)
23446CopyLoc[8](Arg8: &mut TxContext)
23457Call create_bucket<Ty0>(&AdminCap, &mut BucketProtocol, u64, u64, u8, Option<u64>, &mut TxContext)
23468CopyLoc[0](Arg0: &AdminCap)
23479CopyLoc[1](Arg1: &mut BucketProtocol)
234810CopyLoc[8](Arg8: &mut TxContext)
234911Call add_pending_record_to_bucket<Ty0>(&AdminCap, &mut BucketProtocol, &mut TxContext)
235012CopyLoc[0](Arg0: &AdminCap)
235113CopyLoc[1](Arg1: &mut BucketProtocol)
235214CopyLoc[6](Arg6: &Clock)
235315MoveLoc[8](Arg8: &mut TxContext)
235416Call add_interest_table_to_bucket<Ty0>(&AdminCap, &mut BucketProtocol, &Clock, &mut TxContext)
235517MoveLoc[0](Arg0: &AdminCap)
235618MoveLoc[1](Arg1: &mut BucketProtocol)
235719MoveLoc[7](Arg7: u256)
235820MoveLoc[6](Arg6: &Clock)
235921Call set_interest_rate<Ty0>(&AdminCap, &mut BucketProtocol, u256, &Clock)
2363public add_interest_table_to_bucket<Ty0>(Arg0: &AdminCap, Arg1: &mut BucketProtocol, Arg2: &Clock, Arg3: &mut TxContext) {
23650MoveLoc[1](Arg1: &mut BucketProtocol)
23661Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
23672MoveLoc[2](Arg2: &Clock)
23683MoveLoc[3](Arg3: &mut TxContext)
23694Call bucket::add_interest_table_to_bucket<Ty0>(&mut Bucket<Ty0>, &Clock, &mut TxContext)
2373public set_interest_rate<Ty0>(Arg0: &AdminCap, Arg1: &mut BucketProtocol, Arg2: u256, Arg3: &Clock) {
2374L4: loc0: &mut Bucket<Ty0>
2377L7: loc3: &mut InterestTable
23800CopyLoc[2](Arg2: u256)
23875MoveLoc[1](Arg1: &mut BucketProtocol)
23897MoveLoc[3](Arg3: &Clock)
23919LdConst[14](u64: 16)
239411MoveLoc[1](Arg1: &mut BucketProtocol)
239512Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
239613StLoc[4](loc0: &mut Bucket<Ty0>)
239714CopyLoc[4](loc0: &mut Bucket<Ty0>)
239916Call bucket::get_minted_buck_amount<Ty0>(&Bucket<Ty0>): u64
240017StLoc[5](loc1: u64)
240118CopyLoc[4](loc0: &mut Bucket<Ty0>)
240320Call bucket::get_bucket_pending_debt<Ty0>(&Bucket<Ty0>): u64
240421StLoc[6](loc2: u64)
240522MoveLoc[4](loc0: &mut Bucket<Ty0>)
240623Call bucket::borrow_interest_table_mut<Ty0>(&mut Bucket<Ty0>): &mut InterestTable
240724StLoc[7](loc3: &mut InterestTable)
240825CopyLoc[2](Arg2: u256)
240926Call constants::interest_precision(): u256
241128Call constants::ms_in_year(): u256
241330Call 0math::mul_factor_u256(u256, u256, u256): u256
241431StLoc[8](loc4: u256)
241532MoveLoc[7](loc3: &mut InterestTable)
241633MoveLoc[8](loc4: u256)
241734MoveLoc[5](loc1: u64)
241835MoveLoc[6](loc2: u64)
242037MoveLoc[3](Arg3: &Clock)
242138Call interest::set_interest_rate(&mut InterestTable, u256, u64, &Clock)
242239LdConst[38](vector<u8>: "int..)
242340MoveLoc[2](Arg2: u256)
242542Call buck_events::emit_param_updated<Bucket<Ty0>>(vector<u8>, u64)
2429public init_bottle_current_interest_index<Ty0>(Arg0: &AdminCap, Arg1: &mut BucketProtocol, Arg2: address, Arg3: &mut TxContext) {
2431L5: loc1: &mut Bucket<Ty0>
24330MoveLoc[1](Arg1: &mut BucketProtocol)
24341Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
24352StLoc[5](loc1: &mut Bucket<Ty0>)
24363CopyLoc[5](loc1: &mut Bucket<Ty0>)
24385Call bucket::borrow_interest_table<Ty0>(&Bucket<Ty0>): &InterestTable
24396Call interest::get_active_interest_index(&InterestTable): u256
24407StLoc[4](loc0: u256)
24418MoveLoc[5](loc1: &mut Bucket<Ty0>)
24429MoveLoc[2](Arg2: address)
244310MoveLoc[4](loc0: u256)
244411MoveLoc[3](Arg3: &mut TxContext)
244512Call bucket::add_interest_index_to_bottle_by_debtor<Ty0>(&mut Bucket<Ty0>, address, u256, &mut TxContext)
2449public init_bottle_interest_index<Ty0>(Arg0: &AdminCap, Arg1: &mut BucketProtocol, Arg2: address, Arg3: u256, Arg4: &mut TxContext) {
2450L5: loc0: &mut Bucket<Ty0>
2451L6: loc1: &mut InterestTable
24530MoveLoc[1](Arg1: &mut BucketProtocol)
24541Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
24552StLoc[5](loc0: &mut Bucket<Ty0>)
24563CopyLoc[5](loc0: &mut Bucket<Ty0>)
24574Call bucket::borrow_interest_table_mut<Ty0>(&mut Bucket<Ty0>): &mut InterestTable
24585StLoc[6](loc1: &mut InterestTable)
24596CopyLoc[3](Arg3: u256)
24607MoveLoc[6](loc1: &mut InterestTable)
24629Call interest::get_active_interest_index(&InterestTable): u256
246813MoveLoc[4](Arg4: &mut TxContext)
247015MoveLoc[5](loc0: &mut Bucket<Ty0>)
247217LdConst[13](u64: 15)
247519MoveLoc[5](loc0: &mut Bucket<Ty0>)
247620MoveLoc[2](Arg2: address)
247721MoveLoc[3](Arg3: u256)
247822MoveLoc[4](Arg4: &mut TxContext)
247923Call bucket::add_interest_index_to_bottle_by_debtor<Ty0>(&mut Bucket<Ty0>, address, u256, &mut TxContext)
2483public add_pending_record_to_bucket<Ty0>(Arg0: &AdminCap, Arg1: &mut BucketProtocol, Arg2: &mut TxContext) {
24850MoveLoc[1](Arg1: &mut BucketProtocol)
24861Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
24872MoveLoc[2](Arg2: &mut TxContext)
24883Call bucket::add_pending_record_to_bucket<Ty0>(&mut Bucket<Ty0>, &mut TxContext)
2492public adjust_pending_record<Ty0>(Arg0: &AdminCap, Arg1: &mut BucketProtocol) {
2494L3: loc1: &BottleTable
2495L4: loc2: &mut Bucket<Ty0>
2496L5: loc3: Option<address>
25054MoveLoc[1](Arg1: &mut BucketProtocol)
25065Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
25076StLoc[4](loc2: &mut Bucket<Ty0>)
25087CopyLoc[4](loc2: &mut Bucket<Ty0>)
25109Call bucket::borrow_bottle_table<Ty0>(&Bucket<Ty0>): &BottleTable
251110StLoc[3](loc1: &BottleTable)
251211CopyLoc[3](loc1: &BottleTable)
251312Call bottle::borrow_table(&BottleTable): &LinkedTable<address, Bottle>
251413Call linked_table::front<address, Bottle>(&LinkedTable<address, Bottle>): &Option<address>
251615StLoc[5](loc3: Option<address>)
251816ImmBorrowLoc[5](loc3: Option<address>)
251917Call option::is_some<address>(&Option<address>): bool
252420MoveLoc[5](loc3: Option<address>)
252521Call option::destroy_some<address>(Option<address>): address
252622StLoc[6](loc4: address)
252723CopyLoc[3](loc1: &BottleTable)
252824CopyLoc[6](loc4: address)
252925Call bottle::borrow_bottle(&BottleTable, address): &Bottle
253026StLoc[2](loc0: &Bottle)
253127MoveLoc[7](loc5: u64)
253228CopyLoc[2](loc0: &Bottle)
253329CopyLoc[3](loc1: &BottleTable)
253430Call bottle::get_pending_coll(&Bottle, &BottleTable): u64
253632StLoc[7](loc5: u64)
253733MoveLoc[8](loc6: u64)
253834MoveLoc[2](loc0: &Bottle)
253935CopyLoc[3](loc1: &BottleTable)
254036Call bottle::get_pending_debt(&Bottle, &BottleTable): u64
254238StLoc[8](loc6: u64)
254339CopyLoc[3](loc1: &BottleTable)
254440Call bottle::borrow_table(&BottleTable): &LinkedTable<address, Bottle>
254541MoveLoc[6](loc4: address)
254642Call linked_table::next<address, Bottle>(&LinkedTable<address, Bottle>, address): &Option<address>
254844StLoc[5](loc3: Option<address>)
255146MoveLoc[3](loc1: &BottleTable)
255348MoveLoc[4](loc2: &mut Bucket<Ty0>)
255449MoveLoc[7](loc5: u64)
255550MoveLoc[8](loc6: u64)
255651Call bucket::adjust_pending_record<Ty0>(&mut Bucket<Ty0>, u64, u64)
2560public borrow_with_strap<Ty0>(Arg0: &mut BucketProtocol, Arg1: &BucketOracle, Arg2: &BottleStrap<Ty0>, Arg3: &Clock, Arg4: Balance<Ty0>, Arg5: u64, Arg6: Option<address>, Arg7: &mut TxContext): Balance<BUCK> {
2564L11: loc3: &mut Bucket<Ty0>
2565L12: loc4: Balance<BUCK>
2569L16: loc8: Option<u64>
25710CopyLoc[0](Arg0: &mut BucketProtocol)
25732Call assert_valid_package_version(&BucketProtocol)
25743CopyLoc[0](Arg0: &mut BucketProtocol)
25754ImmBorrowField[0](BucketProtocol.min_bottle_size: u64)
25776StLoc[15](loc7: u64)
25787CopyLoc[0](Arg0: &mut BucketProtocol)
25798Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
25809StLoc[11](loc3: &mut Bucket<Ty0>)
258110CopyLoc[2](Arg2: &BottleStrap<Ty0>)
258211Call strap::fee_rate<Ty0>(&BottleStrap<Ty0>): Option<u64>
258312StLoc[16](loc8: Option<u64>)
258413ImmBorrowLoc[16](loc8: Option<u64>)
258514Call option::is_none<u64>(&Option<u64>): bool
258816CopyLoc[11](loc3: &mut Bucket<Ty0>)
258917CopyLoc[3](Arg3: &Clock)
259018StLoc[8](loc0: &Clock)
259220MoveLoc[8](loc0: &Clock)
259321Call compute_base_rate_fee<Ty0>(&Bucket<Ty0>, &Clock): u64
259422StLoc[9](loc1: u64)
259724MoveLoc[16](loc8: Option<u64>)
259825Call option::destroy_some<u64>(Option<u64>): u64
259926StLoc[9](loc1: u64)
260127MoveLoc[9](loc1: u64)
260228StLoc[14](loc6: u64)
260329CopyLoc[5](Arg5: u64)
260430MoveLoc[14](loc6: u64)
260531Call constants::fee_precision(): u64
260632Call math::mul_factor(u64, u64, u64): u64
260733StLoc[13](loc5: u64)
260834ImmBorrowLoc[4](Arg4: Balance<Ty0>)
260935Call balance::value<Ty0>(&Balance<Ty0>): u64
261036Call buck_events::emit_collateral_increased<Ty0>(u64)
261137MoveLoc[2](Arg2: &BottleStrap<Ty0>)
261238Call strap::get_address<Ty0>(&BottleStrap<Ty0>): address
261339StLoc[10](loc2: address)
261440MoveLoc[11](loc3: &mut Bucket<Ty0>)
261541MoveLoc[1](Arg1: &BucketOracle)
261642MoveLoc[10](loc2: address)
261743MoveLoc[3](Arg3: &Clock)
261844MoveLoc[4](Arg4: Balance<Ty0>)
261945CopyLoc[5](Arg5: u64)
262046CopyLoc[13](loc5: u64)
262248MoveLoc[6](Arg6: Option<address>)
262349MoveLoc[15](loc7: u64)
262450MoveLoc[7](Arg7: &mut TxContext)
262551Call bucket::handle_borrow<Ty0>(&mut Bucket<Ty0>, &BucketOracle, address, &Clock, Balance<Ty0>, u64, Option<address>, u64, &mut TxContext)
262652CopyLoc[13](loc5: u64)
263156CopyLoc[0](Arg0: &mut BucketProtocol)
263257MoveLoc[13](loc5: u64)
263358Call mint_buck<Ty0>(&mut BucketProtocol, u64): Balance<BUCK>
263459StLoc[12](loc4: Balance<BUCK>)
263560ImmBorrowLoc[12](loc4: Balance<BUCK>)
263661LdConst[23](vector<u8>: "bor..)
263762Call well_events::emit_collect_fee_from<BUCK>(&Balance<BUCK>, vector<u8>)
263863CopyLoc[0](Arg0: &mut BucketProtocol)
263964Call borrow_well_mut<BUCK>(&mut BucketProtocol): &mut Well<BUCK>
264065MoveLoc[12](loc4: Balance<BUCK>)
264166Call well::collect_fee<BUCK>(&mut Well<BUCK>, Balance<BUCK>)
264367MoveLoc[0](Arg0: &mut BucketProtocol)
264468MoveLoc[5](Arg5: u64)
264569Call mint_buck<Ty0>(&mut BucketProtocol, u64): Balance<BUCK>
2649public withdraw_with_strap<Ty0>(Arg0: &mut BucketProtocol, Arg1: &BucketOracle, Arg2: &BottleStrap<Ty0>, Arg3: &Clock, Arg4: u64, Arg5: Option<address>): Balance<Ty0> {
2650L6: loc0: &mut Bucket<Ty0>
26530MoveLoc[0](Arg0: &mut BucketProtocol)
26541Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
26552StLoc[6](loc0: &mut Bucket<Ty0>)
26563CopyLoc[6](loc0: &mut Bucket<Ty0>)
26585Call bucket::is_not_locked<Ty0>(&Bucket<Ty0>): bool
26638MoveLoc[2](Arg2: &BottleStrap<Ty0>)
266510MoveLoc[1](Arg1: &BucketOracle)
266712MoveLoc[3](Arg3: &Clock)
266914MoveLoc[6](loc0: &mut Bucket<Ty0>)
267116LdConst[12](u64: 14)
267418CopyLoc[4](Arg4: u64)
267519Call buck_events::emit_collateral_decreased<Ty0>(u64)
267620MoveLoc[2](Arg2: &BottleStrap<Ty0>)
267721Call strap::get_address<Ty0>(&BottleStrap<Ty0>): address
267822StLoc[7](loc1: address)
267923MoveLoc[6](loc0: &mut Bucket<Ty0>)
268024MoveLoc[1](Arg1: &BucketOracle)
268125MoveLoc[7](loc1: address)
268226MoveLoc[3](Arg3: &Clock)
268327MoveLoc[4](Arg4: u64)
268428MoveLoc[5](Arg5: Option<address>)
268529Call bucket::handle_withdraw<Ty0>(&mut Bucket<Ty0>, &BucketOracle, address, &Clock, u64, Option<address>): Balance<Ty0>
2689public repay_with_strap<Ty0>(Arg0: &mut BucketProtocol, Arg1: &BottleStrap<Ty0>, Arg2: Balance<BUCK>, Arg3: &Clock): Balance<Ty0> {
2691L5: loc1: &mut Bucket<Ty0>
2692L6: loc2: Balance<Ty0>
26960CopyLoc[0](Arg0: &mut BucketProtocol)
26982Call assert_valid_package_version(&BucketProtocol)
26993CopyLoc[0](Arg0: &mut BucketProtocol)
27004ImmBorrowField[0](BucketProtocol.min_bottle_size: u64)
27037MoveLoc[1](Arg1: &BottleStrap<Ty0>)
27048Call strap::get_address<Ty0>(&BottleStrap<Ty0>): address
27059StLoc[7](loc3: address)
270610ImmBorrowLoc[2](Arg2: Balance<BUCK>)
270711Call balance::value<BUCK>(&Balance<BUCK>): u64
270812StLoc[4](loc0: u64)
270913CopyLoc[0](Arg0: &mut BucketProtocol)
271014MoveLoc[2](Arg2: Balance<BUCK>)
271115Call burn_buck<Ty0>(&mut BucketProtocol, Balance<BUCK>)
271216MoveLoc[0](Arg0: &mut BucketProtocol)
271317Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
271418StLoc[5](loc1: &mut Bucket<Ty0>)
271519CopyLoc[5](loc1: &mut Bucket<Ty0>)
271721Call bucket::is_not_locked<Ty0>(&Bucket<Ty0>): bool
272224MoveLoc[3](Arg3: &Clock)
272426MoveLoc[5](loc1: &mut Bucket<Ty0>)
272628LdConst[12](u64: 14)
272930MoveLoc[5](loc1: &mut Bucket<Ty0>)
273031MoveLoc[7](loc3: address)
273132MoveLoc[4](loc0: u64)
273233MoveLoc[8](loc4: u64)
273435MoveLoc[3](Arg3: &Clock)
273536Call bucket::handle_repay<Ty0>(&mut Bucket<Ty0>, address, u64, u64, bool, &Clock): Balance<Ty0>
273637StLoc[6](loc2: Balance<Ty0>)
273738ImmBorrowLoc[6](loc2: Balance<Ty0>)
273839Call balance::value<Ty0>(&Balance<Ty0>): u64
273940Call buck_events::emit_collateral_decreased<Ty0>(u64)
274041MoveLoc[6](loc2: Balance<Ty0>)
2744public withdraw_surplus_with_strap<Ty0>(Arg0: &mut BucketProtocol, Arg1: &BottleStrap<Ty0>): Balance<Ty0> {
2745L2: loc0: &mut Bucket<Ty0>
27480CopyLoc[0](Arg0: &mut BucketProtocol)
27502Call assert_valid_package_version(&BucketProtocol)
27513MoveLoc[0](Arg0: &mut BucketProtocol)
27524Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
27535StLoc[2](loc0: &mut Bucket<Ty0>)
27546MoveLoc[1](Arg1: &BottleStrap<Ty0>)
27557Call strap::get_address<Ty0>(&BottleStrap<Ty0>): address
27568StLoc[3](loc1: address)
27579MoveLoc[2](loc0: &mut Bucket<Ty0>)
275810MoveLoc[3](loc1: address)
275911Call bucket::withdraw_surplus_collateral<Ty0>(&mut Bucket<Ty0>, address): Balance<Ty0>
2763public new_strap_with_fee_rate_to<Ty0>(Arg0: &AdminCap, Arg1: u64, Arg2: address, Arg3: &mut TxContext) {
27650MoveLoc[1](Arg1: u64)
27661MoveLoc[3](Arg3: &mut TxContext)
27672Call strap::new_with_fee_rate<Ty0>(u64, &mut TxContext): BottleStrap<Ty0>
27683MoveLoc[2](Arg2: address)
27694Call transfer::public_transfer<BottleStrap<Ty0>>(BottleStrap<Ty0>, address)
2773public update_liquidation_config<Ty0>(Arg0: &AdminCap, Arg1: &mut BucketProtocol, Arg2: &BucketOracle, Arg3: &Clock, Arg4: u64, Arg5: u64) {
2774L6: loc0: &BucketOracle
2776L8: loc2: &mut Bucket<Ty0>
27780MoveLoc[1](Arg1: &mut BucketProtocol)
27791Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
27802StLoc[8](loc2: &mut Bucket<Ty0>)
27813CopyLoc[8](loc2: &mut Bucket<Ty0>)
27824CopyLoc[4](Arg4: u64)
27835CopyLoc[5](Arg5: u64)
27846Call bucket::update_liquidation_config<Ty0>(&mut Bucket<Ty0>, u64, u64)
27857MoveLoc[8](loc2: &mut Bucket<Ty0>)
27868MoveLoc[2](Arg2: &BucketOracle)
27879MoveLoc[3](Arg3: &Clock)
278810StLoc[7](loc1: &Clock)
278911StLoc[6](loc0: &BucketOracle)
279113MoveLoc[6](loc0: &BucketOracle)
279214MoveLoc[7](loc1: &Clock)
279315Call bucket::has_liquidatable_bottle<Ty0>(&Bucket<Ty0>, &BucketOracle, &Clock): bool
279919LdConst[16](u64: 18)
280221LdConst[39](vector<u8>: "min..)
280322MoveLoc[4](Arg4: u64)
280423Call buck_events::emit_param_updated<Ty0>(vector<u8>, u64)
280524LdConst[40](vector<u8>: "rec..)
280625MoveLoc[5](Arg5: u64)
280726Call buck_events::emit_param_updated<Ty0>(vector<u8>, u64)
2811public package_version(): u64 {
2817public add_test_version(Arg0: &AdminCap, Arg1: &mut BucketProtocol, Arg2: u64, Arg3: &mut TxContext) {
28190MoveLoc[1](Arg1: &mut BucketProtocol)
28201MutBorrowField[1](BucketProtocol.id: UID)
28212LdConst[41](vector<u8>: "tes..)
28223MoveLoc[3](Arg3: &mut TxContext)
28234Call object::new(&mut TxContext): UID
28245MoveLoc[2](Arg2: u64)
28256Pack[13](TestVersion)
28267Call dynamic_object_field::add<vector<u8>, TestVersion>(&mut UID, vector<u8>, TestVersion)
2830public remove_test_version(Arg0: &AdminCap, Arg1: &mut BucketProtocol) {
28330CopyLoc[1](Arg1: &mut BucketProtocol)
28341MutBorrowField[1](BucketProtocol.id: UID)
28352LdConst[41](vector<u8>: "tes..)
28363Call dynamic_object_field::remove<vector<u8>, TestVersion>(&mut UID, vector<u8>): TestVersion
28374Unpack[13](TestVersion)
28396Call object::delete(UID)
28407MoveLoc[2](loc0: u64)
28418MoveLoc[1](Arg1: &mut BucketProtocol)
28429MutBorrowField[2](BucketProtocol.version: u64)
2847assert_valid_package_version(Arg0: &BucketProtocol) {
2851L4: loc3: &TestVersion
28530Call package_version(): u64
28552LdConst[41](vector<u8>: "tes..)
28563StLoc[2](loc1: vector<u8>)
28574CopyLoc[0](Arg0: &BucketProtocol)
28585ImmBorrowField[1](BucketProtocol.id: UID)
28596CopyLoc[2](loc1: vector<u8>)
28607Call dynamic_object_field::exists_with_type<vector<u8>, TestVersion>(&UID, vector<u8>): bool
28639CopyLoc[0](Arg0: &BucketProtocol)
286410ImmBorrowField[1](BucketProtocol.id: UID)
286511MoveLoc[2](loc1: vector<u8>)
286612Call dynamic_object_field::borrow<vector<u8>, TestVersion>(&UID, vector<u8>): &TestVersion
286713StLoc[4](loc3: &TestVersion)
286814CopyLoc[3](loc2: u64)
286915MoveLoc[0](Arg0: &BucketProtocol)
287016ImmBorrowField[2](BucketProtocol.version: u64)
287520MoveLoc[4](loc3: &TestVersion)
287823StLoc[1](loc0: bool)
288125MoveLoc[3](loc2: u64)
288226MoveLoc[4](loc3: &TestVersion)
288327ImmBorrowField[9](TestVersion.version: u64)
288630StLoc[1](loc0: bool)
288831MoveLoc[1](loc0: bool)
289334LdConst[17](u64: 99)
289837MoveLoc[3](loc2: u64)
289938MoveLoc[0](Arg0: &BucketProtocol)
290039ImmBorrowField[2](BucketProtocol.version: u64)
290744LdConst[17](u64: 99)
2913public create_pipe<Ty0, Ty1: drop>(Arg0: &AdminCap, Arg1: &mut BucketProtocol, Arg2: &mut TxContext) {
2914L3: loc0: Pipe<Ty0, Ty1>
2915L4: loc1: PipeType<Ty0, Ty1>
29170Call pipe::new_type<Ty0, Ty1>(): PipeType<Ty0, Ty1>
29181StLoc[4](loc1: PipeType<Ty0, Ty1>)
29192MoveLoc[2](Arg2: &mut TxContext)
29203Call pipe::new_pipe<Ty0, Ty1>(&mut TxContext): Pipe<Ty0, Ty1>
29214StLoc[3](loc0: Pipe<Ty0, Ty1>)
29225MoveLoc[1](Arg1: &mut BucketProtocol)
29236MutBorrowField[1](BucketProtocol.id: UID)
29247MoveLoc[4](loc1: PipeType<Ty0, Ty1>)
29258MoveLoc[3](loc0: Pipe<Ty0, Ty1>)
29269Call dynamic_object_field::add<PipeType<Ty0, Ty1>, Pipe<Ty0, Ty1>>(&mut UID, PipeType<Ty0, Ty1>, Pipe<Ty0, Ty1>)
2930public destroy_pipe<Ty0, Ty1: drop>(Arg0: &AdminCap, Arg1: &mut BucketProtocol) {
2931L2: loc0: PipeType<Ty0, Ty1>
2932L3: loc1: PipeType<Ty0, Ty1>
29340Call is_buck<Ty0>(): bool
29372Call pipe::new_type<Ty0, Ty1>(): PipeType<Ty0, Ty1>
29383StLoc[2](loc0: PipeType<Ty0, Ty1>)
29394MoveLoc[1](Arg1: &mut BucketProtocol)
29405MutBorrowField[1](BucketProtocol.id: UID)
29416MoveLoc[2](loc0: PipeType<Ty0, Ty1>)
29427Call dynamic_object_field::remove<PipeType<Ty0, Ty1>, Pipe<Ty0, Ty1>>(&mut UID, PipeType<Ty0, Ty1>): Pipe<Ty0, Ty1>
29438Call pipe::destroy_buck_pipe<Ty0, Ty1>(Pipe<Ty0, Ty1>)
294610Call pipe::new_type<Ty0, Ty1>(): PipeType<Ty0, Ty1>
294711StLoc[3](loc1: PipeType<Ty0, Ty1>)
294812MoveLoc[1](Arg1: &mut BucketProtocol)
294913MutBorrowField[1](BucketProtocol.id: UID)
295014MoveLoc[3](loc1: PipeType<Ty0, Ty1>)
295115Call dynamic_object_field::remove<PipeType<Ty0, Ty1>, Pipe<Ty0, Ty1>>(&mut UID, PipeType<Ty0, Ty1>): Pipe<Ty0, Ty1>
295216Call pipe::destroy_pipe<Ty0, Ty1>(Pipe<Ty0, Ty1>)
2957public borrow_pipe<Ty0, Ty1: drop>(Arg0: &BucketProtocol): &Pipe<Ty0, Ty1> {
2958L1: loc0: PipeType<Ty0, Ty1>
29600CopyLoc[0](Arg0: &BucketProtocol)
29611Call assert_valid_package_version(&BucketProtocol)
29622Call pipe::new_type<Ty0, Ty1>(): PipeType<Ty0, Ty1>
29633StLoc[1](loc0: PipeType<Ty0, Ty1>)
29644CopyLoc[0](Arg0: &BucketProtocol)
29655ImmBorrowField[1](BucketProtocol.id: UID)
29666CopyLoc[1](loc0: PipeType<Ty0, Ty1>)
29677Call dynamic_object_field::exists_with_type<PipeType<Ty0, Ty1>, Pipe<Ty0, Ty1>>(&UID, PipeType<Ty0, Ty1>): bool
297210MoveLoc[0](Arg0: &BucketProtocol)
297714MoveLoc[0](Arg0: &BucketProtocol)
297815ImmBorrowField[1](BucketProtocol.id: UID)
297916MoveLoc[1](loc0: PipeType<Ty0, Ty1>)
298017Call dynamic_object_field::borrow<PipeType<Ty0, Ty1>, Pipe<Ty0, Ty1>>(&UID, PipeType<Ty0, Ty1>): &Pipe<Ty0, Ty1>
2984borrow_pipe_mut<Ty0, Ty1: drop>(Arg0: &mut BucketProtocol): &mut Pipe<Ty0, Ty1> {
2985L1: loc0: PipeType<Ty0, Ty1>
29870CopyLoc[0](Arg0: &mut BucketProtocol)
29892Call assert_valid_package_version(&BucketProtocol)
29903Call pipe::new_type<Ty0, Ty1>(): PipeType<Ty0, Ty1>
29914StLoc[1](loc0: PipeType<Ty0, Ty1>)
29925CopyLoc[0](Arg0: &mut BucketProtocol)
29936ImmBorrowField[1](BucketProtocol.id: UID)
29947CopyLoc[1](loc0: PipeType<Ty0, Ty1>)
29958Call dynamic_object_field::exists_with_type<PipeType<Ty0, Ty1>, Pipe<Ty0, Ty1>>(&UID, PipeType<Ty0, Ty1>): bool
300011MoveLoc[0](Arg0: &mut BucketProtocol)
300515MoveLoc[0](Arg0: &mut BucketProtocol)
300616MutBorrowField[1](BucketProtocol.id: UID)
300717MoveLoc[1](loc0: PipeType<Ty0, Ty1>)
300818Call dynamic_object_field::borrow_mut<PipeType<Ty0, Ty1>, Pipe<Ty0, Ty1>>(&mut UID, PipeType<Ty0, Ty1>): &mut Pipe<Ty0, Ty1>
3012public output<Ty0, Ty1: drop>(Arg0: &mut BucketProtocol, Arg1: u64): OutputCarrier<Ty0, Ty1> {
3013L2: loc0: Balance<Ty0>
30150Call is_buck<Ty0>(): bool
30214MoveLoc[0](Arg0: &mut BucketProtocol)
30236LdConst[15](u64: 17)
30268CopyLoc[0](Arg0: &mut BucketProtocol)
30279Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
302810MoveLoc[1](Arg1: u64)
302911Call bucket::output<Ty0>(&mut Bucket<Ty0>, u64): Balance<Ty0>
303012StLoc[2](loc0: Balance<Ty0>)
303113MoveLoc[0](Arg0: &mut BucketProtocol)
303214Call borrow_pipe_mut<Ty0, Ty1>(&mut BucketProtocol): &mut Pipe<Ty0, Ty1>
303315MoveLoc[2](loc0: Balance<Ty0>)
303416Call pipe::output<Ty0, Ty1>(&mut Pipe<Ty0, Ty1>, Balance<Ty0>): OutputCarrier<Ty0, Ty1>
3038public input<Ty0, Ty1: drop>(Arg0: &mut BucketProtocol, Arg1: InputCarrier<Ty0, Ty1>) {
3039L2: loc0: Balance<Ty0>
30410Call is_buck<Ty0>(): bool
30474MoveLoc[0](Arg0: &mut BucketProtocol)
30496LdConst[15](u64: 17)
30528CopyLoc[0](Arg0: &mut BucketProtocol)
30539Call borrow_pipe_mut<Ty0, Ty1>(&mut BucketProtocol): &mut Pipe<Ty0, Ty1>
305410MoveLoc[1](Arg1: InputCarrier<Ty0, Ty1>)
305511Call pipe::destroy_input_carrier<Ty0, Ty1>(&mut Pipe<Ty0, Ty1>, InputCarrier<Ty0, Ty1>): Balance<Ty0>
305612StLoc[2](loc0: Balance<Ty0>)
305713MoveLoc[0](Arg0: &mut BucketProtocol)
305814Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
305915MoveLoc[2](loc0: Balance<Ty0>)
306016Call bucket::input<Ty0>(&mut Bucket<Ty0>, Balance<Ty0>)
3064public output_buck<Ty0: drop>(Arg0: &mut BucketProtocol, Arg1: u64): OutputCarrier<BUCK, Ty0> {
3065L2: loc0: Balance<BUCK>
30670CopyLoc[0](Arg0: &mut BucketProtocol)
30681MoveLoc[1](Arg1: u64)
30692Call mint_buck<Ty0>(&mut BucketProtocol, u64): Balance<BUCK>
30703StLoc[2](loc0: Balance<BUCK>)
30714MoveLoc[0](Arg0: &mut BucketProtocol)
30725Call borrow_pipe_mut<BUCK, Ty0>(&mut BucketProtocol): &mut Pipe<BUCK, Ty0>
30736MoveLoc[2](loc0: Balance<BUCK>)
30747Call pipe::output<BUCK, Ty0>(&mut Pipe<BUCK, Ty0>, Balance<BUCK>): OutputCarrier<BUCK, Ty0>
3078public input_buck<Ty0: drop>(Arg0: &mut BucketProtocol, Arg1: InputCarrier<BUCK, Ty0>) {
3079L2: loc0: Balance<BUCK>
30810CopyLoc[0](Arg0: &mut BucketProtocol)
30821Call borrow_pipe_mut<BUCK, Ty0>(&mut BucketProtocol): &mut Pipe<BUCK, Ty0>
30832MoveLoc[1](Arg1: InputCarrier<BUCK, Ty0>)
30843Call pipe::destroy_input_carrier<BUCK, Ty0>(&mut Pipe<BUCK, Ty0>, InputCarrier<BUCK, Ty0>): Balance<BUCK>
30854StLoc[2](loc0: Balance<BUCK>)
30865MoveLoc[0](Arg0: &mut BucketProtocol)
30876MoveLoc[2](loc0: Balance<BUCK>)
30887Call burn_buck<Ty0>(&mut BucketProtocol, Balance<BUCK>)
3092public is_buck<Ty0>(): bool {
30940Call type_name::with_defining_ids<Ty0>(): TypeName
30951Call type_name::with_defining_ids<BUCK>(): TypeName
3100public deposit_surplus_with_strap<Ty0>(Arg0: &mut BucketProtocol, Arg1: Balance<Ty0>, Arg2: &BottleStrap<Ty0>, Arg3: &mut TxContext) {
31040ImmBorrowLoc[1](Arg1: Balance<Ty0>)
31051Call balance::value<Ty0>(&Balance<Ty0>): u64
31073MoveLoc[2](Arg2: &BottleStrap<Ty0>)
31084Call strap::get_address<Ty0>(&BottleStrap<Ty0>): address
31095StLoc[5](loc1: address)
31106MoveLoc[0](Arg0: &mut BucketProtocol)
31117Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
31128MoveLoc[5](loc1: address)
31139MoveLoc[1](Arg1: Balance<Ty0>)
311410MoveLoc[3](Arg3: &mut TxContext)
311511Call bucket::handle_deposit_surplus<Ty0>(&mut Bucket<Ty0>, address, Balance<Ty0>, &mut TxContext)
311612MoveLoc[4](loc0: u64)
311713Call buck_events::emit_collateral_increased<Ty0>(u64)
3121public transfer_bottle<Ty0>(Arg0: &mut BucketProtocol, Arg1: &Clock, Arg2: address, Arg3: &TxContext) {
3122L4: loc0: &mut Bucket<Ty0>
31250MoveLoc[0](Arg0: &mut BucketProtocol)
31261Call borrow_bucket_mut<Ty0>(&mut BucketProtocol): &mut Bucket<Ty0>
31272StLoc[4](loc0: &mut Bucket<Ty0>)
31283MoveLoc[3](Arg3: &TxContext)
31294Call tx_context::sender(&TxContext): address
31305StLoc[5](loc1: address)
31316MoveLoc[4](loc0: &mut Bucket<Ty0>)
31327MoveLoc[5](loc1: address)
31338MoveLoc[2](Arg2: address)
31349MoveLoc[1](Arg1: &Clock)
313510Call bucket::handle_transfer<Ty0>(&mut Bucket<Ty0>, address, address, &Clock)
3159 19 => vector<u8>: "BUCK" // interpreted as UTF8 string
3160 20 => vector<u8>: "Bucket USD" // interpreted as UTF8 string
3161 21 => vector<u8>: "the stablecoin minted through bucketprotocol.io" // interpreted as UTF8 string
3162 22 => vector<u8>: "https://ipfs.io/ipfs/QmYH4seo7K9CiFqHGDmhbZmzewHEapAhN9aqLRA7af2vMW" // interpreted as UTF8 string
3163 23 => vector<u8>: "borrow" // interpreted as UTF8 string
3164 24 => vector<u8>: "redeem" // interpreted as UTF8 string
3165 25 => vector<u8>: "liquidate" // interpreted as UTF8 string
3166 26 => vector<u8>: "flashloan" // interpreted as UTF8 string
3167 27 => vector<u8>: "max_mint_amount" // interpreted as UTF8 string
3168 28 => vector<u8>: "min_bottle_size" // interpreted as UTF8 string
3169 29 => vector<u8>: "version" // interpreted as UTF8 string
3170 30 => vector<u8>: "fee_rate" // interpreted as UTF8 string
3171 31 => vector<u8>: "max_amount" // interpreted as UTF8 string
3172 32 => vector<u8>: "flashmint" // interpreted as UTF8 string
3173 33 => vector<u8>: "charge_fee_rate" // interpreted as UTF8 string
3174 34 => vector<u8>: "discharge_fee_rate" // interpreted as UTF8 string
3175 35 => vector<u8>: "charge" // interpreted as UTF8 string
3176 36 => vector<u8>: "discharge" // interpreted as UTF8 string
3177 37 => vector<u8>: "interest" // interpreted as UTF8 string
3178 38 => vector<u8>: "interest_rate" // interpreted as UTF8 string
3179 39 => vector<u8>: "min_collateral_ratio" // interpreted as UTF8 string
3180 40 => vector<u8>: "recovery_mode_threshold" // interpreted as UTF8 string
3181 41 => vector<u8>: "test_version" // interpreted as UTF8 string