impermax-sdk 1.2.66 → 1.2.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/config/amms.js +1 -1
- package/lib/offchain/offchainPriceHelper.js +8 -2
- package/lib/offchain/query.js +247 -247
- package/package.json +1 -1
- package/lib/offchain/account/lendingPool/borrowable.d.ts +0 -14
- package/lib/offchain/account/lendingPool/borrowable.js +0 -73
- package/lib/offchain/account/lendingPool/collateral.d.ts +0 -12
- package/lib/offchain/account/lendingPool/collateral.js +0 -42
- package/lib/offchain/account/lendingVault.d.ts +0 -11
- package/lib/offchain/account/lendingVault.js +0 -38
- package/lib/offchain/account/poolToken.d.ts +0 -6
- package/lib/offchain/account/poolToken.js +0 -21
- package/lib/offchain/initializer.d.ts +0 -32
- package/lib/offchain/initializer.js +0 -627
- package/lib/offchain/lendingPool/borrowable.d.ts +0 -55
- package/lib/offchain/lendingPool/borrowable.js +0 -351
- package/lib/offchain/lendingPool/collateral.d.ts +0 -17
- package/lib/offchain/lendingPool/collateral.js +0 -72
- package/lib/offchain/lendingVault.d.ts +0 -22
- package/lib/offchain/lendingVault.js +0 -115
- package/lib/offchain/poolToken.d.ts +0 -20
- package/lib/offchain/poolToken.js +0 -120
- package/lib/offchain/priceHelper.d.ts +0 -21
- package/lib/offchain/priceHelper.js +0 -195
- package/lib/offchain/solidexHelper.d.ts +0 -16
- package/lib/offchain/solidexHelper.js +0 -58
- package/lib/offchain/types.d.ts +0 -150
- package/lib/offchain/types.js +0 -3
- package/lib/onchain/account/interactions/index.d.ts +0 -28
- package/lib/onchain/account/interactions/index.js +0 -158
- package/lib/onchain/account/interactions/lendingPool/borrowable.d.ts +0 -16
- package/lib/onchain/account/interactions/lendingPool/borrowable.js +0 -49
- package/lib/onchain/account/interactions/lendingPool/collateral.d.ts +0 -15
- package/lib/onchain/account/interactions/lendingPool/collateral.js +0 -33
- package/lib/onchain/account/interactions/lendingPool/index.d.ts +0 -41
- package/lib/onchain/account/interactions/lendingPool/index.js +0 -120
- package/lib/onchain/account/interactions/lendingVault.d.ts +0 -10
- package/lib/onchain/account/interactions/lendingVault.js +0 -12
- package/lib/onchain/account/interactions/poolToken.d.ts +0 -33
- package/lib/onchain/account/interactions/poolToken.js +0 -180
- package/lib/onchain/account/lendingPool/borrowable.d.ts +0 -29
- package/lib/onchain/account/lendingPool/borrowable.js +0 -135
- package/lib/onchain/account/lendingPool/collateral.d.ts +0 -15
- package/lib/onchain/account/lendingPool/collateral.js +0 -66
- package/lib/onchain/account/lendingVault.d.ts +0 -10
- package/lib/onchain/account/lendingVault.js +0 -35
- package/lib/onchain/account/poolToken.d.ts +0 -24
- package/lib/onchain/account/poolToken.js +0 -84
- package/lib/onchain/contractsHelper.d.ts +0 -29
- package/lib/onchain/contractsHelper.js +0 -52
- package/lib/onchain/impermaxFactory/lendingPool/borrowable.d.ts +0 -36
- package/lib/onchain/impermaxFactory/lendingPool/borrowable.js +0 -153
- package/lib/onchain/impermaxFactory/lendingPool/collateral.d.ts +0 -17
- package/lib/onchain/impermaxFactory/lendingPool/collateral.js +0 -59
- package/lib/onchain/interactions/lendingPool/borrowable.d.ts +0 -14
- package/lib/onchain/interactions/lendingPool/borrowable.js +0 -47
- package/lib/onchain/interactions/lendingPool/collateral.d.ts +0 -13
- package/lib/onchain/interactions/lendingPool/collateral.js +0 -31
- package/lib/onchain/interactions/lendingVault.d.ts +0 -8
- package/lib/onchain/interactions/lendingVault.js +0 -15
- package/lib/onchain/interactions/poolToken.d.ts +0 -31
- package/lib/onchain/interactions/poolToken.js +0 -181
- package/lib/onchain/lendingVault.d.ts +0 -17
- package/lib/onchain/lendingVault.js +0 -56
- package/lib/onchain/poolToken.d.ts +0 -32
- package/lib/onchain/poolToken.js +0 -121
- package/lib/onchain/types.d.ts +0 -45
- package/lib/onchain/types.js +0 -14
- package/lib/utils/price-from-reserves.d.ts +0 -2
- package/lib/utils/price-from-reserves.js +0 -19
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
-
};
|
|
37
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.LendingVault = exports.PoolToken = exports.LendingPool = exports.lendingPool = void 0;
|
|
39
|
-
const ethers_1 = require("ethers");
|
|
40
|
-
const lendingPool = __importStar(require("./lendingPool"));
|
|
41
|
-
exports.lendingPool = lendingPool;
|
|
42
|
-
const lendingPool_1 = __importDefault(require("./lendingPool"));
|
|
43
|
-
exports.LendingPool = lendingPool_1.default;
|
|
44
|
-
const poolToken_1 = __importDefault(require("./poolToken"));
|
|
45
|
-
exports.PoolToken = poolToken_1.default;
|
|
46
|
-
const types_1 = require("../../../config/types");
|
|
47
|
-
const lendingVault_1 = __importDefault(require("./lendingVault"));
|
|
48
|
-
exports.LendingVault = lendingVault_1.default;
|
|
49
|
-
const routers_1 = require("../../../config/contracts/routers");
|
|
50
|
-
const ZERO = ethers_1.BigNumber.from(0);
|
|
51
|
-
class Interactions {
|
|
52
|
-
constructor(account) {
|
|
53
|
-
this.cache = {};
|
|
54
|
-
this.account = account;
|
|
55
|
-
this.interactionsLLPs = {};
|
|
56
|
-
this.interactionsLVs = {};
|
|
57
|
-
}
|
|
58
|
-
cleanCache() {
|
|
59
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
-
this.cache = {};
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
initializeInteractionsLendingPool(factory, pair) {
|
|
64
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
65
|
-
const lendingPool = yield this.account.getLendingPool(factory, pair);
|
|
66
|
-
return new lendingPool_1.default(this, lendingPool);
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
getInteractionsLendingPool(factory, pair) {
|
|
70
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
-
if (!this.interactionsLLPs[factory])
|
|
72
|
-
this.interactionsLLPs[factory] = {};
|
|
73
|
-
const interactionsLendingPools = this.interactionsLLPs[factory];
|
|
74
|
-
if (!interactionsLendingPools[pair])
|
|
75
|
-
interactionsLendingPools[pair] = this.initializeInteractionsLendingPool(factory, pair);
|
|
76
|
-
return interactionsLendingPools[pair];
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
initializeInteractionsLendingVault(vaultAddress) {
|
|
80
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
81
|
-
const lendingVault = yield this.account.getLendingVault(vaultAddress);
|
|
82
|
-
return new lendingVault_1.default(this, lendingVault);
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
getInteractionsLendingVault(vaultAddress) {
|
|
86
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
87
|
-
if (!this.interactionsLVs[vaultAddress])
|
|
88
|
-
this.interactionsLVs[vaultAddress] = this.initializeInteractionsLendingVault(vaultAddress);
|
|
89
|
-
return this.interactionsLVs[vaultAddress];
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
send(method, onTransactionHash, value = ZERO) {
|
|
93
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
94
|
-
try {
|
|
95
|
-
yield method.call({ from: this.account.account, value });
|
|
96
|
-
return method.send({ from: this.account.account, value }).on('transactionHash', onTransactionHash);
|
|
97
|
-
}
|
|
98
|
-
catch (e) {
|
|
99
|
-
console.error(e);
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
getDefaultRouterContract() {
|
|
104
|
-
if (!this.cache.defaultRouterContract) {
|
|
105
|
-
const address = routers_1.DEFAULT_ROUTER[this.account.onchain.network];
|
|
106
|
-
if (!address) {
|
|
107
|
-
console.error("SimpleUniswapOracle address not found");
|
|
108
|
-
return null;
|
|
109
|
-
}
|
|
110
|
-
this.cache.defaultRouterContract = this.account.onchain.contractsHelper.newRouter(address);
|
|
111
|
-
}
|
|
112
|
-
return this.cache.defaultRouterContract;
|
|
113
|
-
}
|
|
114
|
-
claimAirdrop(airdropData, merkleDistributor, onTransactionHash) {
|
|
115
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
116
|
-
return this.send(merkleDistributor.methods.claim(airdropData.index, this.account.account, airdropData.amount, airdropData.proof), onTransactionHash);
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
claims(pairAddresses, onTransactionHash) {
|
|
120
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
-
const requests = [];
|
|
122
|
-
for (const factory in pairAddresses) {
|
|
123
|
-
for (const pairAddress of pairAddresses[factory]) {
|
|
124
|
-
for (const poolToken of [types_1.PoolTokenType.BorrowableA, types_1.PoolTokenType.BorrowableB]) {
|
|
125
|
-
requests.push((() => __awaiter(this, void 0, void 0, function* () {
|
|
126
|
-
const accountBorrowable = (yield this.account.getLendingPool(factory, pairAddress)).accountPoolTokens[poolToken];
|
|
127
|
-
const borrowable = accountBorrowable.offchainPoolToken;
|
|
128
|
-
const pendingReward = (yield accountBorrowable.getAvailableFarmingReward()) + (yield accountBorrowable.getAvailableRewarderReward());
|
|
129
|
-
return {
|
|
130
|
-
hasPendingReward: pendingReward > 0,
|
|
131
|
-
hasImpermaxChef: yield borrowable.hasImpermaxChef(),
|
|
132
|
-
borrowableAddress: yield borrowable.getPoolTokenAddress(),
|
|
133
|
-
};
|
|
134
|
-
}))());
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
const data = yield Promise.all(requests);
|
|
139
|
-
const toClaim = [];
|
|
140
|
-
for (const borrowable of data) {
|
|
141
|
-
if (!borrowable.hasPendingReward)
|
|
142
|
-
continue;
|
|
143
|
-
toClaim.push(borrowable.borrowableAddress);
|
|
144
|
-
}
|
|
145
|
-
if (toClaim.length > 0) {
|
|
146
|
-
const impermaxChef = this.account.onchain.contractsHelper.impermaxChef;
|
|
147
|
-
return this.send(impermaxChef.methods.massHarvest(toClaim, this.account.account), onTransactionHash);
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
claimDistributor(claimableAddress, onTransactionHash) {
|
|
152
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
153
|
-
const claimable = this.account.onchain.contractsHelper.newClaimable(claimableAddress);
|
|
154
|
-
return this.send(claimable.methods.claim(), onTransactionHash);
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
exports.default = Interactions;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { PoolTokenType } from '../../../../config/types';
|
|
2
|
-
import LendingPool from './index';
|
|
3
|
-
import { PermitData } from '../../../types';
|
|
4
|
-
import { BigNumber } from 'ethers';
|
|
5
|
-
import * as account from '../../index';
|
|
6
|
-
import PoolToken from '../poolToken';
|
|
7
|
-
export default class Borrowable extends PoolToken {
|
|
8
|
-
interactionsLendingPool: LendingPool;
|
|
9
|
-
accountPoolToken: account.lendingPool.Borrowable;
|
|
10
|
-
constructor(interactionsLendingPool: LendingPool, poolTokenType: PoolTokenType);
|
|
11
|
-
getInteractions: () => account.interactions.default;
|
|
12
|
-
getAccountAddress: () => string;
|
|
13
|
-
getRouterContract: () => any;
|
|
14
|
-
borrow(amount: BigNumber, permitData: PermitData, onTransactionHash: Function): Promise<any>;
|
|
15
|
-
repay(amount: BigNumber, onTransactionHash: Function): Promise<any>;
|
|
16
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const general_1 = require("../../../../config/general");
|
|
16
|
-
const poolToken_1 = __importDefault(require("../poolToken"));
|
|
17
|
-
class Borrowable extends poolToken_1.default {
|
|
18
|
-
constructor(interactionsLendingPool, poolTokenType) {
|
|
19
|
-
super();
|
|
20
|
-
this.getInteractions = () => this.interactionsLendingPool.interactions;
|
|
21
|
-
this.getAccountAddress = () => this.interactionsLendingPool.getAccountAddress();
|
|
22
|
-
this.getRouterContract = () => this.interactionsLendingPool.getRouterContract();
|
|
23
|
-
this.interactionsLendingPool = interactionsLendingPool;
|
|
24
|
-
this.accountPoolToken = interactionsLendingPool.lendingPool.accountPoolTokens[poolTokenType];
|
|
25
|
-
}
|
|
26
|
-
borrow(amount, permitData, onTransactionHash) {
|
|
27
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
28
|
-
const { router, ptAddress, account, data, deadline } = yield this.getSendData(permitData);
|
|
29
|
-
if (yield this.isWETH()) {
|
|
30
|
-
return this.send(router.methods.borrowETH(ptAddress, amount, account, deadline, data), onTransactionHash);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
return this.send(router.methods.borrow(ptAddress, amount, account, deadline, data), onTransactionHash);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
repay(amount, onTransactionHash) {
|
|
38
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
-
const { router, ptAddress, account } = yield this.getSendData(null);
|
|
40
|
-
if (yield this.isWETH()) {
|
|
41
|
-
return this.send(router.methods.repayETH(ptAddress, account, general_1.DEADLINE), onTransactionHash, amount);
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
return this.send(router.methods.repay(ptAddress, amount, account, general_1.DEADLINE), onTransactionHash);
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
exports.default = Borrowable;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { PoolTokenType } from '../../../../config/types';
|
|
2
|
-
import LendingPool from './index';
|
|
3
|
-
import { PermitData } from '../../../types';
|
|
4
|
-
import { BigNumber } from 'ethers';
|
|
5
|
-
import * as account from '../../index';
|
|
6
|
-
import PoolToken from '../poolToken';
|
|
7
|
-
export default class Collateral extends PoolToken {
|
|
8
|
-
interactionsLendingPool: LendingPool;
|
|
9
|
-
accountPoolToken: account.lendingPool.Collateral;
|
|
10
|
-
constructor(interactionsLendingPool: LendingPool, poolTokenType: PoolTokenType);
|
|
11
|
-
getInteractions: () => account.interactions.default;
|
|
12
|
-
getAccountAddress: () => string;
|
|
13
|
-
getRouterContract: () => any;
|
|
14
|
-
protected mint(amount: BigNumber, permitData: PermitData, onTransactionHash: Function): Promise<any>;
|
|
15
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const poolToken_1 = __importDefault(require("../poolToken"));
|
|
16
|
-
class Collateral extends poolToken_1.default {
|
|
17
|
-
constructor(interactionsLendingPool, poolTokenType) {
|
|
18
|
-
super();
|
|
19
|
-
this.getInteractions = () => this.interactionsLendingPool.interactions;
|
|
20
|
-
this.getAccountAddress = () => this.interactionsLendingPool.getAccountAddress();
|
|
21
|
-
this.getRouterContract = () => this.interactionsLendingPool.getRouterContract();
|
|
22
|
-
this.interactionsLendingPool = interactionsLendingPool;
|
|
23
|
-
this.accountPoolToken = interactionsLendingPool.lendingPool.accountPoolTokens[poolTokenType];
|
|
24
|
-
}
|
|
25
|
-
mint(amount, permitData, onTransactionHash) {
|
|
26
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
-
const { router, ptAddress, account, data, deadline } = yield this.getSendData(permitData);
|
|
28
|
-
return this.send(router.methods.mintCollateral(ptAddress, amount, account, deadline, data), onTransactionHash);
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
;
|
|
32
|
-
}
|
|
33
|
-
exports.default = Collateral;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import Interactions from "../index";
|
|
2
|
-
import { BigNumber } from "ethers";
|
|
3
|
-
import { PoolTokenType } from '../../../../config/types';
|
|
4
|
-
import { PermitData } from '../../../types';
|
|
5
|
-
import Collateral from './collateral';
|
|
6
|
-
import Borrowable from './borrowable';
|
|
7
|
-
import * as account from '../../index';
|
|
8
|
-
export { Borrowable, Collateral, };
|
|
9
|
-
export default class LendingPool {
|
|
10
|
-
interactions: Interactions;
|
|
11
|
-
accountLendingPool: account.LendingPool;
|
|
12
|
-
interactionsPoolToken: {
|
|
13
|
-
[PoolTokenType.Collateral]: Collateral;
|
|
14
|
-
[PoolTokenType.BorrowableA]: Borrowable;
|
|
15
|
-
[PoolTokenType.BorrowableB]: Borrowable;
|
|
16
|
-
};
|
|
17
|
-
constructor(interactions: Interactions, accountLendingPool: account.LendingPool);
|
|
18
|
-
getRouterLendingPool: () => import("../../../impermaxFactory").LendingPool;
|
|
19
|
-
getRouterContract: () => any;
|
|
20
|
-
getAccountAddress: () => string;
|
|
21
|
-
send: (method: any, onTransactionHash: Function) => Promise<any>;
|
|
22
|
-
getLeverageAmounts(leverage: number, slippage: number): Promise<{
|
|
23
|
-
bAmountA: number;
|
|
24
|
-
bAmountB: number;
|
|
25
|
-
cAmount: number;
|
|
26
|
-
bAmountAMin: number;
|
|
27
|
-
bAmountBMin: number;
|
|
28
|
-
cAmountMin: number;
|
|
29
|
-
}>;
|
|
30
|
-
leverage(amountA: BigNumber, amountB: BigNumber, amountAMin: BigNumber, amountBMin: BigNumber, permitDataA: PermitData, permitDataB: PermitData, onTransactionHash: Function): Promise<any>;
|
|
31
|
-
getDeleverageAmounts(changeCollateralAmount: number, slippage: number): Promise<{
|
|
32
|
-
bAmountA: number;
|
|
33
|
-
bAmountB: number;
|
|
34
|
-
cAmount: number;
|
|
35
|
-
bAmountAMin: number;
|
|
36
|
-
bAmountBMin: number;
|
|
37
|
-
}>;
|
|
38
|
-
deleverage(tokens: BigNumber, amountAMin: BigNumber, amountBMin: BigNumber, permitData: PermitData, onTransactionHash: Function): Promise<any>;
|
|
39
|
-
trackBorrows(onTransactionHash: Function): Promise<any>;
|
|
40
|
-
reinvest(onTransactionHash: Function): Promise<any>;
|
|
41
|
-
}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.Collateral = exports.Borrowable = void 0;
|
|
16
|
-
const utils_1 = require("../../../../utils");
|
|
17
|
-
const types_1 = require("../../../../config/types");
|
|
18
|
-
const general_1 = require("../../../../config/general");
|
|
19
|
-
const collateral_1 = __importDefault(require("./collateral"));
|
|
20
|
-
exports.Collateral = collateral_1.default;
|
|
21
|
-
const borrowable_1 = __importDefault(require("./borrowable"));
|
|
22
|
-
exports.Borrowable = borrowable_1.default;
|
|
23
|
-
class LendingPool {
|
|
24
|
-
constructor(interactions, accountLendingPool) {
|
|
25
|
-
this.getRouterLendingPool = () => this.accountLendingPool.lendingPool;
|
|
26
|
-
this.getRouterContract = () => this.accountLendingPool.lendingPool.factory.getRouter();
|
|
27
|
-
this.getAccountAddress = () => this.accountLendingPool.account.account;
|
|
28
|
-
this.send = (method, onTransactionHash) => this.interactions.send(method, onTransactionHash);
|
|
29
|
-
this.interactions = interactions;
|
|
30
|
-
this.accountLendingPool = accountLendingPool;
|
|
31
|
-
this.interactionsPoolToken = {
|
|
32
|
-
[types_1.PoolTokenType.Collateral]: new collateral_1.default(this, types_1.PoolTokenType.Collateral),
|
|
33
|
-
[types_1.PoolTokenType.BorrowableA]: new borrowable_1.default(this, types_1.PoolTokenType.BorrowableA),
|
|
34
|
-
[types_1.PoolTokenType.BorrowableB]: new borrowable_1.default(this, types_1.PoolTokenType.BorrowableB),
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
getLeverageAmounts(leverage, slippage) {
|
|
38
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
-
const [priceA, priceB] = yield this.lendingPool.lendingPool.getMarketPriceDenomLP();
|
|
40
|
-
// This function must use the market price, but the account leverage is calculated with the TWAP, so we need an adjustFactor
|
|
41
|
-
const [priceATWAP, priceBTWAP] = yield this.lendingPool.lendingPool.getPriceDenomLP();
|
|
42
|
-
const diff = priceA > priceATWAP ? priceA / priceATWAP : priceATWAP / priceA;
|
|
43
|
-
const adjustFactor = Math.pow((0, utils_1.impermanentLoss)(Math.pow(diff, 2)), leverage);
|
|
44
|
-
const currentLeverage = yield this.lendingPool.getLeverage();
|
|
45
|
-
const collateralValue = yield this.lendingPool.getCollateral().getDeposited();
|
|
46
|
-
const changeCollateralValue = (collateralValue * leverage / currentLeverage - collateralValue) * adjustFactor;
|
|
47
|
-
const valueForEach = changeCollateralValue / 2;
|
|
48
|
-
const bAmountA = priceA > 0 ? valueForEach / priceA : 0;
|
|
49
|
-
const bAmountB = priceB > 0 ? valueForEach / priceB : 0;
|
|
50
|
-
const cAmount = changeCollateralValue ? changeCollateralValue : 0;
|
|
51
|
-
return {
|
|
52
|
-
bAmountA: bAmountA,
|
|
53
|
-
bAmountB: bAmountB,
|
|
54
|
-
cAmount: cAmount,
|
|
55
|
-
bAmountAMin: bAmountA / slippage,
|
|
56
|
-
bAmountBMin: bAmountB / slippage,
|
|
57
|
-
cAmountMin: cAmount / Math.sqrt(slippage),
|
|
58
|
-
};
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
leverage(amountA, amountB, amountAMin, amountBMin, permitDataA, permitDataB, onTransactionHash) {
|
|
62
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
-
const router = this.getRouterContract();
|
|
64
|
-
const dataA = permitDataA ? permitDataA.permitData : '0x';
|
|
65
|
-
const dataB = permitDataB ? permitDataB.permitData : '0x';
|
|
66
|
-
if (permitDataA && permitDataB && !permitDataA.deadline.eq(permitDataB.deadline))
|
|
67
|
-
return console.error("Permits deadline are not equal");
|
|
68
|
-
const deadline = permitDataA ? permitDataA.deadline : permitDataB ? permitDataB.deadline : general_1.DEADLINE;
|
|
69
|
-
const pairAddress = this.getRouterLendingPool().pairAddress;
|
|
70
|
-
const account = this.lendingPool.account.account;
|
|
71
|
-
return this.send(router.methods.leverage(pairAddress, amountA, amountB, amountAMin, amountBMin, account, deadline, dataA, dataB), onTransactionHash);
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
getDeleverageAmounts(changeCollateralAmount, slippage) {
|
|
75
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
-
changeCollateralAmount = changeCollateralAmount !== null && changeCollateralAmount !== void 0 ? changeCollateralAmount : 0;
|
|
77
|
-
const [priceA, priceB] = yield this.lendingPool.lendingPool.getMarketPriceDenomLP();
|
|
78
|
-
const valueForEach = changeCollateralAmount / 2;
|
|
79
|
-
const bAmountA = priceA > 0 ? valueForEach / priceA : 0;
|
|
80
|
-
const bAmountB = priceB > 0 ? valueForEach / priceB : 0;
|
|
81
|
-
return {
|
|
82
|
-
bAmountA: bAmountA,
|
|
83
|
-
bAmountB: bAmountB,
|
|
84
|
-
cAmount: changeCollateralAmount,
|
|
85
|
-
bAmountAMin: bAmountA / Math.sqrt(slippage),
|
|
86
|
-
bAmountBMin: bAmountB / Math.sqrt(slippage),
|
|
87
|
-
};
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
deleverage(tokens, amountAMin, amountBMin, permitData, onTransactionHash) {
|
|
91
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
92
|
-
const router = this.getRouterContract();
|
|
93
|
-
const data = permitData ? permitData.permitData : '0x';
|
|
94
|
-
const deadline = permitData ? permitData.deadline : general_1.DEADLINE;
|
|
95
|
-
const pairAddress = this.getRouterLendingPool().pairAddress;
|
|
96
|
-
return this.send(router.methods.deleverage(pairAddress, tokens, amountAMin, amountBMin, deadline, data), onTransactionHash);
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
trackBorrows(onTransactionHash) {
|
|
100
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
-
const account = this.lendingPool.account.account;
|
|
102
|
-
const claimAggregator = this.interactions.account.onchain.contractsHelper.claimAggregator;
|
|
103
|
-
const toTrack = [];
|
|
104
|
-
for (const borrowable of [types_1.PoolTokenType.BorrowableA, types_1.PoolTokenType.BorrowableB]) {
|
|
105
|
-
const b = this.lendingPool.accountPoolTokens[borrowable];
|
|
106
|
-
if ((yield b.getBorrowed()) === 0 || (yield b.getFarmingShares()) > 0)
|
|
107
|
-
continue;
|
|
108
|
-
toTrack.push(yield this.getRouterLendingPool().poolTokens[borrowable].getPoolTokenAddress());
|
|
109
|
-
}
|
|
110
|
-
return this.send(claimAggregator.methods.trackBorrows(account, toTrack), onTransactionHash);
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
reinvest(onTransactionHash) {
|
|
114
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
115
|
-
const stakedLPToken = yield this.getRouterLendingPool().getStakedLPToken();
|
|
116
|
-
return this.send(stakedLPToken.methods.reinvest(), onTransactionHash);
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
exports.default = LendingPool;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import Interactions from "./index";
|
|
2
|
-
import * as account from '../index';
|
|
3
|
-
export default class LendingVault {
|
|
4
|
-
interactions: Interactions;
|
|
5
|
-
accountLendingVault: account.LendingVault;
|
|
6
|
-
constructor(interactions: Interactions, accountLendingVault: account.LendingVault);
|
|
7
|
-
getInteractions: () => Interactions;
|
|
8
|
-
getAccountAddress: () => string;
|
|
9
|
-
getRouterContract: () => any;
|
|
10
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
class LendingVault {
|
|
4
|
-
constructor(interactions, accountLendingVault) {
|
|
5
|
-
this.getInteractions = () => this.interactions;
|
|
6
|
-
this.getAccountAddress = () => this.accountLendingVault.account.account;
|
|
7
|
-
this.getRouterContract = () => this.getInteractions().getDefaultRouterContract();
|
|
8
|
-
this.interactions = interactions;
|
|
9
|
-
this.accountLendingVault = accountLendingVault;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
exports.default = LendingVault;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { ethers, BigNumber } from "ethers";
|
|
2
|
-
import { ApprovalType, Contract, PermitData } from "../../types";
|
|
3
|
-
import { Address } from '../../../config/types';
|
|
4
|
-
import Interactions from './index';
|
|
5
|
-
import * as onchain from '../../index';
|
|
6
|
-
export default abstract class PoolToken {
|
|
7
|
-
accountPoolToken: onchain.account.PoolToken;
|
|
8
|
-
abstract getInteractions(): Interactions;
|
|
9
|
-
abstract getAccountAddress(): Address;
|
|
10
|
-
abstract getRouterContract(): Contract;
|
|
11
|
-
getImpermaxRouter: () => onchain.default;
|
|
12
|
-
getPoolToken: () => onchain.PoolToken;
|
|
13
|
-
send(method: any, onTransactionHash: Function, value?: BigNumber): Promise<any>;
|
|
14
|
-
getOwnerSpender(): {
|
|
15
|
-
owner: string;
|
|
16
|
-
spender: any;
|
|
17
|
-
};
|
|
18
|
-
isWETH(): Promise<boolean>;
|
|
19
|
-
getAllowance(approvalType: ApprovalType): Promise<ethers.BigNumber>;
|
|
20
|
-
approve(approvalType: ApprovalType, amount: BigNumber, onTransactionHash: Function): Promise<any>;
|
|
21
|
-
getPermitData(approvalType: ApprovalType, amount: BigNumber, deadlineArg: BigNumber | null, callBack: (permitData: PermitData | null) => void): Promise<void>;
|
|
22
|
-
protected getSendData(permitData: PermitData | null): Promise<{
|
|
23
|
-
router: any;
|
|
24
|
-
ptAddress: any;
|
|
25
|
-
account: string;
|
|
26
|
-
data: string;
|
|
27
|
-
deadline: ethers.BigNumber;
|
|
28
|
-
}>;
|
|
29
|
-
protected mintETH(amount: BigNumber, permitData: PermitData, onTransactionHash: Function): Promise<any>;
|
|
30
|
-
protected mint(amount: BigNumber, permitData: PermitData, onTransactionHash: Function): Promise<any>;
|
|
31
|
-
deposit(amount: BigNumber, permitData: PermitData, onTransactionHash: Function): Promise<any>;
|
|
32
|
-
withdraw(tokens: BigNumber, permitData: PermitData, onTransactionHash: Function): Promise<any>;
|
|
33
|
-
}
|