PrimaryLendingPlatformAtomicRepaymentZksync

Overview

License: MIT

contract PrimaryLendingPlatformAtomicRepaymentZksync is PrimaryLendingPlatformAtomicRepaymentCore

The PrimaryLendingPlatformAtomicRepaymentZksync contract is the contract that allows users to repay loans atomically for zksync network.

Contract that allows users to repay loans atomically using the OpenOcean exchange aggregator. Inherit from PrimaryLendingPlatformAtomicRepaymentCore.

Functions info

getTotalOutstandingWithUpdatePrices (0x2de2d471)

function getTotalOutstandingWithUpdatePrices(
    address user,
    address projectToken,
    address lendingAsset,
    bytes32[] memory priceIds,
    bytes[] calldata updateData
) external payable returns (uint256 outstanding)

Calculates the outstanding amount (i.e., loanBody + accrual) for a given user, project token, and lending token after updating related token's prices.

Parameters:

Name
Type
Description

user

address

The user for which to compute the outstanding amount.

projectToken

address

The project token for which to compute the outstanding amount.

lendingAsset

address

The lending token for which to compute the outstanding amount.

priceIds

bytes32[]

An array of bytes32 price identifiers to update.

updateData

bytes[]

An array of bytes update data for the corresponding price identifiers.

Return values:

Name
Type
Description

outstanding

uint256

The outstanding amount for the user, project token, and lending token.

repayAtomic (0x4f6db5fc)

function repayAtomic(
    Asset.Info memory prjInfo,
    Asset.Info memory lendingInfo,
    uint256 collateralAmount,
    bytes[] memory buyCalldata,
    bool isRepayFully,
    bytes32[] memory priceIds,
    bytes[] calldata updateData
) external payable nonReentrant

Repays a loan atomically using the given project token as collateral.

Repays the loan in a single atomic transaction and update related token's prices.

Requirements:

  • The project token is listed on the platform.

  • The lending token is listed on the platform.

  • Collateral amount must be greater than 0.

  • The user must have a position for the given project token and lending token.

Effects:

  • Update price of related tokens.

  • Transfers the collateral amount from the user to the contract.

  • Approves the collateral amount to the primary lending platform contract.

  • Calculates the total outstanding amount for the user, project token, and lending token.

  • Buys the lending token from the exchange aggregator.

  • Deposits the collateral amount back to the primary lending platform contract.

  • Approves the lending token amount to the primary lending platform contract.

  • Repays the lending token amount to the primary lending platform contract.

  • Transfers the remaining lending token amount to the user.

  • Defers the liquidity check for the user, project token, and lending token.

Parameters:

Name
Type
Description

prjInfo

struct Asset.Info

Information about the project token, including its address and type.

lendingInfo

struct Asset.Info

Information about the lending token, including its address and type.

collateralAmount

uint256

The amount of collateral to use for repayment.

buyCalldata

bytes[]

The calldata for the swap operation.

isRepayFully

bool

A boolean indicating whether the loan should be repaid fully or partially.

priceIds

bytes32[]

An array of bytes32 price identifiers to update.

updateData

bytes[]

An array of bytes update data for the corresponding price identifiers.

Last updated