Skip to content

Commit

Permalink
Merge branch 'main' into feature/vault_3
Browse files Browse the repository at this point in the history
  • Loading branch information
ruixhuang committed Oct 3, 2024
2 parents 9fda390 + 767cc55 commit 47506e4
Show file tree
Hide file tree
Showing 4 changed files with 114 additions and 4 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ allprojects {
}

group = "exchange.dydx.abacus"
version = "1.12.18"
version = "1.12.19"

repositories {
google()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,14 @@ internal class VaultFormValidationErrors(
textKey = "APP.VAULTS.WITHDRAW_TOO_HIGH",
)

fun withdrawTooLow() = createError(
code = "WITHDRAW_TOO_LOW",
type = ErrorType.error,
fields = listOf("amount"),
titleKey = "APP.TRADE.MODIFY_SIZE_FIELD",
textKey = "APP.VAULTS.WITHDRAW_TOO_LOW",
)

fun withdrawingLockedBalance() = createError(
code = "WITHDRAWING_LOCKED_BALANCE",
type = ErrorType.error,
Expand Down Expand Up @@ -341,7 +349,14 @@ object VaultDepositWithdrawFormValidator {
if (postOpVaultBalance != null && postOpVaultBalance < 0) {
errors.add(vaultFormValidationErrors.withdrawTooHigh())
}
if (postOpVaultBalance != null && postOpVaultBalance >= 0 && amount > 0 && vaultAccount?.withdrawableUsdc != null && amount > vaultAccount.withdrawableUsdc) {
if (amount > 0 && amount < MIN_DEPOSIT_FE_THRESHOLD &&
vaultAccount?.withdrawableUsdc != null && vaultAccount.withdrawableUsdc >= MIN_DEPOSIT_FE_THRESHOLD
) {
errors.add(vaultFormValidationErrors.withdrawTooLow())
}
if (postOpVaultBalance != null && postOpVaultBalance >= 0 && amount > 0 &&
vaultAccount?.withdrawableUsdc != null && amount > vaultAccount.withdrawableUsdc
) {
errors.add(vaultFormValidationErrors.withdrawingLockedBalance())
}
if (sharesToAttemptWithdraw != null && slippageResponse != null && sharesToAttemptWithdraw != slippageResponse.sharesToWithdraw.numShares) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ class VaultFormTests {
}

@Test
fun testLowWithdraw() {
fun testLowDeposit() {
val result = VaultDepositWithdrawFormValidator.validateVaultForm(
formData = VaultFormData(
action = VaultFormAction.DEPOSIT,
Expand Down Expand Up @@ -272,6 +272,101 @@ class VaultFormTests {
)
}

@Test
fun testLowWithdraw() {
val result = VaultDepositWithdrawFormValidator.validateVaultForm(
formData = VaultFormData(
action = VaultFormAction.WITHDRAW,
amount = 10.0,
acknowledgedSlippage = false,
inConfirmationStep = false,
),
accountData = VaultFormAccountData(
marginUsage = 0.5,
freeCollateral = 1000.0,
canViewAccount = true,
),
vaultAccount = makeVaultAccount(
balanceUsdc = 1000.0,
withdrawableUsdc = 500.0,
balanceShares = 500.0,
),
slippageResponse = OnChainVaultDepositWithdrawSlippageResponse(
sharesToWithdraw = OnChainNumShares(numShares = 5.0),
expectedQuoteQuantums = 10.0 * 1_000_000,
),
)

assertEquals(
VaultFormValidationResult(
errors = iListOf(
VaultFormValidationErrors().withdrawTooLow(),
),
submissionData = null,
summaryData = VaultFormSummaryData(
needSlippageAck = false,
marginUsage = 0.49751243781094523,
freeCollateral = 1010.0,
vaultBalance = 990.0,
withdrawableVaultBalance = 490.0,
estimatedSlippage = 0.0,
estimatedAmountReceived = 10.0,
),
),
result,
)
}

@Test
fun testLowWithdrawFull() {
val result = VaultDepositWithdrawFormValidator.validateVaultForm(
formData = VaultFormData(
action = VaultFormAction.WITHDRAW,
amount = 10.0,
acknowledgedSlippage = false,
inConfirmationStep = false,
),
accountData = VaultFormAccountData(
marginUsage = 0.5,
freeCollateral = 1000.0,
canViewAccount = true,
),
vaultAccount = makeVaultAccount(
balanceUsdc = 1000.0,
withdrawableUsdc = 10.0,
balanceShares = 500.0,
),
slippageResponse = OnChainVaultDepositWithdrawSlippageResponse(
sharesToWithdraw = OnChainNumShares(numShares = 5.0),
expectedQuoteQuantums = 10.0 * 1_000_000,
),
)

assertEquals(
VaultFormValidationResult(
errors = listOf<ValidationError>().toIList(),
submissionData = VaultDepositWithdrawSubmissionData(
withdraw = VaultWithdrawData(
subaccountTo = "0",
shares = 5.0,
minAmount = 9.90,
),
deposit = null,
),
summaryData = VaultFormSummaryData(
needSlippageAck = false,
marginUsage = 0.49751243781094523,
freeCollateral = 1010.0,
vaultBalance = 990.0,
withdrawableVaultBalance = 0.0,
estimatedSlippage = 0.0,
estimatedAmountReceived = 10.0,
),
),
result,
)
}

@Test
fun testValidHighSlippageWithdrawWithAck() {
val result = VaultDepositWithdrawFormValidator.validateVaultForm(
Expand Down
2 changes: 1 addition & 1 deletion v4_abacus.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |spec|
spec.name = 'v4_abacus'
spec.version = '1.12.18'
spec.version = '1.12.19'
spec.homepage = 'https://github.com/dydxprotocol/v4-abacus'
spec.source = { :http=> ''}
spec.authors = ''
Expand Down

0 comments on commit 47506e4

Please sign in to comment.