@@ -331,8 +331,18 @@ const loanCreate = {
331331 ) => {
332332 log ( 'loanEstGas' , llamma . collateralSymbol , collateral , debt , n , maxSlippage )
333333 const resp = { activeKey, isApproved : false , estimatedGas : initialGas , error : '' }
334+ const userBorrowed = '0' // hardcode to zero as that's not displayed in the form
334335
335336 try {
337+ if ( isLeverage && hasV2Leverage ( llamma ) ) {
338+ await llamma . leverageV2 . createLoanExpectedCollateral ( collateral , userBorrowed , debt , + maxSlippage )
339+ resp . isApproved = await llamma . leverageV2 . createLoanIsApproved ( collateral , userBorrowed )
340+ resp . estimatedGas = resp . isApproved
341+ ? await llamma . leverageV2 . estimateGas . createLoan ( collateral , userBorrowed , debt , n , + maxSlippage )
342+ : await llamma . leverageV2 . estimateGas . createLoanApprove ( collateral , userBorrowed )
343+ return resp
344+ }
345+
336346 resp . isApproved = isLeverage
337347 ? await llamma . leverage . createLoanIsApproved ( collateral )
338348 : await llamma . createLoanIsApproved ( collateral )
@@ -390,8 +400,54 @@ const loanCreate = {
390400 maxSlippage : string ,
391401 ) => {
392402 log ( 'detailInfoLeverage' , llamma . collateralSymbol , userCollateral , debt , n , maxSlippage )
403+ const userBorrowed = '0' // hardcode to zero as that's not displayed in the form
393404
394405 try {
406+ if ( hasV2Leverage ( llamma ) ) {
407+ // Expected collateral must run first to populate swap data cache used by other calls
408+ const expectedCollateralResult = await llamma . leverageV2 . createLoanExpectedCollateral (
409+ userCollateral ,
410+ userBorrowed ,
411+ debt ,
412+ + maxSlippage ,
413+ )
414+ const [
415+ maxRangeResult ,
416+ loanBandsResult ,
417+ loanPricesResult ,
418+ loanHealthFullResult ,
419+ loanHealthNotFullResult ,
420+ priceImpactResult ,
421+ ] = await Promise . allSettled ( [
422+ llamma . leverageV2 . createLoanMaxRange ( userCollateral , userBorrowed , debt ) ,
423+ llamma . leverageV2 . createLoanBands ( userCollateral , userBorrowed , debt , n ) ,
424+ llamma . leverageV2 . createLoanPrices ( userCollateral , userBorrowed , debt , n ) ,
425+ llamma . leverageV2 . createLoanHealth ( userCollateral , userBorrowed , debt , n , true ) ,
426+ llamma . leverageV2 . createLoanHealth ( userCollateral , userBorrowed , debt , n , false ) ,
427+ llamma . leverageV2 . createLoanPriceImpact ( userBorrowed , debt ) ,
428+ ] )
429+
430+ const expectedCollateral = expectedCollateralResult
431+ const priceImpact = fulfilledValue ( priceImpactResult ) ?? ''
432+
433+ return {
434+ activeKey,
435+ resp : {
436+ collateral : expectedCollateral ?. totalCollateral ?? '' ,
437+ leverage : expectedCollateral ?. leverage ?? '' ,
438+ routeName : '' ,
439+ maxRange : fulfilledValue ( maxRangeResult ) ?? null ,
440+ bands : reverseBands ( fulfilledValue ( loanBandsResult ) ?? [ 0 , 0 ] ) ,
441+ prices : fulfilledValue ( loanPricesResult ) ?? [ ] ,
442+ healthFull : fulfilledValue ( loanHealthFullResult ) ?? '' ,
443+ healthNotFull : fulfilledValue ( loanHealthNotFullResult ) ?? '' ,
444+ priceImpact,
445+ isHighImpact : + priceImpact > 0 && + maxSlippage > 0 ? + priceImpact > + maxSlippage : false ,
446+ error : '' ,
447+ } ,
448+ }
449+ }
450+
395451 const { collateral, leverage, routeIdx } = await llamma . leverage . createLoanCollateral ( userCollateral , debt )
396452 const [
397453 routeNameResult ,
@@ -459,21 +515,29 @@ const loanCreate = {
459515 const liqRangesList : LiqRange [ ] = [ ]
460516 const liqRangesListMapper : { [ n : string ] : LiqRange & { sliderIdx : number } } = { }
461517 let sliderIdx = 0
518+ const isV2LeverageSupported = hasV2Leverage ( llamma )
519+ const userBorrowed = '0' // hardcode to zero as that's not displayed in the form
462520
463521 const [ maxRecvsResults , loanBandsResults , loanPricesResults ] = await Promise . allSettled ( [
464522 haveCollateral
465523 ? isLeverage
466- ? llamma . leverage . createLoanMaxRecvAllRanges ( collateral )
524+ ? isV2LeverageSupported
525+ ? llamma . leverageV2 . createLoanMaxRecvAllRanges ( collateral , userBorrowed )
526+ : llamma . leverage . createLoanMaxRecvAllRanges ( collateral )
467527 : llamma . createLoanMaxRecvAllRanges ( collateral )
468528 : null ,
469529 haveCollateral && haveDebt
470530 ? isLeverage
471- ? llamma . leverage . createLoanBandsAllRanges ( collateral , debt )
531+ ? isV2LeverageSupported
532+ ? llamma . leverageV2 . createLoanBandsAllRanges ( collateral , userBorrowed , debt )
533+ : llamma . leverage . createLoanBandsAllRanges ( collateral , debt )
472534 : llamma . createLoanBandsAllRanges ( collateral , debt )
473535 : null ,
474536 haveCollateral && haveDebt
475537 ? isLeverage
476- ? llamma . leverage . createLoanPricesAllRanges ( collateral , debt )
538+ ? isV2LeverageSupported
539+ ? llamma . leverageV2 . createLoanPricesAllRanges ( collateral , userBorrowed , debt )
540+ : llamma . leverage . createLoanPricesAllRanges ( collateral , debt )
477541 : llamma . createLoanPricesAllRanges ( collateral , debt )
478542 : null ,
479543 ] )
@@ -523,7 +587,19 @@ const loanCreate = {
523587 maxRecvLeverage : async ( activeKey : string , llamma : Llamma , collateral : string , n : number ) => {
524588 log ( 'maxRecvLeverage' , llamma . collateralSymbol , collateral , n )
525589 let resp : MaxRecvLeverageForm = { maxBorrowable : '' , maxCollateral : '' , leverage : '' , routeIdx : null }
590+ const userBorrowed = '0' // hardcode to zero as that's not displayed in the form
526591 try {
592+ if ( hasV2Leverage ( llamma ) ) {
593+ const result = await llamma . leverageV2 . createLoanMaxRecv ( collateral , userBorrowed , n )
594+ resp = {
595+ maxBorrowable : result . maxDebt ,
596+ maxCollateral : result . maxTotalCollateral ,
597+ leverage : result . maxLeverage ,
598+ routeIdx : null ,
599+ }
600+ return { activeKey, resp, error : '' }
601+ }
602+
527603 resp = await llamma . leverage . createLoanMaxRecv ( collateral , n )
528604 return { activeKey, resp, error : '' }
529605 } catch ( error ) {
@@ -534,9 +610,12 @@ const loanCreate = {
534610 approve : async ( activeKey : string , provider : Provider , llamma : Llamma , isLeverage : boolean , collateral : string ) => {
535611 log ( 'createLoanApprove' , llamma . collateralSymbol , isLeverage ? 'leverage' : '' , collateral )
536612 const resp = { activeKey, hashes : [ ] as string [ ] , error : '' }
613+ const userBorrowed = '0' // hardcode to zero as that's not displayed in the form
537614 try {
538615 resp . hashes = isLeverage
539- ? await llamma . leverage . createLoanApprove ( collateral )
616+ ? hasV2Leverage ( llamma )
617+ ? await llamma . leverageV2 . createLoanApprove ( collateral , userBorrowed )
618+ : await llamma . leverage . createLoanApprove ( collateral )
540619 : await llamma . createLoanApprove ( collateral )
541620 await waitForTransactions ( resp . hashes , provider )
542621 return resp
@@ -558,9 +637,12 @@ const loanCreate = {
558637 ) => {
559638 log ( 'loanCreate' , llamma . collateralSymbol , isLeverage ? 'isLeverage' : '' , collateral , debt , n , maxSlippage )
560639 const resp = { activeKey, hash : '' , error : '' }
640+ const userBorrowed = '0' // hardcode to zero as that's not displayed in the form
561641 try {
562642 resp . hash = isLeverage
563- ? await llamma . leverage . createLoan ( collateral , debt , n , + maxSlippage )
643+ ? hasV2Leverage ( llamma )
644+ ? await llamma . leverageV2 . createLoan ( collateral , userBorrowed , debt , n , + maxSlippage )
645+ : await llamma . leverage . createLoan ( collateral , debt , n , + maxSlippage )
564646 : await llamma . createLoan ( collateral , debt , n )
565647 await waitForTransaction ( resp . hash , provider )
566648 return resp
0 commit comments