impermax-sdk 1.1.83 → 1.2.0

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.
Files changed (47) hide show
  1. package/lib/abis/contracts/ImpermaxConfigManager.json +31595 -0
  2. package/lib/config/contracts/impermax-config-manager.d.ts +2 -0
  3. package/lib/config/contracts/impermax-config-manager.js +20 -0
  4. package/lib/config/contracts/impermax-factories.d.ts +3 -0
  5. package/lib/config/contracts/impermax-factories.js +56 -0
  6. package/lib/config/subgraphs.d.ts +16 -1
  7. package/lib/config/subgraphs.js +17 -2
  8. package/lib/config/types.d.ts +5 -0
  9. package/lib/config/types.js +7 -1
  10. package/lib/offchain/configManager/index.d.ts +2 -1
  11. package/lib/offchain/configManager/index.js +3 -1
  12. package/lib/offchain/configManager/offchainConfigManager.d.ts +2 -4
  13. package/lib/offchain/configManager/offchainConfigManager.js +3 -5
  14. package/lib/offchain/configManager/offchainConfigManagerInitializer.d.ts +2 -4
  15. package/lib/offchain/configManager/offchainConfigManagerInitializer.js +11 -23
  16. package/lib/offchain/configManager/offchainPairConfig.d.ts +40 -0
  17. package/lib/offchain/configManager/offchainPairConfig.js +86 -0
  18. package/lib/offchain/configManager/offchainProposal.d.ts +8 -0
  19. package/lib/offchain/configManager/offchainProposal.js +41 -0
  20. package/lib/offchain/lendingPool/offchainBorrowable.d.ts +3 -1
  21. package/lib/offchain/lendingPool/offchainBorrowable.js +17 -0
  22. package/lib/offchain/offchainTypes.d.ts +3 -2
  23. package/lib/offchain/query.d.ts +1 -1
  24. package/lib/offchain/query.js +8 -4
  25. package/lib/onchain/configManager/index.d.ts +5 -0
  26. package/lib/onchain/configManager/index.js +12 -0
  27. package/lib/onchain/configManager/onchainConfigManager.d.ts +12 -0
  28. package/lib/onchain/configManager/onchainConfigManager.js +38 -0
  29. package/lib/onchain/configManager/onchainPairConfig.d.ts +38 -0
  30. package/lib/onchain/configManager/onchainPairConfig.js +85 -0
  31. package/lib/onchain/configManager/onchainProposal.d.ts +17 -0
  32. package/lib/onchain/configManager/onchainProposal.js +55 -0
  33. package/lib/onchain/impermaxFactory/onchainImpermaxFactory.js +1 -1
  34. package/lib/onchain/index.d.ts +2 -1
  35. package/lib/onchain/index.js +4 -1
  36. package/lib/onchain/interactions/index.d.ts +2 -1
  37. package/lib/onchain/interactions/index.js +3 -1
  38. package/lib/onchain/interactions/onchainInteractions.d.ts +3 -0
  39. package/lib/onchain/interactions/onchainInteractions.js +3 -0
  40. package/lib/onchain/interactions/onchainInteractionsConfigManager.d.ts +17 -0
  41. package/lib/onchain/interactions/onchainInteractionsConfigManager.js +44 -0
  42. package/lib/onchain/onchain.d.ts +3 -0
  43. package/lib/onchain/onchain.js +3 -0
  44. package/lib/onchain/onchainContractsHelper.d.ts +1 -0
  45. package/lib/onchain/onchainContractsHelper.js +2 -0
  46. package/lib/onchain/onchainTypes.d.ts +19 -0
  47. package/package.json +5 -3
@@ -0,0 +1,12 @@
1
+ import Onchain from '../index';
2
+ import OnchainProposal from './onchainProposal';
3
+ export default class OnchainConfigManager {
4
+ private readonly onchain;
5
+ private readonly proposals;
6
+ private cache;
7
+ constructor(onchain: Onchain);
8
+ cleanCache(): void;
9
+ getOnchain: () => Onchain;
10
+ getConfigManagerContract(): any;
11
+ getProposal(proposalId: number): OnchainProposal;
12
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const impermax_config_manager_1 = require("../../config/contracts/impermax-config-manager");
7
+ const onchainProposal_1 = __importDefault(require("./onchainProposal"));
8
+ class OnchainConfigManager {
9
+ constructor(onchain) {
10
+ this.proposals = {};
11
+ this.cache = {};
12
+ this.getOnchain = () => this.onchain;
13
+ this.onchain = onchain;
14
+ }
15
+ cleanCache() {
16
+ this.cache = {};
17
+ for (const proposalId of Object.keys(this.proposals)) {
18
+ this.proposals[proposalId].cleanCache();
19
+ }
20
+ }
21
+ getConfigManagerContract() {
22
+ if (!this.cache.configManagerContract) {
23
+ const address = impermax_config_manager_1.IMPERMAX_CONFIG_MANAGER[this.onchain.network];
24
+ if (!address) {
25
+ console.error("ImpermaxConfigManager address not found");
26
+ return null;
27
+ }
28
+ this.cache.configManagerContract = this.onchain.getContractHelper().newImpermaxConfigManager(address);
29
+ }
30
+ return this.cache.configManagerContract;
31
+ }
32
+ getProposal(proposalId) {
33
+ if (!this.proposals[proposalId])
34
+ this.proposals[proposalId] = new onchainProposal_1.default(this, proposalId);
35
+ return this.proposals[proposalId];
36
+ }
37
+ }
38
+ exports.default = OnchainConfigManager;
@@ -0,0 +1,38 @@
1
+ import { Address, Factory, PoolTokenType } from '../../config/types';
2
+ import OnchainProposal from './onchainProposal';
3
+ import { OnchainLendingPool } from '../impermaxFactory';
4
+ import { PairConfig } from '../onchainTypes';
5
+ export default class OnchainPairConfig {
6
+ private readonly proposal;
7
+ private readonly pairConfig;
8
+ private lendingPool;
9
+ constructor(proposal: OnchainProposal, pairConfig: PairConfig);
10
+ getProposal: () => OnchainProposal;
11
+ getPairConfigData: () => PairConfig;
12
+ getOnchain: () => import("..").default;
13
+ getFactory(): Promise<Factory>;
14
+ getPairAddress(): Promise<string>;
15
+ getLendingPool(): Promise<OnchainLendingPool>;
16
+ getSafetyMargin(): Promise<number>;
17
+ getLiquidationIncentive(): Promise<number>;
18
+ getLiquidationFee(): Promise<number>;
19
+ getWhitelisted(): Promise<boolean>;
20
+ getBorrowableConfig(poolTokenType: PoolTokenType): {
21
+ getReserveFactor: () => Promise<number>;
22
+ getKinkUtilizationRate: () => Promise<number>;
23
+ getAdjustSpeed: () => Promise<number>;
24
+ getBorrowTracker: () => Promise<Address>;
25
+ };
26
+ getBorrowableA: () => {
27
+ getReserveFactor: () => Promise<number>;
28
+ getKinkUtilizationRate: () => Promise<number>;
29
+ getAdjustSpeed: () => Promise<number>;
30
+ getBorrowTracker: () => Promise<Address>;
31
+ };
32
+ getBorrowableB: () => {
33
+ getReserveFactor: () => Promise<number>;
34
+ getKinkUtilizationRate: () => Promise<number>;
35
+ getAdjustSpeed: () => Promise<number>;
36
+ getBorrowTracker: () => Promise<Address>;
37
+ };
38
+ }
@@ -0,0 +1,85 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const types_1 = require("../../config/types");
13
+ const impermax_factories_1 = require("../../config/contracts/impermax-factories");
14
+ class OnchainPairConfig {
15
+ constructor(proposal, pairConfig) {
16
+ this.getProposal = () => this.proposal;
17
+ this.getPairConfigData = () => this.pairConfig;
18
+ this.getOnchain = () => this.proposal.getOnchain();
19
+ this.getBorrowableA = () => this.getBorrowableConfig(types_1.PoolTokenType.BorrowableA);
20
+ this.getBorrowableB = () => this.getBorrowableConfig(types_1.PoolTokenType.BorrowableB);
21
+ this.proposal = proposal;
22
+ this.pairConfig = pairConfig;
23
+ }
24
+ getFactory() {
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ const factoryAddress = this.pairConfig.factory;
27
+ return (0, impermax_factories_1.getFactoryByAddress)(this.getOnchain().network, factoryAddress);
28
+ });
29
+ }
30
+ getPairAddress() {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ return this.pairConfig.pair;
33
+ });
34
+ }
35
+ getLendingPool() {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ if (!this.lendingPool)
38
+ this.lendingPool = (() => __awaiter(this, void 0, void 0, function* () {
39
+ const impermaxFactory = yield this.getOnchain().getImpermaxFactory(yield this.getFactory());
40
+ return impermaxFactory.getLendingPool(yield this.getPairAddress());
41
+ }))();
42
+ return this.lendingPool;
43
+ });
44
+ }
45
+ getSafetyMargin() {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ return Math.pow((parseInt(this.pairConfig.collateralConfig.safetyMarginSqrt) / 1e18), 2);
48
+ });
49
+ }
50
+ getLiquidationIncentive() {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ return parseInt(this.pairConfig.collateralConfig.liquidationIncentive) / 1e18;
53
+ });
54
+ }
55
+ getLiquidationFee() {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ return parseInt(this.pairConfig.collateralConfig.liquidationFee) / 1e18;
58
+ });
59
+ }
60
+ getWhitelisted() {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ return this.pairConfig.whitelistState !== '0';
63
+ });
64
+ }
65
+ getBorrowableConfig(poolTokenType) {
66
+ const borrowableConfig = poolTokenType == types_1.PoolTokenType.BorrowableA
67
+ ? this.pairConfig.borrowable0Config
68
+ : this.pairConfig.borrowable1Config;
69
+ return {
70
+ getReserveFactor: () => __awaiter(this, void 0, void 0, function* () {
71
+ return parseInt(borrowableConfig.reserveFactor) / 1e18;
72
+ }),
73
+ getKinkUtilizationRate: () => __awaiter(this, void 0, void 0, function* () {
74
+ return parseInt(borrowableConfig.kinkUtilizationRate) / 1e18;
75
+ }),
76
+ getAdjustSpeed: () => __awaiter(this, void 0, void 0, function* () {
77
+ return parseInt(borrowableConfig.adjustSpeed) / 1e18;
78
+ }),
79
+ getBorrowTracker: () => __awaiter(this, void 0, void 0, function* () {
80
+ return borrowableConfig.borrowTracker;
81
+ }),
82
+ };
83
+ }
84
+ }
85
+ exports.default = OnchainPairConfig;
@@ -0,0 +1,17 @@
1
+ import OnchainConfigManager from './onchainConfigManager';
2
+ import OnchainPairConfig from './onchainPairConfig';
3
+ import { PairConfig } from '../onchainTypes';
4
+ export default class OnchainProposal {
5
+ private readonly configManager;
6
+ private readonly proposalId;
7
+ private pairConfigs;
8
+ private cache;
9
+ constructor(configManager: OnchainConfigManager, proposalId: number);
10
+ cleanCache(): void;
11
+ getConfigManager: () => OnchainConfigManager;
12
+ getProposalId: () => number;
13
+ getOnchain: () => import("..").default;
14
+ getProposalData(): Promise<PairConfig[]>;
15
+ getPairConfig(index: number): Promise<OnchainPairConfig>;
16
+ getPairConfigsLength(): Promise<number>;
17
+ }
@@ -0,0 +1,55 @@
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 onchainPairConfig_1 = __importDefault(require("./onchainPairConfig"));
16
+ class OnchainProposal {
17
+ constructor(configManager, proposalId) {
18
+ this.pairConfigs = {};
19
+ this.cache = {};
20
+ this.getConfigManager = () => this.configManager;
21
+ this.getProposalId = () => this.proposalId;
22
+ this.getOnchain = () => this.configManager.getOnchain();
23
+ this.configManager = configManager;
24
+ this.proposalId = proposalId;
25
+ }
26
+ cleanCache() {
27
+ this.cache = {};
28
+ }
29
+ getProposalData() {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ if (!this.cache.proposalData)
32
+ this.cache.proposalData = (() => __awaiter(this, void 0, void 0, function* () {
33
+ const configManagerContract = yield this.configManager.getConfigManagerContract();
34
+ return configManagerContract.methods.getProposal(this.proposalId).call();
35
+ }))();
36
+ return this.cache.proposalData;
37
+ });
38
+ }
39
+ getPairConfig(index) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ if (!this.pairConfigs[index]) {
42
+ const proposalData = yield this.getProposalData();
43
+ this.pairConfigs[index] = new onchainPairConfig_1.default(this, proposalData[index]);
44
+ }
45
+ return this.pairConfigs[index];
46
+ });
47
+ }
48
+ getPairConfigsLength() {
49
+ return __awaiter(this, void 0, void 0, function* () {
50
+ const proposalData = yield this.getProposalData();
51
+ return proposalData.length;
52
+ });
53
+ }
54
+ }
55
+ exports.default = OnchainProposal;
@@ -36,7 +36,7 @@ class OnchainImpermaxFactory {
36
36
  if (!this.cache.routerContract) {
37
37
  const address = routers_1.ROUTER[this.onchain.network][this.factory];
38
38
  if (!address) {
39
- console.error("SimpleUniswapOracle address not found");
39
+ console.error("Router address not found");
40
40
  return null;
41
41
  }
42
42
  this.cache.routerContract = this.onchain.getContractHelper().newRouter(address);
@@ -2,8 +2,9 @@ import OnchainContractsHelper from "./onchainContractsHelper";
2
2
  import OnchainAccount, * as account from "./account";
3
3
  import OnchainImpermaxFactory, * as impermaxFactory from './impermaxFactory';
4
4
  import OnchainInteractions, * as interactions from './interactions';
5
+ import OnchainConfigManager, * as configManager from './configManager';
5
6
  import OnchainLendingVault from './onchainLendingVault';
6
7
  import OnchainPoolToken from "./onchainPoolToken";
7
8
  import Onchain from './onchain';
8
- export { account, impermaxFactory, interactions, OnchainAccount, OnchainInteractions, OnchainPoolToken, OnchainLendingVault, OnchainImpermaxFactory, OnchainContractsHelper, };
9
+ export { account, impermaxFactory, interactions, configManager, OnchainAccount, OnchainInteractions, OnchainConfigManager, OnchainPoolToken, OnchainLendingVault, OnchainImpermaxFactory, OnchainContractsHelper, };
9
10
  export default Onchain;
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.OnchainContractsHelper = exports.OnchainImpermaxFactory = exports.OnchainLendingVault = exports.OnchainPoolToken = exports.OnchainInteractions = exports.OnchainAccount = exports.interactions = exports.impermaxFactory = exports.account = void 0;
29
+ exports.OnchainContractsHelper = exports.OnchainImpermaxFactory = exports.OnchainLendingVault = exports.OnchainPoolToken = exports.OnchainConfigManager = exports.OnchainInteractions = exports.OnchainAccount = exports.configManager = exports.interactions = exports.impermaxFactory = exports.account = void 0;
30
30
  const onchainContractsHelper_1 = __importDefault(require("./onchainContractsHelper"));
31
31
  exports.OnchainContractsHelper = onchainContractsHelper_1.default;
32
32
  const account_1 = __importStar(require("./account")), account = account_1;
@@ -38,6 +38,9 @@ exports.impermaxFactory = impermaxFactory;
38
38
  const interactions_1 = __importStar(require("./interactions")), interactions = interactions_1;
39
39
  exports.OnchainInteractions = interactions_1.default;
40
40
  exports.interactions = interactions;
41
+ const configManager_1 = __importStar(require("./configManager")), configManager = configManager_1;
42
+ exports.OnchainConfigManager = configManager_1.default;
43
+ exports.configManager = configManager;
41
44
  const onchainLendingVault_1 = __importDefault(require("./onchainLendingVault"));
42
45
  exports.OnchainLendingVault = onchainLendingVault_1.default;
43
46
  const onchainPoolToken_1 = __importDefault(require("./onchainPoolToken"));
@@ -2,6 +2,7 @@ import * as lendingPool from './lendingPool';
2
2
  import OnchainInteractionsLendingPool from "./lendingPool";
3
3
  import OnchainInteractionsPoolToken from "./onchainInteractionsPoolToken";
4
4
  import OnchainInteractionsLendingVault from './onchainInteractionsLendingVault';
5
+ import OnchainInteractionsConfigManager from './onchainInteractionsConfigManager';
5
6
  import OnchainInteractions from './onchainInteractions';
6
- export { lendingPool, OnchainInteractionsLendingPool, OnchainInteractionsPoolToken, OnchainInteractionsLendingVault, };
7
+ export { lendingPool, OnchainInteractionsLendingPool, OnchainInteractionsPoolToken, OnchainInteractionsLendingVault, OnchainInteractionsConfigManager, };
7
8
  export default OnchainInteractions;
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.OnchainInteractionsLendingVault = exports.OnchainInteractionsPoolToken = exports.OnchainInteractionsLendingPool = exports.lendingPool = void 0;
29
+ exports.OnchainInteractionsConfigManager = exports.OnchainInteractionsLendingVault = exports.OnchainInteractionsPoolToken = exports.OnchainInteractionsLendingPool = exports.lendingPool = void 0;
30
30
  const lendingPool = __importStar(require("./lendingPool"));
31
31
  exports.lendingPool = lendingPool;
32
32
  const lendingPool_1 = __importDefault(require("./lendingPool"));
@@ -35,5 +35,7 @@ const onchainInteractionsPoolToken_1 = __importDefault(require("./onchainInterac
35
35
  exports.OnchainInteractionsPoolToken = onchainInteractionsPoolToken_1.default;
36
36
  const onchainInteractionsLendingVault_1 = __importDefault(require("./onchainInteractionsLendingVault"));
37
37
  exports.OnchainInteractionsLendingVault = onchainInteractionsLendingVault_1.default;
38
+ const onchainInteractionsConfigManager_1 = __importDefault(require("./onchainInteractionsConfigManager"));
39
+ exports.OnchainInteractionsConfigManager = onchainInteractionsConfigManager_1.default;
38
40
  const onchainInteractions_1 = __importDefault(require("./onchainInteractions"));
39
41
  exports.default = onchainInteractions_1.default;
@@ -5,9 +5,11 @@ import OnchainInteractionsLendingVault from './onchainInteractionsLendingVault';
5
5
  import { AirdropData, Contract } from '../onchainTypes';
6
6
  import { BigNumber } from 'ethers';
7
7
  import OnchainAccount from '../account';
8
+ import OnchainInteractionsConfigManager from './onchainInteractionsConfigManager';
8
9
  export default class OnchainInteractions {
9
10
  private readonly onchain;
10
11
  private readonly accountAddress;
12
+ private readonly configManager;
11
13
  private readonly lendingPools;
12
14
  private readonly lendingVaults;
13
15
  private cache;
@@ -16,6 +18,7 @@ export default class OnchainInteractions {
16
18
  getAccountAddress: () => string;
17
19
  getAccount(): OnchainAccount;
18
20
  cleanCache(): Promise<void>;
21
+ getConfigManager: () => OnchainInteractionsConfigManager;
19
22
  private initializeLendingPool;
20
23
  getLendingPool(factory: Factory, pair: Address): OnchainInteractionsLendingPool;
21
24
  private initializeLendingVault;
@@ -16,14 +16,17 @@ const lendingPool_1 = __importDefault(require("./lendingPool"));
16
16
  const onchainInteractionsLendingVault_1 = __importDefault(require("./onchainInteractionsLendingVault"));
17
17
  const routers_1 = require("../../config/contracts/routers");
18
18
  const ethers_1 = require("ethers");
19
+ const onchainInteractionsConfigManager_1 = __importDefault(require("./onchainInteractionsConfigManager"));
19
20
  const ZERO = ethers_1.BigNumber.from(0);
20
21
  class OnchainInteractions {
21
22
  constructor(onchain, accountAddress) {
22
23
  this.cache = {};
23
24
  this.getOnchain = () => this.onchain;
24
25
  this.getAccountAddress = () => this.accountAddress;
26
+ this.getConfigManager = () => this.configManager;
25
27
  this.onchain = onchain;
26
28
  this.accountAddress = accountAddress;
29
+ this.configManager = new onchainInteractionsConfigManager_1.default(this, onchain.getConfigManager());
27
30
  this.lendingPools = {};
28
31
  this.lendingVaults = {};
29
32
  }
@@ -0,0 +1,17 @@
1
+ import { BigNumber } from "ethers";
2
+ import OnchainInteractions from './index';
3
+ import OnchainConfigManager from '../configManager';
4
+ import { PairConfig } from '../onchainTypes';
5
+ export default class OnchainInteractionsConfigManager {
6
+ private readonly interactions;
7
+ private readonly configManager;
8
+ constructor(interactions: OnchainInteractions, configManager: OnchainConfigManager);
9
+ getInteractions: () => OnchainInteractions;
10
+ getConfigManager: () => OnchainConfigManager;
11
+ getConfigManagerContract: () => any;
12
+ getOnchain: () => import("..").default;
13
+ protected send(method: any, onTransactionHash: Function, value?: BigNumber): Promise<any>;
14
+ approveProposal(proposalId: number, onTransactionHash: Function): Promise<any>;
15
+ rejectProposal(proposalId: number, onTransactionHash: Function): Promise<any>;
16
+ makeProposal(pairConfigs: PairConfig[], onTransactionHash: Function): Promise<any>;
17
+ }
@@ -0,0 +1,44 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ class OnchainInteractionsConfigManager {
13
+ constructor(interactions, configManager) {
14
+ this.getInteractions = () => this.interactions;
15
+ this.getConfigManager = () => this.configManager;
16
+ // Shortcuts
17
+ this.getConfigManagerContract = () => this.configManager.getConfigManagerContract();
18
+ this.getOnchain = () => this.getInteractions().getOnchain();
19
+ this.interactions = interactions;
20
+ this.configManager = configManager;
21
+ }
22
+ send(method, onTransactionHash, value) {
23
+ return this.getInteractions().send(method, onTransactionHash, value);
24
+ }
25
+ approveProposal(proposalId, onTransactionHash) {
26
+ return __awaiter(this, void 0, void 0, function* () {
27
+ const contract = this.getConfigManagerContract();
28
+ return this.send(contract.methods.approveProposal(proposalId), onTransactionHash);
29
+ });
30
+ }
31
+ rejectProposal(proposalId, onTransactionHash) {
32
+ return __awaiter(this, void 0, void 0, function* () {
33
+ const contract = this.getConfigManagerContract();
34
+ return this.send(contract.methods.rejectProposal(proposalId), onTransactionHash);
35
+ });
36
+ }
37
+ makeProposal(pairConfigs, onTransactionHash) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ const contract = this.getConfigManagerContract();
40
+ return this.send(contract.methods.makeProposal(pairConfigs), onTransactionHash);
41
+ });
42
+ }
43
+ }
44
+ exports.default = OnchainInteractionsConfigManager;
@@ -6,6 +6,7 @@ import OnchainLendingVault from './onchainLendingVault';
6
6
  import OnchainAccount from './account';
7
7
  import OnchainInteractions from './interactions';
8
8
  import { OnchainConfig } from './onchainTypes';
9
+ import OnchainConfigManager from './configManager';
9
10
  export default class Onchain {
10
11
  readonly network: Networks;
11
12
  private readonly offchain;
@@ -15,6 +16,7 @@ export default class Onchain {
15
16
  readonly dust: number;
16
17
  priceInverted: boolean;
17
18
  protected contractsHelper: OnchainContractsHelper;
19
+ protected configManager: OnchainConfigManager;
18
20
  protected factories: FactoryIndex<OnchainImpermaxFactory>;
19
21
  protected lendingVaults: AddressIndex<OnchainLendingVault>;
20
22
  protected accounts: AddressIndex<OnchainAccount>;
@@ -24,6 +26,7 @@ export default class Onchain {
24
26
  setPriceInverted(priceInverted: boolean): void;
25
27
  getOffchain: () => Offchain;
26
28
  getContractHelper: () => OnchainContractsHelper;
29
+ getConfigManager: () => OnchainConfigManager;
27
30
  getImpermaxFactory(factory: Factory): OnchainImpermaxFactory;
28
31
  getLendingVault(vaultAddress: Address): OnchainLendingVault;
29
32
  getAccount(address: Address): OnchainAccount;
@@ -8,10 +8,12 @@ const impermaxFactory_1 = __importDefault(require("./impermaxFactory"));
8
8
  const onchainLendingVault_1 = __importDefault(require("./onchainLendingVault"));
9
9
  const account_1 = __importDefault(require("./account"));
10
10
  const interactions_1 = __importDefault(require("./interactions"));
11
+ const configManager_1 = __importDefault(require("./configManager"));
11
12
  class Onchain {
12
13
  constructor(cfg) {
13
14
  this.getOffchain = () => this.offchain;
14
15
  this.getContractHelper = () => this.contractsHelper;
16
+ this.getConfigManager = () => this.configManager;
15
17
  this.network = cfg.network;
16
18
  this.offchain = cfg.offchain;
17
19
  this.web3 = cfg.web3;
@@ -20,6 +22,7 @@ class Onchain {
20
22
  this.dust = 1.000001;
21
23
  this.priceInverted = cfg.priceInverted ? cfg.priceInverted : false;
22
24
  this.contractsHelper = new onchainContractsHelper_1.default(this);
25
+ this.configManager = new configManager_1.default(this);
23
26
  this.factories = {};
24
27
  this.accounts = {};
25
28
  this.lendingVaults = {};
@@ -27,4 +27,5 @@ export default class OnchainContractsHelper {
27
27
  newImpermaxChef: (address: Address) => any;
28
28
  newLendingVault: (address: Address) => any;
29
29
  newLendingVaultWatcher: (address: Address) => any;
30
+ newImpermaxConfigManager: (address: Address) => any;
30
31
  }
@@ -20,6 +20,7 @@ const IStakingRewards_json_1 = __importDefault(require("../abis/contracts/IStaki
20
20
  const ImpermaxChef_json_1 = __importDefault(require("../abis/contracts/ImpermaxChef.json"));
21
21
  const ILendingVaultV1_json_1 = __importDefault(require("../abis/contracts/ILendingVaultV1.json"));
22
22
  const LendingVaultWatcher01_json_1 = __importDefault(require("../abis/contracts/LendingVaultWatcher01.json"));
23
+ const ImpermaxConfigManager_json_1 = __importDefault(require("../abis/contracts/ImpermaxConfigManager.json"));
23
24
  const impermax_chef_1 = require("../config/contracts/impermax-chef");
24
25
  const claim_aggregators_1 = require("../config/contracts/claim-aggregators");
25
26
  const merkle_distributors_1 = require("../config/contracts/merkle-distributors");
@@ -43,6 +44,7 @@ class OnchainContractsHelper {
43
44
  this.newImpermaxChef = (address) => this.newContract(ImpermaxChef_json_1.default.abi, address);
44
45
  this.newLendingVault = (address) => this.newContract(ILendingVaultV1_json_1.default.abi, address);
45
46
  this.newLendingVaultWatcher = (address) => this.newContract(LendingVaultWatcher01_json_1.default.abi, address);
47
+ this.newImpermaxConfigManager = (address) => this.newContract(ImpermaxConfigManager_json_1.default.abi, address);
46
48
  this.onchain = onchain;
47
49
  this.impermaxChef = this.newImpermaxChef(impermax_chef_1.IMPERMAX_CHEF[this.onchain.network]);
48
50
  this.merkleDistributorIbex = this.newMerkleDistributor(merkle_distributors_1.MERKLE_DISTRIBUTOR_IBEX[this.onchain.network]);
@@ -43,3 +43,22 @@ export interface PendingRewardUI {
43
43
  symbol: string;
44
44
  amount: number;
45
45
  }
46
+ export interface CollateralConfig {
47
+ safetyMarginSqrt: string;
48
+ liquidationIncentive: string;
49
+ liquidationFee: string;
50
+ }
51
+ export interface BorrowableConfig {
52
+ reserveFactor: string;
53
+ kinkUtilizationRate: string;
54
+ adjustSpeed: string;
55
+ borrowTracker: string;
56
+ }
57
+ export interface PairConfig {
58
+ factory: string;
59
+ pair: string;
60
+ whitelistState: string;
61
+ collateralConfig: CollateralConfig;
62
+ borrowable0Config: BorrowableConfig;
63
+ borrowable1Config: BorrowableConfig;
64
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "impermax-sdk",
3
- "version": "1.1.83",
3
+ "version": "1.2.0",
4
4
  "description": "",
5
5
  "main": "./lib/index.js",
6
6
  "module": "./lib/index.js",
@@ -8,7 +8,7 @@
8
8
  "lib/"
9
9
  ],
10
10
  "scripts": {
11
- "test": "mocha",
11
+ "test": "mocha --timeout 15000",
12
12
  "tsc": "tsc -p tsconfig.json",
13
13
  "prepublishOnly": "npm run tsc"
14
14
  },
@@ -19,6 +19,7 @@
19
19
  "typescript": "^4.0.3"
20
20
  },
21
21
  "dependencies": {
22
+ "@truffle/hdwallet-provider": "^2.1.15",
22
23
  "apollo-cache-inmemory": "^1.6.6",
23
24
  "apollo-client": "^2.6.10",
24
25
  "apollo-link-http": "^1.5.17",
@@ -26,6 +27,7 @@
26
27
  "ethers": "^5.0.26",
27
28
  "graphql": "^15.4.0",
28
29
  "graphql-tag": "^2.11.0",
29
- "mocha": "^10.2.0"
30
+ "mocha": "^10.2.0",
31
+ "web3": "^1.3.1"
30
32
  }
31
33
  }