Semantics improvements

This commit is contained in:
Aleksandr Kraiz
2022-04-22 07:05:25 +04:00
parent 945ef60a5f
commit c92b277d80
3 changed files with 24 additions and 11 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "@orionprotocol/sdk",
"version": "0.2.0",
"version": "0.2.1",
"description": "Orion Protocol SDK",
"main": "lib/index.js",
"types": "lib/index.d.ts",

View File

@@ -4,7 +4,7 @@ import clone from 'just-clone';
import { contracts, utils } from '.';
import { APPROVE_ERC20_GAS_LIMIT, NATIVE_CURRENCY_PRECISION } from './constants';
import {
AggregatedBalanceRequirement, Approve, Asset, BalanceIssue, BalanceRequirement, Source,
AggregatedBalanceRequirement, ApproveFix, Asset, BalanceIssue, BalanceRequirement, Source,
} from './types';
import arrayEquals from './utils/arrayEquals';
@@ -108,7 +108,7 @@ export default class BalanceGuard {
) => {
const fixBalanceIssue = async (issue: BalanceIssue) => {
const tokenContract = contracts.ERC20__factory.connect(issue.asset.address, this.provider);
const approve = async ({ spenderAddress, targetAmount }: Approve) => {
const approve = async ({ spenderAddress, targetAmount }: ApproveFix) => {
const bnTargetAmount = new BigNumber(targetAmount);
const unsignedApproveTx = await tokenContract
.populateTransaction
@@ -137,13 +137,14 @@ export default class BalanceGuard {
await txResponse.wait();
console.log(`${issue.asset.name} approve transaction confirmed.`);
};
await issue.approves?.reduce(async (promise, item) => {
await issue.fixes?.reduce(async (promise, item) => {
await promise;
return approve(item);
if (item.type === 'byApprove') return approve(item);
return promise;
}, Promise.resolve());
};
const autofixableBalanceIssues = balanceIssues.filter((balanceIssue) => balanceIssue.approves);
const autofixableBalanceIssues = balanceIssues.filter((balanceIssue) => balanceIssue.fixes);
await autofixableBalanceIssues.reduce(async (promise, item) => {
await promise;
@@ -267,12 +268,14 @@ export default class BalanceGuard {
balanceIssues.push({
asset,
sources: ['exchange', 'wallet'],
approves: [
fixes: [
...resetRequired ? [{
type: 'byApprove' as const,
targetAmount: 0,
spenderAddress,
}] : [],
{
type: 'byApprove',
targetAmount: targetApprove,
spenderAddress,
},
@@ -342,12 +345,14 @@ export default class BalanceGuard {
balanceIssues.push({
asset,
sources: ['wallet'],
approves: [
fixes: [
...resetRequired ? [{
type: 'byApprove' as const,
targetAmount: 0,
spenderAddress,
}] : [],
{
type: 'byApprove',
targetAmount: targetApprove,
spenderAddress,
},

View File

@@ -115,15 +115,23 @@ export type AggregatedBalanceRequirement = {
items: Partial<Record<string, string>>,
}
export type Approve = {
export type ApproveFix = {
readonly type: 'byApprove',
readonly targetAmount: BigNumber.Value,
readonly spenderAddress: string
}
export type DepositFix = {
readonly type: 'byDeposit',
readonly amount: BigNumber.Value,
readonly asset: string
}
type Fix = ApproveFix | DepositFix;
export type BalanceIssue = {
readonly asset: Asset,
readonly message: string;
readonly sources: Source[],
readonly resetRequired?: boolean;
readonly approves?: Approve[];
readonly fixes?: Fix[],
}