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
|
|
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
|
|
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
|
|
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
|
|
19
|
-
getNftPermit(token: Contract, owner: Address, spender: Address, tokenId: BigNumber
|
|
20
|
-
getPermit2Single(token: Contract, owner: Address, spender: Address, value: BigNumber
|
|
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
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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 = "
|
|
103
|
-
return JSON.stringify({ types:
|
|
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:
|
|
118
|
+
return JSON.stringify({ types: PERMIT2_TYPES, domain, primaryType, message });
|
|
111
119
|
});
|
|
112
120
|
}
|
|
113
|
-
getSignature(owner, jsonData
|
|
121
|
+
getSignature(owner, jsonData) {
|
|
114
122
|
return __awaiter(this, void 0, void 0, function* () {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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
|
|
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
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
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
|
|
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
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
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
|
}
|