mirror of
https://github.com/orionprotocol/sdk.git
synced 2026-03-17 00:31:34 +03:00
Add liquidity / remove liquidity / balancee guard improvements
This commit is contained in:
@@ -15,43 +15,25 @@ export default async function getBalance(
|
||||
const assetIsNativeCryptocurrency = assetAddress === ethers.constants.AddressZero;
|
||||
|
||||
let assetWalletBalance: ethers.BigNumber | undefined;
|
||||
let assetAllowance: ethers.BigNumber | undefined;
|
||||
|
||||
let denormalizedAssetInWalletBalance: BigNumber | undefined;
|
||||
let denormalizedAssetInAllowance: BigNumber | undefined;
|
||||
|
||||
if (!assetIsNativeCryptocurrency) {
|
||||
const assetContract = contracts.ERC20__factory.connect(assetAddress, provider);
|
||||
const assetDecimals = await assetContract.decimals();
|
||||
assetWalletBalance = await assetContract.balanceOf(walletAddress);
|
||||
assetAllowance = await assetContract.allowance(walletAddress, exchangeContract.address);
|
||||
|
||||
denormalizedAssetInWalletBalance = utils.denormalizeNumber(assetWalletBalance, assetDecimals);
|
||||
denormalizedAssetInAllowance = utils.denormalizeNumber(assetAllowance, assetDecimals);
|
||||
} else {
|
||||
assetWalletBalance = await provider.getBalance(walletAddress);
|
||||
denormalizedAssetInWalletBalance = utils.denormalizeNumber(assetWalletBalance, NATIVE_CURRENCY_PRECISION);
|
||||
denormalizedAssetInAllowance = denormalizedAssetInWalletBalance; // For native crypto no allowance is needed
|
||||
}
|
||||
const assetContractBalance = await exchangeContract.getBalance(assetAddress, walletAddress);
|
||||
const denormalizedAssetInContractBalance = utils.denormalizeNumber(assetContractBalance, INTERNAL_ORION_PRECISION);
|
||||
// const denormalizedAssetWalletBalanceAvailable = BigNumber.min(denormalizedAssetInAllowance, denormalizedAssetInWalletBalance);
|
||||
const denormalizedAssetLockedBalance = await orionAggregator.getLockedBalance(walletAddress, asset);
|
||||
|
||||
// const denormalizedAssetAvailableBalance = denormalizedAssetInContractBalance
|
||||
// .plus(denormalizedAssetWalletBalanceAvailable)
|
||||
// .minus(denormalizedAssetLockedBalance[asset] ?? 0);
|
||||
// const denormalizedAssetImaginaryBalance = denormalizedAssetInContractBalance
|
||||
// .plus(denormalizedAssetInWalletBalance)
|
||||
// .minus(denormalizedAssetLockedBalance[asset] ?? 0);
|
||||
|
||||
return {
|
||||
exchange: denormalizedAssetInContractBalance.minus(denormalizedAssetLockedBalance[asset] ?? 0),
|
||||
// imaginary: denormalizedAssetImaginaryBalance,
|
||||
wallet: denormalizedAssetInWalletBalance,
|
||||
allowance: denormalizedAssetInAllowance,
|
||||
// approvedWalletBalance: denormalizedAssetWalletBalanceAvailable,
|
||||
// available: denormalizedAssetAvailableBalance,
|
||||
// locked: denormalizedAssetLockedBalance[asset],
|
||||
};
|
||||
}
|
||||
|
||||
@@ -33,7 +33,6 @@ export default async (
|
||||
return balances.reduce<Partial<Record<string, {
|
||||
exchange: BigNumber,
|
||||
wallet: BigNumber,
|
||||
allowance: BigNumber,
|
||||
}>>>((prev, curr) => ({
|
||||
...prev,
|
||||
[curr.asset]: curr.amount,
|
||||
|
||||
19
src/utils/getNativeCryptocurrency.ts
Normal file
19
src/utils/getNativeCryptocurrency.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import { ethers } from 'ethers';
|
||||
|
||||
const getNativeCryptocurrency = (assetToAddress: Partial<Record<string, string>>) => {
|
||||
const addressToAsset = Object
|
||||
.entries(assetToAddress)
|
||||
.reduce<Partial<Record<string, string>>>((prev, [asset, address]) => {
|
||||
if (!address) return prev;
|
||||
return {
|
||||
...prev,
|
||||
[address]: asset,
|
||||
};
|
||||
}, {});
|
||||
|
||||
const nativeCryptocurrency = addressToAsset[ethers.constants.AddressZero];
|
||||
if (!nativeCryptocurrency) throw new Error('Native cryptocurrency asset is not found');
|
||||
return nativeCryptocurrency;
|
||||
};
|
||||
|
||||
export default getNativeCryptocurrency;
|
||||
Reference in New Issue
Block a user