impermax-sdk 2.1.30 → 2.1.31

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.
@@ -21,7 +21,7 @@ export default abstract class OnchainInteractionsPoolToken {
21
21
  getPoolTokenAllowance(): Promise<ethers.BigNumber>;
22
22
  getUnderlyingAllowance(): Promise<ethers.BigNumber>;
23
23
  approvePoolToken(amount: BigNumber, onTransactionHash: Function): Promise<any>;
24
- permitPoolToken(amount: BigNumber, callBack: (permit: Permit | null) => void): Promise<void>;
24
+ permitPoolToken(amount: BigNumber): Promise<Permit>;
25
25
  approveUnderlying(amount: BigNumber, onTransactionHash: Function): Promise<any>;
26
26
  protected getSendData(permits: Permits): Promise<{
27
27
  router: any;
@@ -79,11 +79,11 @@ class OnchainInteractionsPoolToken {
79
79
  return this.send(poolToken.methods.approve(spender, amount), onTransactionHash);
80
80
  });
81
81
  }
82
- permitPoolToken(amount, callBack) {
82
+ permitPoolToken(amount) {
83
83
  return __awaiter(this, void 0, void 0, function* () {
84
84
  const { owner, spender } = this.getOwnerSpender();
85
85
  const poolToken = yield this.poolToken.getPoolToken();
86
- this.getPermitHelper().getTokenPermit(poolToken, owner, spender, amount, callBack);
86
+ return this.getPermitHelper().getTokenPermit(poolToken, owner, spender, amount);
87
87
  });
88
88
  }
89
89
  approveUnderlying(amount, onTransactionHash) {
@@ -15,7 +15,7 @@ export default class OnchainPermitHelper {
15
15
  private getNftPermitJSONData;
16
16
  private getPermit2SingleJSONData;
17
17
  private getSignature;
18
- getTokenPermit(token: Contract, owner: Address, spender: Address, value: BigNumber, callBack: (permit: Permit | null) => void): Promise<void>;
19
- getNftPermit(token: Contract, owner: Address, spender: Address, tokenId: BigNumber, callBack: (permit: Permit | null) => void): Promise<void>;
20
- getPermit2Single(token: Contract, owner: Address, spender: Address, value: BigNumber, callBack: (permit: Permit | null) => void): Promise<void>;
18
+ getTokenPermit(token: Contract, owner: Address, spender: Address, value: BigNumber): Promise<Permit>;
19
+ getNftPermit(token: Contract, owner: Address, spender: Address, tokenId: BigNumber): Promise<Permit>;
20
+ getPermit2Single(token: Contract, owner: Address, spender: Address, value: BigNumber): Promise<Permit>;
21
21
  }
@@ -48,12 +48,20 @@ const PERMIT2_SINGLE = [
48
48
  { name: "spender", type: "address" },
49
49
  { name: "sigDeadline", type: "uint256" },
50
50
  ];
51
- const TYPES = {
51
+ const TOKEN_PERMIT_TYPES = {
52
52
  EIP712Domain: EIP712_DOMAIN,
53
- Permit2Domain: PERMIT2_DOMAIN,
54
53
  Permit: PERMIT,
54
+ };
55
+ const BORROW_PERMIT_TYPES = {
56
+ EIP712Domain: EIP712_DOMAIN,
55
57
  BorrowPermit: PERMIT,
56
- NftPermit: NFT_PERMIT,
58
+ };
59
+ const NFT_PERMIT_TYPES = {
60
+ EIP712Domain: EIP712_DOMAIN,
61
+ Permit: NFT_PERMIT,
62
+ };
63
+ const PERMIT2_TYPES = {
64
+ Permit2Domain: PERMIT2_DOMAIN,
57
65
  PermitDetails: PERMIT2_DETAILS,
58
66
  PermitSingle: PERMIT2_SINGLE,
59
67
  };
@@ -86,47 +94,49 @@ class OnchainPermitHelper {
86
94
  return __awaiter(this, void 0, void 0, function* () {
87
95
  const domain = yield this.getDomainPermit1(contract);
88
96
  const primaryType = "Permit";
89
- return JSON.stringify({ types: TYPES, domain, primaryType, message });
97
+ return JSON.stringify({ types: TOKEN_PERMIT_TYPES, domain, primaryType, message });
90
98
  });
91
99
  }
92
100
  getBorrowPermitJSONData(contract, message) {
93
101
  return __awaiter(this, void 0, void 0, function* () {
94
102
  const domain = yield this.getDomainPermit1(contract);
95
103
  const primaryType = "BorrowPermit";
96
- return JSON.stringify({ types: TYPES, domain, primaryType, message });
104
+ return JSON.stringify({ types: BORROW_PERMIT_TYPES, domain, primaryType, message });
97
105
  });
98
106
  }
99
107
  getNftPermitJSONData(contract, message) {
100
108
  return __awaiter(this, void 0, void 0, function* () {
101
109
  const domain = yield this.getDomainPermit1(contract);
102
- const primaryType = "NftPermit";
103
- return JSON.stringify({ types: TYPES, domain, primaryType, message });
110
+ const primaryType = "Permit";
111
+ return JSON.stringify({ types: NFT_PERMIT_TYPES, domain, primaryType, message });
104
112
  });
105
113
  }
106
114
  getPermit2SingleJSONData(message) {
107
115
  return __awaiter(this, void 0, void 0, function* () {
108
116
  const domain = this.getDomainPermit2();
109
117
  const primaryType = "PermitSingle";
110
- return JSON.stringify({ types: TYPES, domain, primaryType, message });
118
+ return JSON.stringify({ types: PERMIT2_TYPES, domain, primaryType, message });
111
119
  });
112
120
  }
113
- getSignature(owner, jsonData, callBack) {
121
+ getSignature(owner, jsonData) {
114
122
  return __awaiter(this, void 0, void 0, function* () {
115
- this.onchain.web3.currentProvider.send({
116
- method: "eth_signTypedData_v4",
117
- params: [owner, jsonData],
118
- from: owner
119
- }, (err, data) => {
120
- if (err) {
121
- console.error(err);
122
- return callBack(null);
123
- }
124
- console.log("signature", data.result);
125
- callBack(data.result);
123
+ return new Promise((resolve, reject) => {
124
+ this.onchain.web3.currentProvider.send({
125
+ method: "eth_signTypedData_v4",
126
+ params: [owner, jsonData],
127
+ from: owner
128
+ }, (err, data) => {
129
+ if (err) {
130
+ reject(err);
131
+ }
132
+ else {
133
+ resolve(data.result);
134
+ }
135
+ });
126
136
  });
127
137
  });
128
138
  }
129
- getTokenPermit(token, owner, spender, value, callBack) {
139
+ getTokenPermit(token, owner, spender, value) {
130
140
  return __awaiter(this, void 0, void 0, function* () {
131
141
  const nonce = yield token.methods.nonces(owner).call();
132
142
  const jsonData = yield this.getTokenPermitJSONData(token, {
@@ -136,19 +146,14 @@ class OnchainPermitHelper {
136
146
  nonce: ethers_1.BigNumber.from(nonce).toHexString(),
137
147
  deadline: this.deadline,
138
148
  });
139
- console.log("jsonData", jsonData);
140
- this.getSignature(owner, jsonData, (signature) => {
141
- if (!signature)
142
- return callBack(null);
143
- callBack({
144
- permitType: onchainTypes_1.PermitType.PERMIT1,
145
- permitData: ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256', 'uint256'], [token._address, value.toString(), this.deadline]),
146
- signature
147
- });
148
- });
149
+ return {
150
+ permitType: onchainTypes_1.PermitType.PERMIT1,
151
+ permitData: ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256', 'uint256'], [token._address, value.toString(), this.deadline]),
152
+ signature: yield this.getSignature(owner, jsonData)
153
+ };
149
154
  });
150
155
  }
151
- getNftPermit(token, owner, spender, tokenId, callBack) {
156
+ getNftPermit(token, owner, spender, tokenId) {
152
157
  return __awaiter(this, void 0, void 0, function* () {
153
158
  const nonce = yield token.methods.nonces(tokenId).call();
154
159
  const jsonData = yield this.getNftPermitJSONData(token, {
@@ -157,22 +162,18 @@ class OnchainPermitHelper {
157
162
  nonce: ethers_1.BigNumber.from(nonce).toHexString(),
158
163
  deadline: this.deadline,
159
164
  });
160
- this.getSignature(owner, jsonData, (signature) => {
161
- if (!signature)
162
- return callBack(null);
163
- callBack({
164
- permitType: onchainTypes_1.PermitType.PERMIT_NFT,
165
- permitData: ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256', 'uint256'], [token.address, tokenId.toString(), this.deadline]),
166
- signature
167
- });
168
- });
165
+ return {
166
+ permitType: onchainTypes_1.PermitType.PERMIT_NFT,
167
+ permitData: ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256', 'uint256'], [token.address, tokenId.toString(), this.deadline]),
168
+ signature: yield this.getSignature(owner, jsonData)
169
+ };
169
170
  });
170
171
  }
171
- getPermit2Single(token, owner, spender, value, callBack) {
172
+ getPermit2Single(token, owner, spender, value) {
172
173
  return __awaiter(this, void 0, void 0, function* () {
173
174
  const allowanceData = yield this.permit2.methods.allowance(owner, token.address, spender);
174
175
  if (!allowanceData)
175
- return callBack(null);
176
+ throw new Error("Invalid permit2 allowance data");
176
177
  const nonce = allowanceData.nonce;
177
178
  const permitDetailsType = 'tuple(address tokenAddress, uint160 amount, uint48 expiration, uint48 nonce)';
178
179
  const details = {
@@ -186,15 +187,11 @@ class OnchainPermitHelper {
186
187
  spender,
187
188
  sigDeadline: this.deadline,
188
189
  });
189
- this.getSignature(owner, jsonData, (signature) => {
190
- if (!signature)
191
- return callBack(null);
192
- callBack({
193
- permitType: onchainTypes_1.PermitType.PERMIT2_SINGLE,
194
- permitData: ethers_1.ethers.utils.defaultAbiCoder.encode([permitDetailsType, 'address', 'uint256'], [token, spender, this.deadline]),
195
- signature
196
- });
197
- });
190
+ return {
191
+ permitType: onchainTypes_1.PermitType.PERMIT2_SINGLE,
192
+ permitData: ethers_1.ethers.utils.defaultAbiCoder.encode([permitDetailsType, 'address', 'uint256'], [token, spender, this.deadline]),
193
+ signature: yield this.getSignature(owner, jsonData)
194
+ };
198
195
  });
199
196
  }
200
197
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "impermax-sdk",
3
- "version": "2.1.30",
3
+ "version": "2.1.31",
4
4
  "description": "",
5
5
  "main": "./lib/index.js",
6
6
  "module": "./lib/index.js",