impermax-sdk 2.1.248 → 2.1.250

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.
@@ -75,7 +75,7 @@ exports.ROUTER = {
75
75
  [types_1.Networks.Moonbeam]: {},
76
76
  [types_1.Networks.Sxnetwork]: {},
77
77
  [types_1.Networks.Base]: {
78
- [types_1.Factory.SOLV2]: '0x1Ab153346De262D59642e63F9569C656EdC6efaF',
78
+ [types_1.Factory.SOLV2]: '0x9940d4E448Fa0CE8C2CAC9292734A153CD69b04f',
79
79
  [types_1.Factory.SOL_STABLE]: '',
80
80
  [types_1.Factory.V2V2]: ''
81
81
  },
@@ -1,8 +1,10 @@
1
- import { Borrowable } from '../../../config/types';
1
+ import { Borrowable, Extension, Factory } from '../../../config/types';
2
2
  import OnchainInteractionsLendingPool from './index';
3
3
  import OnchainInteractionsPoolToken from '../onchainInteractionsPoolToken';
4
4
  import OnchainBorrowable from '../../impermaxFactory/lendingPool/onchainBorrowable';
5
5
  import OnchainAccountBorrowable from '../../account/lendingPool/onchainAccountBorrowable';
6
+ import { BigNumber } from "ethers";
7
+ import { Permit } from "../../onchainTypes";
6
8
  export default abstract class OnchainInteractionsBorrowable extends OnchainInteractionsPoolToken {
7
9
  protected readonly lendingPool: OnchainInteractionsLendingPool;
8
10
  protected readonly poolToken: OnchainBorrowable;
@@ -14,4 +16,10 @@ export default abstract class OnchainInteractionsBorrowable extends OnchainInter
14
16
  getAccountBorrowable: () => OnchainAccountBorrowable;
15
17
  getPoolTokenRouter: () => any;
16
18
  private getBorrowableType;
19
+ /**
20
+ * Borrow approve
21
+ */
22
+ getBorrowAllowance(factory?: Factory, extension?: Extension): Promise<BigNumber>;
23
+ borrowApprove(amount: BigNumber, onTransactionHash: Function, factory?: Factory, extension?: Extension): Promise<any>;
24
+ permitBorrow(amount: BigNumber, factory?: Factory, extension?: Extension): Promise<Permit>;
17
25
  }
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const onchainInteractionsPoolToken_1 = __importDefault(require("../onchainInteractionsPoolToken"));
7
+ const ethers_1 = require("ethers");
7
8
  class OnchainInteractionsBorrowable extends onchainInteractionsPoolToken_1.default {
8
9
  constructor(lendingPool, borrowable) {
9
10
  super();
@@ -20,5 +21,24 @@ class OnchainInteractionsBorrowable extends onchainInteractionsPoolToken_1.defau
20
21
  getAccountPoolToken() {
21
22
  return this.lendingPool.getAccountLendingPool().getBorrowable(this.getBorrowableType());
22
23
  }
24
+ /**
25
+ * Borrow approve
26
+ */
27
+ async getBorrowAllowance(factory, extension) {
28
+ const poolToken = await this.poolToken.getPoolToken();
29
+ const { owner, spender } = this.getOwnerSpender(factory, extension);
30
+ const allowance = await poolToken.methods.borrowAllowance(owner, spender).call();
31
+ return ethers_1.BigNumber.from(allowance);
32
+ }
33
+ async borrowApprove(amount, onTransactionHash, factory, extension) {
34
+ const { spender } = this.getOwnerSpender(factory, extension);
35
+ const poolToken = await this.poolToken.getPoolToken();
36
+ return this.send(poolToken.methods.borrowApprove(spender, amount), onTransactionHash);
37
+ }
38
+ async permitBorrow(amount, factory, extension) {
39
+ const { owner, spender } = this.getOwnerSpender(factory, extension);
40
+ const poolToken = await this.poolToken.getPoolToken();
41
+ return this.getPermitHelper().getBorrowPermit(poolToken, owner, spender, amount);
42
+ }
23
43
  }
24
44
  exports.default = OnchainInteractionsBorrowable;
@@ -1,5 +1,3 @@
1
- import { Permits } from '../../onchainTypes';
2
- import { BigNumber } from 'ethers';
3
1
  import OnchainInteractionsBorrowable from "./onchainInteractionsBorrowable";
4
2
  import { OnchainBorrowableV2 } from "../../impermaxFactory/lendingPool";
5
3
  import OnchainInteractionsLendingPoolV2 from "./onchainInteractionsLendingPoolV2";
@@ -8,8 +6,4 @@ export default class OnchainInteractionsBorrowableV2 extends OnchainInteractions
8
6
  protected readonly poolToken: OnchainBorrowableV2;
9
7
  getLendingPool: () => OnchainInteractionsLendingPoolV2;
10
8
  getPoolToken: () => OnchainBorrowableV2;
11
- getBorrowAllowance(): Promise<BigNumber>;
12
- borrowApprove(amount: BigNumber, onTransactionHash: Function): Promise<any>;
13
- borrow(amount: BigNumber, permits: Permits, onTransactionHash: Function): Promise<any>;
14
- repay(amount: BigNumber, onTransactionHash: Function): Promise<any>;
15
9
  }
@@ -3,44 +3,32 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const general_1 = require("../../../config/general");
7
- const ethers_1 = require("ethers");
8
6
  const onchainInteractionsBorrowable_1 = __importDefault(require("./onchainInteractionsBorrowable"));
9
7
  class OnchainInteractionsBorrowableV2 extends onchainInteractionsBorrowable_1.default {
10
8
  constructor() {
11
9
  super(...arguments);
12
10
  this.getLendingPool = () => this.lendingPool;
13
11
  this.getPoolToken = () => this.poolToken;
14
- }
15
- async getBorrowAllowance() {
16
- const poolToken = await this.poolToken.getPoolToken();
17
- const { owner, spender } = this.getOwnerSpender();
18
- const allowance = await poolToken.methods.borrowAllowance(owner, spender).call();
19
- return ethers_1.BigNumber.from(allowance);
20
- }
21
- async borrowApprove(amount, onTransactionHash) {
22
- const { spender } = this.getOwnerSpender();
23
- const poolToken = await this.poolToken.getPoolToken();
24
- return this.send(poolToken.methods.borrowApprove(spender, amount), onTransactionHash);
25
- }
26
- async borrow(amount, permits, onTransactionHash) {
27
- const { router, ptAddress, account } = await this.getSendData(permits);
28
- // TODO temporary fix
29
- if (await this.isWETH()) {
12
+ /*
13
+ public async borrow(amount: BigNumber, permits: Permits, onTransactionHash: Function) {
14
+ const {router, ptAddress, account} = await this.getSendData(permits);
15
+ // TODO temporary fix
16
+ if (await this.isWETH()) {
30
17
  return this.send(router.methods.borrowETH(ptAddress, amount, account, '100000000000000000', '0x'), onTransactionHash);
31
- }
32
- else {
18
+ } else {
33
19
  return this.send(router.methods.borrow(ptAddress, amount, account, '100000000000000000', '0x'), onTransactionHash);
20
+ }
34
21
  }
35
- }
36
- async repay(amount, onTransactionHash) {
37
- const { router, ptAddress, account } = await this.getSendData([]);
38
- if (await this.isWETH()) {
39
- return this.send(router.methods.repayETH(ptAddress, account, general_1.DEADLINE), onTransactionHash, amount);
40
- }
41
- else {
42
- return this.send(router.methods.repay(ptAddress, amount, account, general_1.DEADLINE), onTransactionHash);
22
+
23
+ public async repay(amount: BigNumber, onTransactionHash: Function) {
24
+ const {router, ptAddress, account} = await this.getSendData([]);
25
+ if (await this.isWETH()) {
26
+ return this.send(router.methods.repayETH(ptAddress, account, DEADLINE), onTransactionHash, amount);
27
+ } else {
28
+ return this.send(router.methods.repay(ptAddress, amount, account, DEADLINE), onTransactionHash);
29
+ }
43
30
  }
31
+ */
44
32
  }
45
33
  }
46
34
  exports.default = OnchainInteractionsBorrowableV2;
@@ -16,6 +16,7 @@ export default class OnchainPermitHelper {
16
16
  private getPermit2SingleJSONData;
17
17
  private getSignature;
18
18
  getTokenPermit(token: Contract, owner: Address, spender: Address, value: BigNumber, version?: null): Promise<Permit>;
19
+ getBorrowPermit(token: Contract, owner: Address, spender: Address, value: BigNumber): Promise<Permit>;
19
20
  getNftPermit(token: Contract, owner: Address, spender: Address, tokenId: BigNumber): Promise<Permit>;
20
21
  getPermit2Single(token: Contract, owner: Address, spender: Address, value: BigNumber): Promise<Permit>;
21
22
  }
@@ -56,7 +56,6 @@ const PERMIT2_TYPES = {
56
56
  PermitSingle: PERMIT2_SINGLE,
57
57
  };
58
58
  class OnchainPermitHelper {
59
- // TODO crate new router for V2 otherwise borrowPermit will stop working
60
59
  constructor(onchain) {
61
60
  this.deadline = general_1.DEADLINE.toString();
62
61
  this.getDomainPermit1 = async (contract, version = null) => ({
@@ -80,7 +79,6 @@ class OnchainPermitHelper {
80
79
  }
81
80
  async getTokenPermitJSONData(contract, message, version = null) {
82
81
  const domain = await this.getDomainPermit1(contract, version);
83
- console.log(domain);
84
82
  const primaryType = "Permit";
85
83
  return JSON.stringify({ types: TOKEN_PERMIT_TYPES, domain, primaryType, message });
86
84
  }
@@ -110,7 +108,6 @@ class OnchainPermitHelper {
110
108
  reject(err);
111
109
  }
112
110
  else {
113
- console.log("signature", data.result);
114
111
  resolve(data.result);
115
112
  }
116
113
  });
@@ -131,6 +128,21 @@ class OnchainPermitHelper {
131
128
  signature: await this.getSignature(owner, jsonData)
132
129
  };
133
130
  }
131
+ async getBorrowPermit(token, owner, spender, value) {
132
+ const nonce = await token.methods.nonces(owner).call();
133
+ const jsonData = await this.getBorrowPermitJSONData(token, {
134
+ owner,
135
+ spender,
136
+ value: value.toString(),
137
+ nonce: ethers_1.BigNumber.from(nonce).toString(),
138
+ deadline: this.deadline,
139
+ });
140
+ return {
141
+ permitType: onchainTypes_1.PermitType.PERMIT_BORROW,
142
+ permitData: ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256', 'uint256'], [token._address, value.toString(), this.deadline]),
143
+ signature: await this.getSignature(owner, jsonData)
144
+ };
145
+ }
134
146
  async getNftPermit(token, owner, spender, tokenId) {
135
147
  const nonce = await token.methods.nonces(tokenId).call();
136
148
  const jsonData = await this.getNftPermitJSONData(token, {
@@ -162,7 +174,6 @@ class OnchainPermitHelper {
162
174
  spender,
163
175
  sigDeadline: this.deadline,
164
176
  });
165
- console.log("jsonData", jsonData);
166
177
  return {
167
178
  permitType: onchainTypes_1.PermitType.PERMIT2_SINGLE,
168
179
  permitData: ethers_1.ethers.utils.defaultAbiCoder.encode([permitDetailsType, 'address', 'uint256'], [details, spender, this.deadline]),
@@ -11,7 +11,8 @@ export declare enum PermitType {
11
11
  PERMIT1 = 0,
12
12
  PERMIT_NFT = 1,
13
13
  PERMIT2_SINGLE = 2,
14
- PERMIT2_BATCH = 3
14
+ PERMIT2_BATCH = 3,
15
+ PERMIT_BORROW = 4
15
16
  }
16
17
  export interface PermitData {
17
18
  permitData: string;
@@ -13,6 +13,7 @@ var PermitType;
13
13
  PermitType[PermitType["PERMIT_NFT"] = 1] = "PERMIT_NFT";
14
14
  PermitType[PermitType["PERMIT2_SINGLE"] = 2] = "PERMIT2_SINGLE";
15
15
  PermitType[PermitType["PERMIT2_BATCH"] = 3] = "PERMIT2_BATCH";
16
+ PermitType[PermitType["PERMIT_BORROW"] = 4] = "PERMIT_BORROW";
16
17
  })(PermitType = exports.PermitType || (exports.PermitType = {}));
17
18
  exports.NO_CHANGES = {
18
19
  changeBorrowedA: 0,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "impermax-sdk",
3
- "version": "2.1.248",
3
+ "version": "2.1.250",
4
4
  "description": "",
5
5
  "main": "./lib/index.js",
6
6
  "module": "./lib/index.js",