@@ -101,19 +101,44 @@ func (a *fevmActions) SPPlusSetPersonalCashBackPercent(ctx context.Context, auth
101101 return util .TxPostProcess (tx , err )
102102}
103103
104- func (a * fevmActions ) SPPlusFundGLFVault (ctx context.Context , auth * bind.TransactOpts , tokenID * big.Int , amount * big.Int ) (* types.Transaction , error ) {
104+ func (a * fevmActions ) SPPlusFundGLFVault (ctx context.Context , auth * bind.TransactOpts , tokenID * big.Int , amount * big.Int , cashBackPercent * big. Int ) (* types.Transaction , error ) {
105105 client , err := a .extern .ConnectEthClient ()
106106 if err != nil {
107107 return nil , err
108108 }
109109 defer client .Close ()
110110
111+ // if the cashback percent is not provided, we use the existing cash back percent on the tokenID
112+ // if this is the first time funding the GLF vault (implied by a personal cash back percent of 0), we use the max cash back percent
113+ if cashBackPercent == nil {
114+ caller , err := abigen .NewSPPlusCaller (a .queries .SPPlus (), client )
115+ if err != nil {
116+ return nil , err
117+ }
118+
119+ opts := & bind.CallOpts {Context : ctx }
120+
121+ personalCashBackPercent , err := caller .TokenIdToPersonalCashBackPercent (opts , tokenID )
122+ if err != nil {
123+ return nil , err
124+ }
125+
126+ if personalCashBackPercent .Cmp (big .NewInt (0 )) == 0 {
127+ cashBackPercent , err = caller .MaxCashBackPercent (opts )
128+ if err != nil {
129+ return nil , err
130+ }
131+ } else {
132+ cashBackPercent = personalCashBackPercent
133+ }
134+ }
135+
111136 plus , err := abigen .NewSPPlusTransactor (a .queries .SPPlus (), client )
112137 if err != nil {
113138 return nil , err
114139 }
115140
116- tx , err := plus .FundGlfVault (auth , tokenID , amount )
141+ tx , err := plus .FundGlfVault0 (auth , tokenID , amount , cashBackPercent )
117142
118143 return util .TxPostProcess (tx , err )
119144}
0 commit comments