Sui Framework::allowance bytecode | tide- Move path
- 0x0000…0002::allowance
- Functions
- 4027 public, 2 entry
- Structs
- 9
- Friend modules
- None
allowance
The on-chain disassembly. Offsets are bytecode positions within each function.
1// Move bytecode v7
2module 2.allowance {
3use 0000000000000000000000000000000000000000000000000000000000000001::internal;
4use 0000000000000000000000000000000000000000000000000000000000000001::option;
5use 0000000000000000000000000000000000000000000000000000000000000001::string;
6use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
7use 0000000000000000000000000000000000000000000000000000000000000001::u64;
8use 0000000000000000000000000000000000000000000000000000000000000002::balance;
9use 0000000000000000000000000000000000000000000000000000000000000002::clock;
10use 0000000000000000000000000000000000000000000000000000000000000002::funds_accumulator;
11use 0000000000000000000000000000000000000000000000000000000000000002::object;
12use 0000000000000000000000000000000000000000000000000000000000000002::protocol_config;
13use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
14use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
16struct AllowanceWithdrawal<phantom Ty0: store> has drop {
19 inner: Withdrawal<Ty0>
22struct Allowance<phantom Ty0> has key {
28struct Settings has drop, store {
30 spender: Option<address>,
31 app: Option<TypeName>,
32 lifetime_cap: Option<u256>,
33 start_timestamp_ms: Option<u64>,
34 expiration_timestamp_ms: Option<u64>,
35 rate_limit: Option<RateLimit>,
39struct AllowanceCap<phantom Ty0> has key {
44struct AllowanceProposal<phantom Ty0> has drop {
48struct SpendPermit<phantom Ty0> has drop {
52struct SettingsPermit<phantom Ty0> has drop {
56enum RateLimit has copy, drop, store {
57 Windowed { limit: u256, spent: u256, anchor_ms: Option<u64>, index: u64, window: Window }
60enum Window has copy, drop, store {
61 PeriodicMs { pos0: u64 },
62 CalendarMonths { pos0: u8 }
65public spend_permit<Ty0>(Arg0: Permit<Ty0>): SpendPermit<Ty0> {
681PackGeneric[0](SpendPermit<Ty0>)
72public settings_permit<Ty0>(Arg0: Permit<Ty0>): SettingsPermit<Ty0> {
751PackGeneric[1](SettingsPermit<Ty0>)
79public periodic_rate_limit(Arg0: u64, Arg1: u256): RateLimit {
874CopyLoc[1](Arg1: u256)
9611MoveLoc[2](loc0: bool)
10114LdU64(13837029148919201807)
10416MoveLoc[1](Arg1: u256)
10517MoveLoc[0](Arg0: u64)
10618PackVariant(VariantHandleIndex(0))
10719Call new_rate_limit(u256, Window): RateLimit
111public calendar_rate_limit(Arg0: u8, Arg1: u256): RateLimit {
1194CopyLoc[1](Arg1: u256)
12610StLoc[2](loc0: bool)
12811MoveLoc[2](loc0: bool)
13314LdU64(13837029183278940175)
13616MoveLoc[1](Arg1: u256)
13717MoveLoc[0](Arg0: u8)
13818PackVariant(VariantHandleIndex(1))
13919Call new_rate_limit(u256, Window): RateLimit
143public monthly_rate_limit(Arg0: u256): RateLimit {
1461MoveLoc[0](Arg0: u256)
1472Call calendar_rate_limit(u8, u256): RateLimit
151public quarterly_rate_limit(Arg0: u256): RateLimit {
1541MoveLoc[0](Arg0: u256)
1552Call calendar_rate_limit(u8, u256): RateLimit
159public yearly_rate_limit(Arg0: u256): RateLimit {
1621MoveLoc[0](Arg0: u256)
1632Call calendar_rate_limit(u8, u256): RateLimit
167entry new<Ty0>(Arg0: String, Arg1: address, Arg2: Option<u256>, Arg3: Option<u64>, Arg4: Option<u64>, Arg5: Option<RateLimit>, Arg6: &mut TxContext) {
1690CopyLoc[6](Arg6: &mut TxContext)
1712Call tx_context::sender(&TxContext): address
1723MoveLoc[1](Arg1: address)
1734Call option::none<TypeName>(): Option<TypeName>
1745MoveLoc[2](Arg2: Option<u256>)
1756MoveLoc[3](Arg3: Option<u64>)
1767MoveLoc[4](Arg4: Option<u64>)
1778MoveLoc[5](Arg5: Option<RateLimit>)
1789MoveLoc[0](Arg0: String)
17910Call new_settings(address, address, Option<TypeName>, Option<u256>, Option<u64>, Option<u64>, Option<RateLimit>, String): Settings
18011MoveLoc[6](Arg6: &mut TxContext)
18112Call share_new<Ty0>(Settings, &mut TxContext)
185entry propose_for_app<Ty0, Ty1>(Arg0: String, Arg1: address, Arg2: Option<u256>, Arg3: Option<u64>, Arg4: Option<u64>, Arg5: Option<RateLimit>, Arg6: &TxContext): AllowanceProposal<Ty0> {
1870MoveLoc[6](Arg6: &TxContext)
1881Call tx_context::sender(&TxContext): address
1892MoveLoc[1](Arg1: address)
1903Call type_name::with_defining_ids<Ty1>(): TypeName
1914Call option::some<TypeName>(TypeName): Option<TypeName>
1925MoveLoc[2](Arg2: Option<u256>)
1936MoveLoc[3](Arg3: Option<u64>)
1947MoveLoc[4](Arg4: Option<u64>)
1958MoveLoc[5](Arg5: Option<RateLimit>)
1969MoveLoc[0](Arg0: String)
19710Call new_settings(address, address, Option<TypeName>, Option<u256>, Option<u64>, Option<u64>, Option<RateLimit>, String): Settings
19811PackGeneric[2](AllowanceProposal<Ty0>)
202public issue<Ty0, Ty1>(Arg0: AllowanceProposal<Ty0>, Arg1: SettingsPermit<Ty1>, Arg2: &mut TxContext) {
204L4: loc1: &Option<TypeName>
2070MoveLoc[0](Arg0: AllowanceProposal<Ty0>)
2081UnpackGeneric[2](AllowanceProposal<Ty0>)
2092StLoc[5](loc2: Settings)
2103ImmBorrowLoc[5](loc2: Settings)
2114ImmBorrowField[0](Settings.app: Option<TypeName>)
2125StLoc[4](loc1: &Option<TypeName>)
2136Call type_name::with_defining_ids<Ty1>(): TypeName
2147StLoc[3](loc0: TypeName)
2158MoveLoc[4](loc1: &Option<TypeName>)
2169ImmBorrowLoc[3](loc0: TypeName)
21710Call option::contains<TypeName>(&Option<TypeName>, &TypeName): bool
22213MoveLoc[2](Arg2: &mut TxContext)
22415LdU64(13835340616885731331)
22717MoveLoc[5](loc2: Settings)
22818MoveLoc[2](Arg2: &mut TxContext)
22919Call share_new<Ty0>(Settings, &mut TxContext)
233public balance_spend<Ty0>(Arg0: &mut Allowance<Balance<Ty0>>, Arg1: AllowanceWithdrawal<Balance<Ty0>>, Arg2: &Clock, Arg3: &TxContext): Balance<Ty0> {
2350CopyLoc[0](Arg0: &mut Allowance<Balance<Ty0>>)
2361ImmBorrowFieldGeneric[0](Allowance.settings: Settings)
2372ImmBorrowField[0](Settings.app: Option<TypeName>)
2383Call option::is_none<TypeName>(&Option<TypeName>): bool
2436MoveLoc[0](Arg0: &mut Allowance<Balance<Ty0>>)
2458MoveLoc[3](Arg3: &TxContext)
24710MoveLoc[2](Arg2: &Clock)
24912LdU64(13837592472535040019)
25214MoveLoc[0](Arg0: &mut Allowance<Balance<Ty0>>)
25315MoveLoc[1](Arg1: AllowanceWithdrawal<Balance<Ty0>>)
25416MoveLoc[2](Arg2: &Clock)
25517MoveLoc[3](Arg3: &TxContext)
25618Call consume<Balance<Ty0>>(&mut Allowance<Balance<Ty0>>, AllowanceWithdrawal<Balance<Ty0>>, &Clock, &TxContext): Withdrawal<Balance<Ty0>>
25719Call balance::redeem_funds<Ty0>(Withdrawal<Balance<Ty0>>): Balance<Ty0>
261public app_balance_spend<Ty0, Ty1>(Arg0: &mut Allowance<Balance<Ty0>>, Arg1: SpendPermit<Ty1>, Arg2: AllowanceWithdrawal<Balance<Ty0>>, Arg3: &Clock, Arg4: &TxContext): Balance<Ty0> {
2630CopyLoc[0](Arg0: &mut Allowance<Balance<Ty0>>)
2652Call assert_app<Balance<Ty0>, Ty1>(&Allowance<Balance<Ty0>>)
2663MoveLoc[0](Arg0: &mut Allowance<Balance<Ty0>>)
2674MoveLoc[2](Arg2: AllowanceWithdrawal<Balance<Ty0>>)
2685MoveLoc[3](Arg3: &Clock)
2696MoveLoc[4](Arg4: &TxContext)
2707Call consume<Balance<Ty0>>(&mut Allowance<Balance<Ty0>>, AllowanceWithdrawal<Balance<Ty0>>, &Clock, &TxContext): Withdrawal<Balance<Ty0>>
2718Call balance::redeem_funds<Ty0>(Withdrawal<Balance<Ty0>>): Balance<Ty0>
275public revoke<Ty0>(Arg0: AllowanceCap<Ty0>, Arg1: Allowance<Ty0>) {
2790MoveLoc[0](Arg0: AllowanceCap<Ty0>)
2801UnpackGeneric[3](AllowanceCap<Ty0>)
2845ImmBorrowLoc[1](Arg1: Allowance<Ty0>)
2856ImmBorrowFieldGeneric[1](Allowance.id: UID)
2867Call object::uid_to_inner(&UID): ID
29211LdU64(13838155508388069399)
29513MoveLoc[1](Arg1: Allowance<Ty0>)
29614UnpackGeneric[4](Allowance<Ty0>)
29917Call object::delete(UID)
30018MoveLoc[3](loc1: UID)
30119Call object::delete(UID)
305public rotate_spender<Ty0, Ty1>(Arg0: &mut Allowance<Ty0>, Arg1: SettingsPermit<Ty1>, Arg2: address) {
3070CopyLoc[0](Arg0: &mut Allowance<Ty0>)
3092Call assert_app<Ty0, Ty1>(&Allowance<Ty0>)
3103MoveLoc[2](Arg2: address)
3114Call option::some<address>(address): Option<address>
3125MoveLoc[0](Arg0: &mut Allowance<Ty0>)
3136MutBorrowFieldGeneric[2](Allowance.settings: Settings)
3147MutBorrowField[3](Settings.spender: Option<address>)
319public allowance_settings<Ty0>(Arg0: &Allowance<Ty0>): &Settings {
3210MoveLoc[0](Arg0: &Allowance<Ty0>)
3221ImmBorrowFieldGeneric[2](Allowance.settings: Settings)
326public allowance_current_spend<Ty0>(Arg0: &Allowance<Ty0>): u256 {
3280MoveLoc[0](Arg0: &Allowance<Ty0>)
3291ImmBorrowFieldGeneric[3](Allowance.current_spend: u256)
334public allowance_cap_allowance<Ty0>(Arg0: &AllowanceCap<Ty0>): ID {
3360MoveLoc[0](Arg0: &AllowanceCap<Ty0>)
3371ImmBorrowFieldGeneric[4](AllowanceCap.allowance: ID)
342public allowance_proposal_settings<Ty0>(Arg0: &AllowanceProposal<Ty0>): &Settings {
3440MoveLoc[0](Arg0: &AllowanceProposal<Ty0>)
3451ImmBorrowFieldGeneric[5](AllowanceProposal.pos0: Settings)
349public funder(Arg0: &Settings): address {
3510MoveLoc[0](Arg0: &Settings)
3521ImmBorrowField[7](Settings.funder: address)
357public spender(Arg0: &Settings): Option<address> {
3590MoveLoc[0](Arg0: &Settings)
3601ImmBorrowField[3](Settings.spender: Option<address>)
365public app(Arg0: &Settings): Option<TypeName> {
3670MoveLoc[0](Arg0: &Settings)
3681ImmBorrowField[0](Settings.app: Option<TypeName>)
373public lifetime_cap(Arg0: &Settings): Option<u256> {
3750MoveLoc[0](Arg0: &Settings)
3761ImmBorrowField[8](Settings.lifetime_cap: Option<u256>)
381public start_timestamp_ms(Arg0: &Settings): Option<u64> {
3830MoveLoc[0](Arg0: &Settings)
3841ImmBorrowField[9](Settings.start_timestamp_ms: Option<u64>)
389public expiration_timestamp_ms(Arg0: &Settings): Option<u64> {
3910MoveLoc[0](Arg0: &Settings)
3921ImmBorrowField[10](Settings.expiration_timestamp_ms: Option<u64>)
397public rate_limit(Arg0: &Settings): Option<RateLimit> {
3990MoveLoc[0](Arg0: &Settings)
4001ImmBorrowField[11](Settings.rate_limit: Option<RateLimit>)
405public name(Arg0: &Settings): &String {
4070MoveLoc[0](Arg0: &Settings)
4081ImmBorrowField[12](Settings.name: String)
412public rate_limit_limit(Arg0: &RateLimit): u256 {
4160MoveLoc[0](Arg0: &RateLimit)
4171StLoc[2](loc1: &RateLimit)
4182CopyLoc[2](loc1: &RateLimit)
4193StLoc[1](loc0: &RateLimit)
4204CopyLoc[1](loc0: &RateLimit)
4215VariantSwitch(VariantJumpTableIndex(0))
4236MoveLoc[1](loc0: &RateLimit)
4247UnpackVariantImmRef(VariantHandleIndex(2))
43013MoveLoc[2](loc1: &RateLimit)
43114UnpackVariantImmRef(VariantHandleIndex(2))
439[0]: variant_switch RateLimit {
444public rate_limit_spent(Arg0: &RateLimit): u256 {
4490MoveLoc[0](Arg0: &RateLimit)
4501StLoc[3](loc2: &RateLimit)
4512CopyLoc[3](loc2: &RateLimit)
4523StLoc[1](loc0: &RateLimit)
4534CopyLoc[1](loc0: &RateLimit)
4545VariantSwitch(VariantJumpTableIndex(0))
4566MoveLoc[1](loc0: &RateLimit)
4577UnpackVariantImmRef(VariantHandleIndex(2))
46313MoveLoc[3](loc2: &RateLimit)
46414UnpackVariantImmRef(VariantHandleIndex(2))
46818StLoc[2](loc1: &u256)
47020MoveLoc[2](loc1: &u256)
474[0]: variant_switch RateLimit {
479public rate_limit_window(Arg0: &RateLimit): Window {
4840MoveLoc[0](Arg0: &RateLimit)
4851StLoc[2](loc1: &RateLimit)
4862CopyLoc[2](loc1: &RateLimit)
4873StLoc[1](loc0: &RateLimit)
4884CopyLoc[1](loc0: &RateLimit)
4895VariantSwitch(VariantJumpTableIndex(0))
4916MoveLoc[1](loc0: &RateLimit)
4927UnpackVariantImmRef(VariantHandleIndex(2))
49813MoveLoc[2](loc1: &RateLimit)
49914UnpackVariantImmRef(VariantHandleIndex(2))
50015StLoc[3](loc2: &Window)
50520MoveLoc[3](loc2: &Window)
509[0]: variant_switch RateLimit {
514public(friend) civil_from_ms(Arg0: u64): u64 * u64 * u64 {
5250MoveLoc[0](Arg0: u64)
5261LdConst[37](u64: 8640..)
5316CopyLoc[9](loc8: u64)
53510MoveLoc[9](loc8: u64)
53914CopyLoc[4](loc3: u64)
54015CopyLoc[4](loc3: u64)
54419CopyLoc[4](loc3: u64)
54823CopyLoc[4](loc3: u64)
55530MoveLoc[4](loc3: u64)
55732CopyLoc[8](loc7: u64)
55934CopyLoc[8](loc7: u64)
56338CopyLoc[8](loc7: u64)
57045CopyLoc[5](loc4: u64)
57752MoveLoc[5](loc4: u64)
57954CopyLoc[7](loc6: u64)
58964CopyLoc[7](loc6: u64)
59468MoveLoc[6](loc5: u64)
59771MoveLoc[8](loc7: u64)
59973MoveLoc[7](loc6: u64)
60679MoveLoc[6](loc5: u64)
60982MoveLoc[8](loc7: u64)
61386MoveLoc[7](loc6: u64)
61991MoveLoc[1](loc0: u64)
62092MoveLoc[2](loc1: u64)
62193MoveLoc[3](loc2: u64)
625public(friend) days_in_month(Arg0: u64, Arg1: u64): u64 {
6350MoveLoc[1](Arg1: u64)
6372ImmBorrowLoc[9](loc7: u64)
6394CopyLoc[8](loc6: &u64)
6459MoveLoc[8](loc6: &u64)
64711MoveLoc[0](Arg0: u64)
64812Call is_leap_year(u64): bool
65819MoveLoc[2](loc0: u64)
66222CopyLoc[8](loc6: &u64)
66827MoveLoc[8](loc6: &u64)
67432CopyLoc[8](loc6: &u64)
68037MoveLoc[8](loc6: &u64)
68642CopyLoc[8](loc6: &u64)
69247MoveLoc[8](loc6: &u64)
69852MoveLoc[8](loc6: &u64)
71162MoveLoc[3](loc1: u64)
71464MoveLoc[4](loc2: u64)
71766MoveLoc[5](loc3: u64)
72068MoveLoc[6](loc4: u64)
72370MoveLoc[7](loc5: u64)
727assert_app<Ty0, Ty1>(Arg0: &Allowance<Ty0>) {
7300Call type_name::with_defining_ids<Ty1>(): TypeName
7311StLoc[1](loc0: TypeName)
7322MoveLoc[0](Arg0: &Allowance<Ty0>)
7333ImmBorrowFieldGeneric[2](Allowance.settings: Settings)
7344ImmBorrowField[0](Settings.app: Option<TypeName>)
7355ImmBorrowLoc[1](loc0: TypeName)
7366Call option::contains<TypeName>(&Option<TypeName>, &TypeName): bool
7419LdU64(13835341183821414403)
747consume<Ty0: store>(Arg0: &mut Allowance<Ty0>, Arg1: AllowanceWithdrawal<Ty0>, Arg2: &Clock, Arg3: &TxContext): Withdrawal<Ty0> {
749L5: loc1: &Option<address>
753L9: loc5: Withdrawal<Ty0>
757L13: loc9: &Option<u64>
758L14: loc10: &Option<u64>
759L15: loc11: &Option<u256>
760L16: loc12: &mut Option<RateLimit>
7630MoveLoc[1](Arg1: AllowanceWithdrawal<Ty0>)
7641UnpackGeneric[5](AllowanceWithdrawal<Ty0>)
7652StLoc[9](loc5: Withdrawal<Ty0>)
7663StLoc[10](loc6: bool)
7685MoveLoc[10](loc6: bool)
7749MoveLoc[0](Arg0: &mut Allowance<Ty0>)
77611MoveLoc[3](Arg3: &TxContext)
77813MoveLoc[2](Arg2: &Clock)
78015LdU64(13839844834990489635)
78317MoveLoc[6](loc2: ID)
78418CopyLoc[0](Arg0: &mut Allowance<Ty0>)
78519ImmBorrowFieldGeneric[1](Allowance.id: UID)
78620Call object::uid_to_inner(&UID): ID
79224MoveLoc[0](Arg0: &mut Allowance<Ty0>)
79426MoveLoc[3](Arg3: &TxContext)
79628MoveLoc[2](Arg2: &Clock)
79830LdU64(13836748614540197901)
80132CopyLoc[0](Arg0: &mut Allowance<Ty0>)
80233ImmBorrowFieldGeneric[2](Allowance.settings: Settings)
80334ImmBorrowField[3](Settings.spender: Option<address>)
80435StLoc[5](loc1: &Option<address>)
80536MoveLoc[3](Arg3: &TxContext)
80637Call tx_context::sender(&TxContext): address
80738StLoc[4](loc0: address)
80839MoveLoc[5](loc1: &Option<address>)
80940ImmBorrowLoc[4](loc0: address)
81041Call option::contains<address>(&Option<address>, &address): bool
81544MoveLoc[0](Arg0: &mut Allowance<Ty0>)
81746MoveLoc[2](Arg2: &Clock)
81948LdU64(13835059768974114817)
82250ImmBorrowLoc[9](loc5: Withdrawal<Ty0>)
82351Call funds_accumulator::withdrawal_owner<Ty0>(&Withdrawal<Ty0>): address
82452CopyLoc[0](Arg0: &mut Allowance<Ty0>)
82553ImmBorrowFieldGeneric[2](Allowance.settings: Settings)
82654ImmBorrowField[7](Settings.funder: address)
83359MoveLoc[0](Arg0: &mut Allowance<Ty0>)
83561MoveLoc[2](Arg2: &Clock)
83763LdU64(13837874527332466709)
84065ImmBorrowLoc[9](loc5: Withdrawal<Ty0>)
84166Call funds_accumulator::withdrawal_limit<Ty0>(&Withdrawal<Ty0>): u256
84267StLoc[7](loc3: u256)
84368MoveLoc[2](Arg2: &Clock)
84469Call clock::timestamp_ms(&Clock): u64
84570StLoc[12](loc8: u64)
84671CopyLoc[0](Arg0: &mut Allowance<Ty0>)
84772ImmBorrowFieldGeneric[2](Allowance.settings: Settings)
84873ImmBorrowField[9](Settings.start_timestamp_ms: Option<u64>)
84974StLoc[13](loc9: &Option<u64>)
85075CopyLoc[13](loc9: &Option<u64>)
85176Call option::is_some<u64>(&Option<u64>): bool
85478MoveLoc[13](loc9: &Option<u64>)
85579Call option::borrow<u64>(&Option<u64>): &u64
85680StLoc[17](loc13: &u64)
85781CopyLoc[12](loc8: u64)
85882MoveLoc[17](loc13: &u64)
86587MoveLoc[0](Arg0: &mut Allowance<Ty0>)
86789LdU64(13837311598853619729)
87091MoveLoc[13](loc9: &Option<u64>)
87393CopyLoc[0](Arg0: &mut Allowance<Ty0>)
87494ImmBorrowFieldGeneric[2](Allowance.settings: Settings)
87595ImmBorrowField[10](Settings.expiration_timestamp_ms: Option<u64>)
87696StLoc[14](loc10: &Option<u64>)
87797CopyLoc[14](loc10: &Option<u64>)
87898Call option::is_some<u64>(&Option<u64>): bool
881100MoveLoc[14](loc10: &Option<u64>)
882101Call option::borrow<u64>(&Option<u64>): &u64
883102StLoc[8](loc4: &u64)
884103CopyLoc[12](loc8: u64)
885104MoveLoc[8](loc4: &u64)
892109MoveLoc[0](Arg0: &mut Allowance<Ty0>)
894111LdU64(13835622766172438533)
897113MoveLoc[14](loc10: &Option<u64>)
900115CopyLoc[0](Arg0: &mut Allowance<Ty0>)
901116ImmBorrowFieldGeneric[3](Allowance.current_spend: u256)
903118CopyLoc[7](loc3: u256)
905120CopyLoc[0](Arg0: &mut Allowance<Ty0>)
906121MutBorrowFieldGeneric[3](Allowance.current_spend: u256)
908123CopyLoc[0](Arg0: &mut Allowance<Ty0>)
909124ImmBorrowFieldGeneric[2](Allowance.settings: Settings)
910125ImmBorrowField[8](Settings.lifetime_cap: Option<u256>)
911126StLoc[15](loc11: &Option<u256>)
912127CopyLoc[15](loc11: &Option<u256>)
913128Call option::is_some<u256>(&Option<u256>): bool
916130MoveLoc[15](loc11: &Option<u256>)
917131Call option::borrow<u256>(&Option<u256>): &u256
918132StLoc[11](loc7: &u256)
919133CopyLoc[0](Arg0: &mut Allowance<Ty0>)
920134ImmBorrowFieldGeneric[3](Allowance.current_spend: u256)
922136MoveLoc[11](loc7: &u256)
929141MoveLoc[0](Arg0: &mut Allowance<Ty0>)
931143LdU64(13835904262624116743)
934145MoveLoc[15](loc11: &Option<u256>)
937147MoveLoc[0](Arg0: &mut Allowance<Ty0>)
938148MutBorrowFieldGeneric[2](Allowance.settings: Settings)
939149MutBorrowField[11](Settings.rate_limit: Option<RateLimit>)
940150StLoc[16](loc12: &mut Option<RateLimit>)
941151CopyLoc[16](loc12: &mut Option<RateLimit>)
943153Call option::is_some<RateLimit>(&Option<RateLimit>): bool
946155MoveLoc[16](loc12: &mut Option<RateLimit>)
947156Call option::borrow_mut<RateLimit>(&mut Option<RateLimit>): &mut RateLimit
948157MoveLoc[7](loc3: u256)
949158MoveLoc[12](loc8: u64)
950159Call charge(&mut RateLimit, u256, u64)
953161MoveLoc[16](loc12: &mut Option<RateLimit>)
956163MoveLoc[9](loc5: Withdrawal<Ty0>)
960new_rate_limit(Arg0: u256, Arg1: Window): RateLimit {
9620MoveLoc[0](Arg0: u256)
9642Call option::none<u64>(): Option<u64>
9664MoveLoc[1](Arg1: Window)
9675PackVariant(VariantHandleIndex(2))
971charge(Arg0: &mut RateLimit, Arg1: u256, Arg2: u64) {
972L3: loc0: &mut Option<u64>
976L7: loc4: &mut RateLimit
978L9: loc6: &mut Option<u64>
983L14: loc11: &mut Window
9850MoveLoc[0](Arg0: &mut RateLimit)
9861StLoc[7](loc4: &mut RateLimit)
9872CopyLoc[7](loc4: &mut RateLimit)
9894StLoc[5](loc2: &RateLimit)
9905CopyLoc[5](loc2: &RateLimit)
9916VariantSwitch(VariantJumpTableIndex(0))
9937MoveLoc[5](loc2: &RateLimit)
9948UnpackVariantImmRef(VariantHandleIndex(2))
100014MoveLoc[7](loc4: &mut RateLimit)
100115UnpackVariantMutRef(VariantHandleIndex(2))
100216StLoc[8](loc5: &mut Window)
100317StLoc[4](loc1: &mut u64)
100418StLoc[3](loc0: &mut Option<u64>)
100519StLoc[6](loc3: &mut u256)
100620StLoc[12](loc9: &mut u256)
100721MoveLoc[6](loc3: &mut u256)
100822StLoc[13](loc10: &mut u256)
100923MoveLoc[3](loc0: &mut Option<u64>)
101024StLoc[9](loc6: &mut Option<u64>)
101125MoveLoc[4](loc1: &mut u64)
101226StLoc[11](loc8: &mut u64)
101327MoveLoc[8](loc5: &mut Window)
101428StLoc[14](loc11: &mut Window)
101529CopyLoc[9](loc6: &mut Option<u64>)
101731Call option::is_some<u64>(&Option<u64>): bool
102033MoveLoc[14](loc11: &mut Window)
102235MoveLoc[9](loc6: &mut Option<u64>)
102437Call option::borrow<u64>(&Option<u64>): &u64
102639MoveLoc[2](Arg2: u64)
102740Call index_at(&Window, u64, u64): u64
102841StLoc[10](loc7: u64)
102942CopyLoc[10](loc7: u64)
103043CopyLoc[11](loc8: &mut u64)
103547MoveLoc[10](loc7: u64)
103648MoveLoc[11](loc8: &mut u64)
103951CopyLoc[13](loc10: &mut u256)
104354MoveLoc[11](loc8: &mut u64)
104757MoveLoc[14](loc11: &mut Window)
104959MoveLoc[11](loc8: &mut u64)
105161MoveLoc[2](Arg2: u64)
105262Call option::some<u64>(u64): Option<u64>
105363MoveLoc[9](loc6: &mut Option<u64>)
105665CopyLoc[13](loc10: &mut u256)
105867MoveLoc[1](Arg1: u256)
106069CopyLoc[13](loc10: &mut u256)
106271MoveLoc[13](loc10: &mut u256)
106473MoveLoc[12](loc9: &mut u256)
107178LdU64(13836185853565075465)
1076[0]: variant_switch RateLimit {
1081index_at(Arg0: &Window, Arg1: u64, Arg2: u64): u64 {
10880MoveLoc[0](Arg0: &Window)
10891StLoc[5](loc2: &Window)
10902CopyLoc[5](loc2: &Window)
10913StLoc[4](loc1: &Window)
10924CopyLoc[4](loc1: &Window)
10935VariantSwitch(VariantJumpTableIndex(0))
10956MoveLoc[4](loc1: &Window)
10967UnpackVariantImmRef(VariantHandleIndex(0))
10989MoveLoc[5](loc2: &Window)
109910UnpackVariantImmRef(VariantHandleIndex(0))
110011StLoc[7](loc4: &u64)
110112MoveLoc[2](Arg2: u64)
110213MoveLoc[1](Arg1: u64)
110415MoveLoc[7](loc4: &u64)
110718StLoc[3](loc0: u64)
111020MoveLoc[4](loc1: &Window)
111121UnpackVariantImmRef(VariantHandleIndex(1))
111323MoveLoc[5](loc2: &Window)
111424UnpackVariantImmRef(VariantHandleIndex(1))
111525StLoc[6](loc3: &u8)
111626MoveLoc[1](Arg1: u64)
111727MoveLoc[2](Arg2: u64)
111828MoveLoc[6](loc3: &u8)
112030Call elapsed_windows(u64, u64, u8): u64
112131StLoc[3](loc0: u64)
112332MoveLoc[3](loc0: u64)
1126[0]: variant_switch Window {
1132elapsed_windows(Arg0: u64, Arg1: u64, Arg2: u8): u64 {
11420MoveLoc[0](Arg0: u64)
11431Call civil_from_ms(u64): u64 * u64 * u64
11475MoveLoc[1](Arg1: u64)
11486Call civil_from_ms(u64): u64 * u64 * u64
11519StLoc[10](loc7: u64)
115210CopyLoc[10](loc7: u64)
115513CopyLoc[9](loc6: u64)
115715MoveLoc[6](loc3: u64)
116018MoveLoc[5](loc2: u64)
116321StLoc[8](loc5: u64)
116422CopyLoc[8](loc5: u64)
116926MoveLoc[7](loc4: u64)
117027MoveLoc[4](loc1: u64)
117128MoveLoc[10](loc7: u64)
117229MoveLoc[9](loc6: u64)
117330Call days_in_month(u64, u64): u64
117431Call u64::min(u64, u64): u64
117633StLoc[3](loc0: bool)
118036StLoc[3](loc0: bool)
118237MoveLoc[3](loc0: bool)
118539MoveLoc[8](loc5: u64)
118842StLoc[8](loc5: u64)
119043MoveLoc[8](loc5: u64)
119144MoveLoc[2](Arg2: u8)
1197is_leap_year(Arg0: u64): bool {
12010CopyLoc[0](Arg0: u64)
12086CopyLoc[0](Arg0: u64)
121613StLoc[2](loc1: bool)
121915MoveLoc[0](Arg0: u64)
122420StLoc[2](loc1: bool)
122621MoveLoc[2](loc1: bool)
122722StLoc[1](loc0: bool)
123125StLoc[1](loc0: bool)
123326MoveLoc[1](loc0: bool)
1237new_settings(Arg0: address, Arg1: address, Arg2: Option<TypeName>, Arg3: Option<u256>, Arg4: Option<u64>, Arg5: Option<u64>, Arg6: Option<RateLimit>, Arg7: String): Settings {
1241L11: loc3: &Option<u256>
12430LdConst[38](vector<u8>: "ena..)
12441Call protocol_config::is_feature_enabled(vector<u8>): bool
12494LdU64(13839563729380835361)
12526ImmBorrowLoc[3](Arg3: Option<u256>)
12537Call option::is_some<u256>(&Option<u256>): bool
125710StLoc[8](loc0: bool)
126012ImmBorrowLoc[6](Arg6: Option<RateLimit>)
126113Call option::is_some<RateLimit>(&Option<RateLimit>): bool
126214StLoc[8](loc0: bool)
126415MoveLoc[8](loc0: bool)
126918LdU64(13836467508930543627)
127220ImmBorrowLoc[5](Arg5: Option<u64>)
127321Call option::is_some<u64>(&Option<u64>): bool
127724StLoc[9](loc1: bool)
128026ImmBorrowLoc[6](Arg6: Option<RateLimit>)
128127Call option::is_some<RateLimit>(&Option<RateLimit>): bool
128228StLoc[9](loc1: bool)
128429MoveLoc[9](loc1: bool)
128932LdU64(13839282262993928223)
129234ImmBorrowLoc[7](Arg7: String)
129335Call string::length(&String): u64
129436LdConst[36](u64: 128)
130040LdU64(13838437842358370329)
130342ImmBorrowLoc[3](Arg3: Option<u256>)
130443StLoc[11](loc3: &Option<u256>)
130544CopyLoc[11](loc3: &Option<u256>)
130645Call option::is_some<u256>(&Option<u256>): bool
130947MoveLoc[11](loc3: &Option<u256>)
131048Call option::borrow<u256>(&Option<u256>): &u256
131854LdU64(13838719321630179355)
132156MoveLoc[11](loc3: &Option<u256>)
132458ImmBorrowLoc[4](Arg4: Option<u64>)
132559Call option::is_some<u64>(&Option<u64>): bool
132861ImmBorrowLoc[5](Arg5: Option<u64>)
132962Call option::is_some<u64>(&Option<u64>): bool
133063StLoc[10](loc2: bool)
133466StLoc[10](loc2: bool)
133667MoveLoc[10](loc2: bool)
133969ImmBorrowLoc[4](Arg4: Option<u64>)
134070Call option::borrow<u64>(&Option<u64>): &u64
134272ImmBorrowLoc[5](Arg5: Option<u64>)
134373Call option::borrow<u64>(&Option<u64>): &u64
135078LdU64(13839000809491922973)
135380MoveLoc[0](Arg0: address)
135481MoveLoc[1](Arg1: address)
135582Call option::some<address>(address): Option<address>
135683MoveLoc[2](Arg2: Option<TypeName>)
135784MoveLoc[3](Arg3: Option<u256>)
135885MoveLoc[4](Arg4: Option<u64>)
135986MoveLoc[5](Arg5: Option<u64>)
136087MoveLoc[6](Arg6: Option<RateLimit>)
136188MoveLoc[7](Arg7: String)
1366share_new<Ty0>(Arg0: Settings, Arg1: &mut TxContext) {
1367L2: loc0: Allowance<Ty0>
13700ImmBorrowLoc[0](Arg0: Settings)
13711ImmBorrowField[7](Settings.funder: address)
13733StLoc[3](loc1: address)
13744CopyLoc[1](Arg1: &mut TxContext)
13755Call object::new(&mut TxContext): UID
13766MoveLoc[0](Arg0: Settings)
13788PackGeneric[4](Allowance<Ty0>)
13799StLoc[2](loc0: Allowance<Ty0>)
138010MoveLoc[1](Arg1: &mut TxContext)
138111Call object::new(&mut TxContext): UID
138212ImmBorrowLoc[2](loc0: Allowance<Ty0>)
138313ImmBorrowFieldGeneric[1](Allowance.id: UID)
138414Call object::uid_to_inner(&UID): ID
138515PackGeneric[3](AllowanceCap<Ty0>)
138616MoveLoc[3](loc1: address)
138717Call transfer::transfer<AllowanceCap<Ty0>>(AllowanceCap<Ty0>, address)
138818MoveLoc[2](loc0: Allowance<Ty0>)
138919Call transfer::share_object<Allowance<Ty0>>(Allowance<Ty0>)
1394 0 => vector<u8>: "ENotSpender" // interpreted as UTF8 string
1395 1 => vector<u8>: "Transaction sender is not this allowance's spender" // interpreted as UTF8 string
1396 2 => vector<u8>: "EWrongApp" // interpreted as UTF8 string
1397 3 => vector<u8>: "Allowance is not bound to this app" // interpreted as UTF8 string
1398 4 => vector<u8>: "EExpired" // interpreted as UTF8 string
1399 5 => vector<u8>: "Allowance has expired" // interpreted as UTF8 string
1400 6 => vector<u8>: "EExceedsLifetimeCap" // interpreted as UTF8 string
1401 7 => vector<u8>: "Spend would exceed the lifetime cap" // interpreted as UTF8 string
1402 8 => vector<u8>: "EExceedsRateLimit" // interpreted as UTF8 string
1403 9 => vector<u8>: "Spend would exceed the current rate-limit window" // interpreted as UTF8 string
1404 10 => vector<u8>: "ENoLimit" // interpreted as UTF8 string
1405 11 => vector<u8>: "Allowance must have a lifetime cap or a rate limit" // interpreted as UTF8 string
1406 12 => vector<u8>: "EWrongAllowance" // interpreted as UTF8 string
1407 13 => vector<u8>: "Withdrawal was issued for a different allowance" // interpreted as UTF8 string
1408 14 => vector<u8>: "EBadRateLimit" // interpreted as UTF8 string
1409 15 => vector<u8>: "Rate limit needs a positive period and limit" // interpreted as UTF8 string
1410 16 => vector<u8>: "ENotStarted" // interpreted as UTF8 string
1411 17 => vector<u8>: "Allowance is not active yet; it has a future start timestamp" // interpreted as UTF8 string
1412 18 => vector<u8>: "EHasApp" // interpreted as UTF8 string
1413 19 => vector<u8>: "App-bound allowance: spend through `app_balance_spend`" // interpreted as UTF8 string
1414 20 => vector<u8>: "EWrongFunder" // interpreted as UTF8 string
1415 21 => vector<u8>: "Withdrawal debits a different address than this allowance's funder" // interpreted as UTF8 string
1416 22 => vector<u8>: "EWrongCap" // interpreted as UTF8 string
1417 23 => vector<u8>: "Cap does not match this allowance" // interpreted as UTF8 string
1418 24 => vector<u8>: "ENameTooLong" // interpreted as UTF8 string
1419 25 => vector<u8>: "Name exceeds the 128-byte limit" // interpreted as UTF8 string
1420 26 => vector<u8>: "EZeroLifetimeCap" // interpreted as UTF8 string
1421 27 => vector<u8>: "Lifetime cap must be greater than zero" // interpreted as UTF8 string
1422 28 => vector<u8>: "EBadTimeWindow" // interpreted as UTF8 string
1423 29 => vector<u8>: "Expiration must be after the start time" // interpreted as UTF8 string
1424 30 => vector<u8>: "ENoExpiration" // interpreted as UTF8 string
1425 31 => vector<u8>: "Allowance must have an expiration or a rate limit" // interpreted as UTF8 string
1426 32 => vector<u8>: "ENotEnabled" // interpreted as UTF8 string
1427 33 => vector<u8>: "Allowances are not enabled" // interpreted as UTF8 string
1428 34 => vector<u8>: "ESponsorWithdrawalNotEnabled" // interpreted as UTF8 string
1429 35 => vector<u8>: "Sponsor allowance withdrawals are not enabled" // interpreted as UTF8 string
1432 38 => vector<u8>: "enable_allowances" // interpreted as UTF8 string