fix denormolized wallet balance error

This commit is contained in:
lomonoshka
2023-11-03 13:16:16 +04:00
parent 8e018aa1b0
commit 47e68cc7fa
4 changed files with 27 additions and 7 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "@orionprotocol/sdk",
"version": "0.20.13",
"version": "0.20.14-rc0",
"description": "Orion Protocol SDK",
"main": "./lib/index.cjs",
"module": "./lib/index.js",

View File

@@ -87,6 +87,10 @@ export function generateCalls(calls: BytesLike[]) {
}
export async function exchangeToNativeDecimals(token: AddressLike, amount: BigNumberish, provider: ethers.JsonRpcProvider) {
return await toNativeDecimals(token, amount, provider) / (BigInt(10) ** 8n)
}
export async function toNativeDecimals(token: AddressLike, amount: BigNumberish, provider: ethers.JsonRpcProvider) {
token = await token
if (typeof token !== "string") token = await token.getAddress()

View File

@@ -18,7 +18,7 @@ import type { AddressLike } from "ethers";
import { addressLikeToString } from "../../utils/addressLikeToString.js";
import { generateUnwrapAndTransferCall, generateWrapAndTransferCall } from "./callGenerators/weth.js";
import { Exchange__factory } from "@orionprotocol/contracts/lib/ethers-v6/index.js";
import getBalance from "../../utils/getBalance.js";
import { getWalletBalance } from "../../utils/getBalance.js";
export type Factory = "UniswapV2" | "UniswapV3" | "Curve" | "OrionV2" | "OrionV3";
@@ -62,12 +62,9 @@ export async function generateSwapCalldataWithUnit({
)();
let path = SafeArray.from(arrayLikePath);
const { wallet } = await getBalance(
unit.aggregator,
const walletBalance = await getWalletBalance(
path.first().assetIn,
safeGet(assetToAddress, path.first().assetIn),
receiverAddress,
Exchange__factory.connect(exchangeContractAddress, unit.provider),
unit.provider
);
@@ -81,7 +78,7 @@ export async function generateSwapCalldataWithUnit({
amount,
minReturnAmount,
receiverAddress,
useContractBalance: BigInt(wallet.toString()) < BigInt(amount),
useContractBalance: walletBalance < BigInt(amount),
path,
wethAddress,
curveRegistryAddress,

View File

@@ -41,3 +41,22 @@ export default async function getBalance(
wallet: denormalizedAssetInWalletBalance,
};
}
export async function getWalletBalance(
assetAddress: string,
walletAddress: string,
provider: ethers.Provider,
) {
const assetIsNativeCryptocurrency = assetAddress === ethers.ZeroAddress;
let assetWalletBalance: bigint | undefined;
if (!assetIsNativeCryptocurrency) {
const assetContract = ERC20__factory.connect(assetAddress, provider);
assetWalletBalance = await assetContract.balanceOf(walletAddress);
} else {
assetWalletBalance = await provider.getBalance(walletAddress);
}
return assetWalletBalance
}