@ring-protocol/permit2-sdk 0.1.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.
- package/LICENSE +21 -0
- package/README.md +12 -0
- package/dist/cjs/abis/Permit2.json +830 -0
- package/dist/cjs/src/allowanceTransfer.d.ts +36 -0
- package/dist/cjs/src/allowanceTransfer.js +72 -0
- package/dist/cjs/src/allowanceTransfer.js.map +1 -0
- package/dist/cjs/src/allowanceTransfer.test.d.ts +1 -0
- package/dist/cjs/src/allowanceTransfer.test.js +95 -0
- package/dist/cjs/src/allowanceTransfer.test.js.map +1 -0
- package/dist/cjs/src/constants.d.ts +13 -0
- package/dist/cjs/src/constants.js +29 -0
- package/dist/cjs/src/constants.js.map +1 -0
- package/dist/cjs/src/constants.test.d.ts +1 -0
- package/dist/cjs/src/constants.test.js +19 -0
- package/dist/cjs/src/constants.test.js.map +1 -0
- package/dist/cjs/src/domain.d.ts +7 -0
- package/dist/cjs/src/domain.js +13 -0
- package/dist/cjs/src/domain.js.map +1 -0
- package/dist/cjs/src/index.d.ts +4 -0
- package/dist/cjs/src/index.js +8 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/src/providers/AllowanceProvider.d.ts +17 -0
- package/dist/cjs/src/providers/AllowanceProvider.js +35 -0
- package/dist/cjs/src/providers/AllowanceProvider.js.map +1 -0
- package/dist/cjs/src/providers/SignatureProvider.d.ts +74 -0
- package/dist/cjs/src/providers/SignatureProvider.js +146 -0
- package/dist/cjs/src/providers/SignatureProvider.js.map +1 -0
- package/dist/cjs/src/providers/SignatureProvider.test.d.ts +1 -0
- package/dist/cjs/src/providers/SignatureProvider.test.js +247 -0
- package/dist/cjs/src/providers/SignatureProvider.test.js.map +1 -0
- package/dist/cjs/src/providers/index.d.ts +2 -0
- package/dist/cjs/src/providers/index.js +6 -0
- package/dist/cjs/src/providers/index.js.map +1 -0
- package/dist/cjs/src/signatureTransfer.d.ts +41 -0
- package/dist/cjs/src/signatureTransfer.js +93 -0
- package/dist/cjs/src/signatureTransfer.js.map +1 -0
- package/dist/cjs/src/signatureTransfer.test.d.ts +1 -0
- package/dist/cjs/src/signatureTransfer.test.js +109 -0
- package/dist/cjs/src/signatureTransfer.test.js.map +1 -0
- package/dist/esm/abis/Permit2.json +830 -0
- package/dist/esm/src/allowanceTransfer.d.ts +36 -0
- package/dist/esm/src/allowanceTransfer.js +67 -0
- package/dist/esm/src/allowanceTransfer.js.map +1 -0
- package/dist/esm/src/allowanceTransfer.test.d.ts +1 -0
- package/dist/esm/src/allowanceTransfer.test.js +93 -0
- package/dist/esm/src/allowanceTransfer.test.js.map +1 -0
- package/dist/esm/src/constants.d.ts +13 -0
- package/dist/esm/src/constants.js +25 -0
- package/dist/esm/src/constants.js.map +1 -0
- package/dist/esm/src/constants.test.d.ts +1 -0
- package/dist/esm/src/constants.test.js +17 -0
- package/dist/esm/src/constants.test.js.map +1 -0
- package/dist/esm/src/domain.d.ts +7 -0
- package/dist/esm/src/domain.js +9 -0
- package/dist/esm/src/domain.js.map +1 -0
- package/dist/esm/src/index.d.ts +4 -0
- package/dist/esm/src/index.js +5 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/providers/AllowanceProvider.d.ts +17 -0
- package/dist/esm/src/providers/AllowanceProvider.js +31 -0
- package/dist/esm/src/providers/AllowanceProvider.js.map +1 -0
- package/dist/esm/src/providers/SignatureProvider.d.ts +74 -0
- package/dist/esm/src/providers/SignatureProvider.js +142 -0
- package/dist/esm/src/providers/SignatureProvider.js.map +1 -0
- package/dist/esm/src/providers/SignatureProvider.test.d.ts +1 -0
- package/dist/esm/src/providers/SignatureProvider.test.js +245 -0
- package/dist/esm/src/providers/SignatureProvider.test.js.map +1 -0
- package/dist/esm/src/providers/index.d.ts +2 -0
- package/dist/esm/src/providers/index.js +3 -0
- package/dist/esm/src/providers/index.js.map +1 -0
- package/dist/esm/src/signatureTransfer.d.ts +41 -0
- package/dist/esm/src/signatureTransfer.js +88 -0
- package/dist/esm/src/signatureTransfer.js.map +1 -0
- package/dist/esm/src/signatureTransfer.test.d.ts +1 -0
- package/dist/esm/src/signatureTransfer.test.js +107 -0
- package/dist/esm/src/signatureTransfer.test.js.map +1 -0
- package/dist/types/src/allowanceTransfer.d.ts +36 -0
- package/dist/types/src/allowanceTransfer.test.d.ts +1 -0
- package/dist/types/src/constants.d.ts +13 -0
- package/dist/types/src/constants.test.d.ts +1 -0
- package/dist/types/src/domain.d.ts +7 -0
- package/dist/types/src/index.d.ts +4 -0
- package/dist/types/src/providers/AllowanceProvider.d.ts +17 -0
- package/dist/types/src/providers/SignatureProvider.d.ts +74 -0
- package/dist/types/src/providers/SignatureProvider.test.d.ts +1 -0
- package/dist/types/src/providers/index.d.ts +2 -0
- package/dist/types/src/signatureTransfer.d.ts +41 -0
- package/dist/types/src/signatureTransfer.test.d.ts +1 -0
- package/package.json +92 -0
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const SignatureProvider_1 = require("./SignatureProvider");
|
|
5
|
+
const bignumber_1 = require("@ethersproject/bignumber");
|
|
6
|
+
const ethers_1 = require("ethers");
|
|
7
|
+
describe('SignatureProvider', () => {
|
|
8
|
+
let provider;
|
|
9
|
+
let permit2Address;
|
|
10
|
+
let owner;
|
|
11
|
+
let spender;
|
|
12
|
+
let token;
|
|
13
|
+
let signatureProvider;
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
// Setup test environment
|
|
16
|
+
const forkUrl = process.env.FORK_URL || 'http://localhost:8545';
|
|
17
|
+
provider = new ethers_1.ethers.providers.JsonRpcProvider(forkUrl);
|
|
18
|
+
permit2Address = '0x000000000022D473030F116dDEE9F6B43aC78BA3'; // Mainnet Permit2 address
|
|
19
|
+
owner = '0x1234567890123456789012345678901234567890';
|
|
20
|
+
spender = '0x0987654321098765432109876543210987654321';
|
|
21
|
+
token = '0xA0b86a33E6441b8C4C8C8C8C8C8C8C8C8C8C8C8C';
|
|
22
|
+
signatureProvider = new SignatureProvider_1.SignatureProvider(provider, permit2Address);
|
|
23
|
+
});
|
|
24
|
+
describe('isNonceUsed', () => {
|
|
25
|
+
it('should check if a nonce has been used', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
26
|
+
const nonce = bignumber_1.BigNumber.from(123);
|
|
27
|
+
const isUsed = yield signatureProvider.isNonceUsed(owner, nonce);
|
|
28
|
+
expect(typeof isUsed).toBe('boolean');
|
|
29
|
+
}));
|
|
30
|
+
it('should handle different nonce values', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
31
|
+
const nonces = [0, 255, 256, 1000, 10000];
|
|
32
|
+
for (const nonce of nonces) {
|
|
33
|
+
const isUsed = yield signatureProvider.isNonceUsed(owner, nonce);
|
|
34
|
+
expect(typeof isUsed).toBe('boolean');
|
|
35
|
+
}
|
|
36
|
+
}));
|
|
37
|
+
it('should check specific used nonce for known swapper', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
38
|
+
const usedNonce = bignumber_1.BigNumber.from('1993349591429988950323706171037443285812821323100932422320925456272859199745');
|
|
39
|
+
const swapper = '0xa7152Fad7467857dC2D4060FEcaAdf9f6B8227d3';
|
|
40
|
+
const isUsed = yield signatureProvider.isNonceUsed(swapper, usedNonce);
|
|
41
|
+
expect(isUsed).toBe(true); // Nonce should be used
|
|
42
|
+
}));
|
|
43
|
+
it('should check specific unused nonce for known swapper', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
44
|
+
const unusedNonce = bignumber_1.BigNumber.from('1234567890');
|
|
45
|
+
const swapper = '0x54539967a06Fc0E3C3ED0ee320Eb67362D13C5fF';
|
|
46
|
+
const isUsed = yield signatureProvider.isNonceUsed(swapper, unusedNonce);
|
|
47
|
+
expect(isUsed).toBe(false); // Nonce should be unused
|
|
48
|
+
}));
|
|
49
|
+
});
|
|
50
|
+
describe('isExpired', () => {
|
|
51
|
+
it('should check if a deadline has expired', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
52
|
+
const futureDeadline = bignumber_1.BigNumber.from(Math.floor(Date.now() / 1000) + 3600); // 1 hour from now
|
|
53
|
+
const pastDeadline = bignumber_1.BigNumber.from(Math.floor(Date.now() / 1000) - 3600); // 1 hour ago
|
|
54
|
+
const futureExpired = yield signatureProvider.isExpired(futureDeadline);
|
|
55
|
+
const pastExpired = yield signatureProvider.isExpired(pastDeadline);
|
|
56
|
+
expect(typeof futureExpired).toBe('boolean');
|
|
57
|
+
expect(typeof pastExpired).toBe('boolean');
|
|
58
|
+
expect(futureExpired).toBe(false);
|
|
59
|
+
expect(pastExpired).toBe(true);
|
|
60
|
+
}));
|
|
61
|
+
});
|
|
62
|
+
describe('isPermitValid', () => {
|
|
63
|
+
it('should validate a single permit', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
64
|
+
const permit = {
|
|
65
|
+
permitted: {
|
|
66
|
+
token,
|
|
67
|
+
amount: bignumber_1.BigNumber.from(1000000),
|
|
68
|
+
},
|
|
69
|
+
spender,
|
|
70
|
+
nonce: bignumber_1.BigNumber.from(123),
|
|
71
|
+
deadline: bignumber_1.BigNumber.from(Math.floor(Date.now() / 1000) + 3600), // 1 hour from now
|
|
72
|
+
};
|
|
73
|
+
const isValid = yield signatureProvider.isPermitValid(permit);
|
|
74
|
+
expect(typeof isValid).toBe('boolean');
|
|
75
|
+
}));
|
|
76
|
+
it('should validate a batch permit', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
77
|
+
const permit = {
|
|
78
|
+
permitted: [
|
|
79
|
+
{
|
|
80
|
+
token,
|
|
81
|
+
amount: bignumber_1.BigNumber.from(1000000),
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
token: '0xB0b86a33E6441b8C4C8C8C8C8C8C8C8C8C8C8C8C',
|
|
85
|
+
amount: bignumber_1.BigNumber.from(2000000),
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
spender,
|
|
89
|
+
nonce: bignumber_1.BigNumber.from(456),
|
|
90
|
+
deadline: bignumber_1.BigNumber.from(Math.floor(Date.now() / 1000) + 3600), // 1 hour from now
|
|
91
|
+
};
|
|
92
|
+
const isValid = yield signatureProvider.isPermitValid(permit);
|
|
93
|
+
expect(typeof isValid).toBe('boolean');
|
|
94
|
+
}));
|
|
95
|
+
it('should return false for expired permits', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
96
|
+
const permit = {
|
|
97
|
+
permitted: {
|
|
98
|
+
token,
|
|
99
|
+
amount: bignumber_1.BigNumber.from(1000000),
|
|
100
|
+
},
|
|
101
|
+
spender,
|
|
102
|
+
nonce: bignumber_1.BigNumber.from(123),
|
|
103
|
+
deadline: bignumber_1.BigNumber.from(Math.floor(Date.now() / 1000) - 3600), // 1 hour ago
|
|
104
|
+
};
|
|
105
|
+
const isValid = yield signatureProvider.isPermitValid(permit);
|
|
106
|
+
expect(isValid).toBe(false);
|
|
107
|
+
}));
|
|
108
|
+
});
|
|
109
|
+
describe('validatePermit', () => {
|
|
110
|
+
it('should return detailed validation results', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
111
|
+
const permit = {
|
|
112
|
+
permitted: {
|
|
113
|
+
token,
|
|
114
|
+
amount: bignumber_1.BigNumber.from(1000000),
|
|
115
|
+
},
|
|
116
|
+
spender,
|
|
117
|
+
nonce: bignumber_1.BigNumber.from(123),
|
|
118
|
+
deadline: bignumber_1.BigNumber.from(Math.floor(Date.now() / 1000) + 3600), // 1 hour from now
|
|
119
|
+
};
|
|
120
|
+
const result = yield signatureProvider.validatePermit(permit);
|
|
121
|
+
expect(result).toHaveProperty('isUsed');
|
|
122
|
+
expect(result).toHaveProperty('isExpired');
|
|
123
|
+
expect(result).toHaveProperty('isValid');
|
|
124
|
+
expect(typeof result.isUsed).toBe('boolean');
|
|
125
|
+
expect(typeof result.isExpired).toBe('boolean');
|
|
126
|
+
expect(typeof result.isValid).toBe('boolean');
|
|
127
|
+
}));
|
|
128
|
+
});
|
|
129
|
+
describe('getNonceBitmap', () => {
|
|
130
|
+
it('should get the nonce bitmap for an owner', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
131
|
+
const wordPos = bignumber_1.BigNumber.from(0);
|
|
132
|
+
const bitmap = yield signatureProvider.getNonceBitmap(owner, wordPos);
|
|
133
|
+
expect(bitmap).toBeInstanceOf(bignumber_1.BigNumber);
|
|
134
|
+
}));
|
|
135
|
+
});
|
|
136
|
+
describe('isBitSet', () => {
|
|
137
|
+
it('should check if a specific bit is set in a bitmap', () => {
|
|
138
|
+
const bitmap = bignumber_1.BigNumber.from('0x0000000000000000000000000000000000000000000000000000000000000001');
|
|
139
|
+
const bit0Set = SignatureProvider_1.SignatureProvider.isBitSet(bitmap, 0);
|
|
140
|
+
const bit1Set = SignatureProvider_1.SignatureProvider.isBitSet(bitmap, 1);
|
|
141
|
+
expect(bit0Set).toBe(true);
|
|
142
|
+
expect(bit1Set).toBe(false);
|
|
143
|
+
});
|
|
144
|
+
it('should handle different bit positions', () => {
|
|
145
|
+
const bitmap = bignumber_1.BigNumber.from('0x00000000000000000000000000000000000000000000000000000000000000FF');
|
|
146
|
+
for (let i = 0; i < 8; i++) {
|
|
147
|
+
const isSet = SignatureProvider_1.SignatureProvider.isBitSet(bitmap, i);
|
|
148
|
+
expect(isSet).toBe(true);
|
|
149
|
+
}
|
|
150
|
+
for (let i = 8; i < 16; i++) {
|
|
151
|
+
const isSet = SignatureProvider_1.SignatureProvider.isBitSet(bitmap, i);
|
|
152
|
+
expect(isSet).toBe(false);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
it('should throw error for invalid bit positions', () => {
|
|
156
|
+
const bitmap = bignumber_1.BigNumber.from(0);
|
|
157
|
+
expect(() => SignatureProvider_1.SignatureProvider.isBitSet(bitmap, -1)).toThrow('BIT_POSITION_OUT_OF_RANGE');
|
|
158
|
+
expect(() => SignatureProvider_1.SignatureProvider.isBitSet(bitmap, 256)).toThrow('BIT_POSITION_OUT_OF_RANGE');
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
describe('getNoncePositions', () => {
|
|
162
|
+
it('should calculate correct word and bit positions', () => {
|
|
163
|
+
const nonce = bignumber_1.BigNumber.from(123);
|
|
164
|
+
const positions = SignatureProvider_1.SignatureProvider.getNoncePositions(nonce);
|
|
165
|
+
expect(positions.wordPos.eq(bignumber_1.BigNumber.from(0))).toBe(true); // 123 >> 8 = 0
|
|
166
|
+
expect(positions.bitPos).toBe(123); // 123 & 255 = 123
|
|
167
|
+
});
|
|
168
|
+
it('should handle nonces that span multiple words', () => {
|
|
169
|
+
const nonce = bignumber_1.BigNumber.from(300);
|
|
170
|
+
const positions = SignatureProvider_1.SignatureProvider.getNoncePositions(nonce);
|
|
171
|
+
expect(positions.wordPos.eq(bignumber_1.BigNumber.from(1))).toBe(true); // 300 >> 8 = 1
|
|
172
|
+
expect(positions.bitPos).toBe(44); // 300 & 255 = 44
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
describe('batchCheckNonces', () => {
|
|
176
|
+
it('should check multiple nonces efficiently', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
177
|
+
const nonces = [bignumber_1.BigNumber.from(1), bignumber_1.BigNumber.from(2), bignumber_1.BigNumber.from(256), bignumber_1.BigNumber.from(257)];
|
|
178
|
+
const results = yield signatureProvider.batchCheckNonces(owner, nonces);
|
|
179
|
+
expect(results).toHaveLength(nonces.length);
|
|
180
|
+
results.forEach((result) => {
|
|
181
|
+
expect(typeof result).toBe('boolean');
|
|
182
|
+
});
|
|
183
|
+
}));
|
|
184
|
+
it('should check specific nonces for known swapper', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
185
|
+
const swapper = '0xa7152Fad7467857dC2D4060FEcaAdf9f6B8227d3';
|
|
186
|
+
const usedNonce = bignumber_1.BigNumber.from('1993349591429988950323706171037443285812821323100932422320925456272859199745');
|
|
187
|
+
// Test with the specific nonce and some additional nonces
|
|
188
|
+
const nonces = [
|
|
189
|
+
usedNonce,
|
|
190
|
+
bignumber_1.BigNumber.from(1234567890),
|
|
191
|
+
bignumber_1.BigNumber.from(9876543210), // Another different nonce
|
|
192
|
+
];
|
|
193
|
+
const results = yield signatureProvider.batchCheckNonces(swapper, nonces);
|
|
194
|
+
expect(results).toHaveLength(nonces.length);
|
|
195
|
+
results.forEach((result) => {
|
|
196
|
+
expect(typeof result).toBe('boolean');
|
|
197
|
+
});
|
|
198
|
+
// The first nonce should be used (true), others likely unused (false)
|
|
199
|
+
expect(results[0]).toBe(true); // The specific nonce should be used
|
|
200
|
+
}));
|
|
201
|
+
});
|
|
202
|
+
describe('getCurrentTimestamp', () => {
|
|
203
|
+
it('should get the current block timestamp', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
204
|
+
const currentTime = Math.floor(Date.now() / 1000);
|
|
205
|
+
const timestamp = yield signatureProvider.getCurrentTimestamp();
|
|
206
|
+
expect(typeof timestamp).toBe('number');
|
|
207
|
+
expect(timestamp).toBeGreaterThan(0);
|
|
208
|
+
// Check that the timestamp is close to current time (±30 seconds to account for network latency)
|
|
209
|
+
const timeDifference = Math.abs(timestamp - currentTime);
|
|
210
|
+
expect(timeDifference).toBeLessThanOrEqual(30);
|
|
211
|
+
}));
|
|
212
|
+
});
|
|
213
|
+
describe('Integration Tests', () => {
|
|
214
|
+
it('should work together to validate a complete permit flow', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
215
|
+
const nonce = bignumber_1.BigNumber.from(789);
|
|
216
|
+
const deadline = bignumber_1.BigNumber.from(Math.floor(Date.now() / 1000) + 7200); // 2 hours from now
|
|
217
|
+
// Create permit
|
|
218
|
+
const permit = {
|
|
219
|
+
permitted: {
|
|
220
|
+
token,
|
|
221
|
+
amount: bignumber_1.BigNumber.from(1000000),
|
|
222
|
+
},
|
|
223
|
+
spender,
|
|
224
|
+
nonce,
|
|
225
|
+
deadline,
|
|
226
|
+
};
|
|
227
|
+
// Check if nonce is used
|
|
228
|
+
const isNonceUsed = yield signatureProvider.isNonceUsed(owner, nonce);
|
|
229
|
+
// Check if deadline is expired
|
|
230
|
+
const isExpired = yield signatureProvider.isExpired(deadline);
|
|
231
|
+
// Validate permit
|
|
232
|
+
const isValid = yield signatureProvider.isPermitValid(permit);
|
|
233
|
+
// All checks should be consistent
|
|
234
|
+
expect(isValid).toBe(!isNonceUsed && !isExpired);
|
|
235
|
+
}));
|
|
236
|
+
it('should provide consistent results between individual and batch validation', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
237
|
+
const nonces = [bignumber_1.BigNumber.from(1), bignumber_1.BigNumber.from(2), bignumber_1.BigNumber.from(256)];
|
|
238
|
+
// Check individual nonces
|
|
239
|
+
const individualResults = yield Promise.all(nonces.map((nonce) => signatureProvider.isNonceUsed(owner, nonce)));
|
|
240
|
+
// Check batch nonces
|
|
241
|
+
const batchResults = yield signatureProvider.batchCheckNonces(owner, nonces);
|
|
242
|
+
// Results should be consistent
|
|
243
|
+
expect(batchResults).toEqual(individualResults);
|
|
244
|
+
}));
|
|
245
|
+
});
|
|
246
|
+
});
|
|
247
|
+
//# sourceMappingURL=SignatureProvider.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignatureProvider.test.js","sourceRoot":"","sources":["../../../../src/providers/SignatureProvider.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./AllowanceProvider"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./SignatureProvider"), exports);
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/providers/index.ts"],"names":[],"mappings":";;;AAAA,8DAAmC;AACnC,8DAAmC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { TypedDataDomain, TypedDataField } from '@ethersproject/abstract-signer';
|
|
2
|
+
import { BigNumberish } from '@ethersproject/bignumber';
|
|
3
|
+
export interface Witness {
|
|
4
|
+
witness: any;
|
|
5
|
+
witnessTypeName: string;
|
|
6
|
+
witnessType: Record<string, TypedDataField[]>;
|
|
7
|
+
}
|
|
8
|
+
export interface TokenPermissions {
|
|
9
|
+
token: string;
|
|
10
|
+
amount: BigNumberish;
|
|
11
|
+
}
|
|
12
|
+
export interface PermitTransferFrom {
|
|
13
|
+
permitted: TokenPermissions;
|
|
14
|
+
spender: string;
|
|
15
|
+
nonce: BigNumberish;
|
|
16
|
+
deadline: BigNumberish;
|
|
17
|
+
}
|
|
18
|
+
export interface PermitBatchTransferFrom {
|
|
19
|
+
permitted: TokenPermissions[];
|
|
20
|
+
spender: string;
|
|
21
|
+
nonce: BigNumberish;
|
|
22
|
+
deadline: BigNumberish;
|
|
23
|
+
}
|
|
24
|
+
export type PermitTransferFromData = {
|
|
25
|
+
domain: TypedDataDomain;
|
|
26
|
+
types: Record<string, TypedDataField[]>;
|
|
27
|
+
values: PermitTransferFrom;
|
|
28
|
+
};
|
|
29
|
+
export type PermitBatchTransferFromData = {
|
|
30
|
+
domain: TypedDataDomain;
|
|
31
|
+
types: Record<string, TypedDataField[]>;
|
|
32
|
+
values: PermitBatchTransferFrom;
|
|
33
|
+
};
|
|
34
|
+
export declare abstract class SignatureTransfer {
|
|
35
|
+
/**
|
|
36
|
+
* Cannot be constructed.
|
|
37
|
+
*/
|
|
38
|
+
private constructor();
|
|
39
|
+
static getPermitData(permit: PermitTransferFrom | PermitBatchTransferFrom, permit2Address: string, chainId: number, witness?: Witness): PermitTransferFromData | PermitBatchTransferFromData;
|
|
40
|
+
static hash(permit: PermitTransferFrom | PermitBatchTransferFrom, permit2Address: string, chainId: number, witness?: Witness): string;
|
|
41
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SignatureTransfer = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const tiny_invariant_1 = tslib_1.__importDefault(require("tiny-invariant"));
|
|
6
|
+
const hash_1 = require("@ethersproject/hash");
|
|
7
|
+
const domain_1 = require("./domain");
|
|
8
|
+
const constants_1 = require("./constants");
|
|
9
|
+
const TOKEN_PERMISSIONS = [
|
|
10
|
+
{ name: 'token', type: 'address' },
|
|
11
|
+
{ name: 'amount', type: 'uint256' },
|
|
12
|
+
];
|
|
13
|
+
const PERMIT_TRANSFER_FROM_TYPES = {
|
|
14
|
+
PermitTransferFrom: [
|
|
15
|
+
{ name: 'permitted', type: 'TokenPermissions' },
|
|
16
|
+
{ name: 'spender', type: 'address' },
|
|
17
|
+
{ name: 'nonce', type: 'uint256' },
|
|
18
|
+
{ name: 'deadline', type: 'uint256' },
|
|
19
|
+
],
|
|
20
|
+
TokenPermissions: TOKEN_PERMISSIONS,
|
|
21
|
+
};
|
|
22
|
+
const PERMIT_BATCH_TRANSFER_FROM_TYPES = {
|
|
23
|
+
PermitBatchTransferFrom: [
|
|
24
|
+
{ name: 'permitted', type: 'TokenPermissions[]' },
|
|
25
|
+
{ name: 'spender', type: 'address' },
|
|
26
|
+
{ name: 'nonce', type: 'uint256' },
|
|
27
|
+
{ name: 'deadline', type: 'uint256' },
|
|
28
|
+
],
|
|
29
|
+
TokenPermissions: TOKEN_PERMISSIONS,
|
|
30
|
+
};
|
|
31
|
+
function permitTransferFromWithWitnessType(witness) {
|
|
32
|
+
return Object.assign({ PermitWitnessTransferFrom: [
|
|
33
|
+
{ name: 'permitted', type: 'TokenPermissions' },
|
|
34
|
+
{ name: 'spender', type: 'address' },
|
|
35
|
+
{ name: 'nonce', type: 'uint256' },
|
|
36
|
+
{ name: 'deadline', type: 'uint256' },
|
|
37
|
+
{ name: 'witness', type: witness.witnessTypeName },
|
|
38
|
+
], TokenPermissions: TOKEN_PERMISSIONS }, witness.witnessType);
|
|
39
|
+
}
|
|
40
|
+
function permitBatchTransferFromWithWitnessType(witness) {
|
|
41
|
+
return Object.assign({ PermitBatchWitnessTransferFrom: [
|
|
42
|
+
{ name: 'permitted', type: 'TokenPermissions[]' },
|
|
43
|
+
{ name: 'spender', type: 'address' },
|
|
44
|
+
{ name: 'nonce', type: 'uint256' },
|
|
45
|
+
{ name: 'deadline', type: 'uint256' },
|
|
46
|
+
{ name: 'witness', type: witness.witnessTypeName },
|
|
47
|
+
], TokenPermissions: TOKEN_PERMISSIONS }, witness.witnessType);
|
|
48
|
+
}
|
|
49
|
+
function isPermitTransferFrom(permit) {
|
|
50
|
+
return !Array.isArray(permit.permitted);
|
|
51
|
+
}
|
|
52
|
+
class SignatureTransfer {
|
|
53
|
+
/**
|
|
54
|
+
* Cannot be constructed.
|
|
55
|
+
*/
|
|
56
|
+
constructor() { }
|
|
57
|
+
// return the data to be sent in a eth_signTypedData RPC call
|
|
58
|
+
// for signing the given permit data
|
|
59
|
+
static getPermitData(permit, permit2Address, chainId, witness) {
|
|
60
|
+
(0, tiny_invariant_1.default)(constants_1.MaxSigDeadline.gte(permit.deadline), 'SIG_DEADLINE_OUT_OF_RANGE');
|
|
61
|
+
(0, tiny_invariant_1.default)(constants_1.MaxUnorderedNonce.gte(permit.nonce), 'NONCE_OUT_OF_RANGE');
|
|
62
|
+
const domain = (0, domain_1.permit2Domain)(permit2Address, chainId);
|
|
63
|
+
if (isPermitTransferFrom(permit)) {
|
|
64
|
+
validateTokenPermissions(permit.permitted);
|
|
65
|
+
const types = witness ? permitTransferFromWithWitnessType(witness) : PERMIT_TRANSFER_FROM_TYPES;
|
|
66
|
+
const values = witness ? Object.assign(permit, { witness: witness.witness }) : permit;
|
|
67
|
+
return {
|
|
68
|
+
domain,
|
|
69
|
+
types,
|
|
70
|
+
values,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
permit.permitted.forEach(validateTokenPermissions);
|
|
75
|
+
const types = witness ? permitBatchTransferFromWithWitnessType(witness) : PERMIT_BATCH_TRANSFER_FROM_TYPES;
|
|
76
|
+
const values = witness ? Object.assign(permit, { witness: witness.witness }) : permit;
|
|
77
|
+
return {
|
|
78
|
+
domain,
|
|
79
|
+
types,
|
|
80
|
+
values,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
static hash(permit, permit2Address, chainId, witness) {
|
|
85
|
+
const { domain, types, values } = SignatureTransfer.getPermitData(permit, permit2Address, chainId, witness);
|
|
86
|
+
return hash_1._TypedDataEncoder.hash(domain, types, values);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.SignatureTransfer = SignatureTransfer;
|
|
90
|
+
function validateTokenPermissions(permissions) {
|
|
91
|
+
(0, tiny_invariant_1.default)(constants_1.MaxSignatureTransferAmount.gte(permissions.amount), 'AMOUNT_OUT_OF_RANGE');
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=signatureTransfer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signatureTransfer.js","sourceRoot":"","sources":["../../../src/signatureTransfer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const signatureTransfer_1 = require("./signatureTransfer");
|
|
4
|
+
const constants_1 = require("./constants");
|
|
5
|
+
describe('SignatureTransfer', () => {
|
|
6
|
+
describe('Max values', () => {
|
|
7
|
+
it('max values', () => {
|
|
8
|
+
expect(() => signatureTransfer_1.SignatureTransfer.hash({
|
|
9
|
+
permitted: {
|
|
10
|
+
token: '0x0000000000000000000000000000000000000000',
|
|
11
|
+
amount: constants_1.MaxSignatureTransferAmount.toString(),
|
|
12
|
+
},
|
|
13
|
+
spender: '0x0000000000000000000000000000000000000000',
|
|
14
|
+
nonce: constants_1.MaxUnorderedNonce.toString(),
|
|
15
|
+
deadline: constants_1.MaxSigDeadline.toString(),
|
|
16
|
+
}, '0x0000000000000000000000000000000000000000', 1)).not.toThrow();
|
|
17
|
+
});
|
|
18
|
+
it('nonce out of range', () => {
|
|
19
|
+
expect(() => signatureTransfer_1.SignatureTransfer.hash({
|
|
20
|
+
permitted: {
|
|
21
|
+
token: '0x0000000000000000000000000000000000000000',
|
|
22
|
+
amount: '0',
|
|
23
|
+
},
|
|
24
|
+
spender: '0x0000000000000000000000000000000000000000',
|
|
25
|
+
nonce: constants_1.MaxUnorderedNonce.add(1).toString(),
|
|
26
|
+
deadline: '0',
|
|
27
|
+
}, '0x0000000000000000000000000000000000000000', 1)).toThrow('NONCE_OUT_OF_RANGE');
|
|
28
|
+
});
|
|
29
|
+
it('amount out of range', () => {
|
|
30
|
+
expect(() => signatureTransfer_1.SignatureTransfer.hash({
|
|
31
|
+
permitted: {
|
|
32
|
+
token: '0x0000000000000000000000000000000000000000',
|
|
33
|
+
amount: constants_1.MaxSignatureTransferAmount.add(1).toString(),
|
|
34
|
+
},
|
|
35
|
+
spender: '0x0000000000000000000000000000000000000000',
|
|
36
|
+
nonce: '0',
|
|
37
|
+
deadline: '0',
|
|
38
|
+
}, '0x0000000000000000000000000000000000000000', 1)).toThrow('AMOUNT_OUT_OF_RANGE');
|
|
39
|
+
});
|
|
40
|
+
it('deadline out of range', () => {
|
|
41
|
+
expect(() => signatureTransfer_1.SignatureTransfer.hash({
|
|
42
|
+
permitted: {
|
|
43
|
+
token: '0x0000000000000000000000000000000000000000',
|
|
44
|
+
amount: '0',
|
|
45
|
+
},
|
|
46
|
+
spender: '0x0000000000000000000000000000000000000000',
|
|
47
|
+
nonce: '0',
|
|
48
|
+
deadline: constants_1.MaxSigDeadline.add(1).toString(),
|
|
49
|
+
}, '0x0000000000000000000000000000000000000000', 1)).toThrow('SIG_DEADLINE_OUT_OF_RANGE');
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
it('non-batch, no witness', () => {
|
|
53
|
+
expect(signatureTransfer_1.SignatureTransfer.hash({
|
|
54
|
+
permitted: {
|
|
55
|
+
token: '0x0000000000000000000000000000000000000000',
|
|
56
|
+
amount: '0',
|
|
57
|
+
},
|
|
58
|
+
spender: '0x0000000000000000000000000000000000000000',
|
|
59
|
+
nonce: '0',
|
|
60
|
+
deadline: '0',
|
|
61
|
+
}, '0x0000000000000000000000000000000000000000', 1)).toBe('0xb9bf9813799d7f0de28d2142b0bc80ec289d4a6a5b9f41834149df4188804dc5');
|
|
62
|
+
});
|
|
63
|
+
it('non-batch, witness', () => {
|
|
64
|
+
expect(signatureTransfer_1.SignatureTransfer.hash({
|
|
65
|
+
permitted: {
|
|
66
|
+
token: '0x0000000000000000000000000000000000000000',
|
|
67
|
+
amount: '0',
|
|
68
|
+
},
|
|
69
|
+
spender: '0x0000000000000000000000000000000000000000',
|
|
70
|
+
nonce: '0',
|
|
71
|
+
deadline: '0',
|
|
72
|
+
}, '0x0000000000000000000000000000000000000000', 1, {
|
|
73
|
+
witnessTypeName: 'MockWitness',
|
|
74
|
+
witnessType: { MockWitness: [{ name: 'mock', type: 'uint256' }] },
|
|
75
|
+
witness: { mock: '0x0000000000000000000000000000000000000000000000000000000000000000' },
|
|
76
|
+
})).toBe('0x4236a4a7b3e8e65dbb4cc758ef10dc4887e2959853fb615140d0f5e0ae7be7c9');
|
|
77
|
+
});
|
|
78
|
+
it('batch, no witness', () => {
|
|
79
|
+
expect(signatureTransfer_1.SignatureTransfer.hash({
|
|
80
|
+
permitted: [
|
|
81
|
+
{
|
|
82
|
+
token: '0x0000000000000000000000000000000000000000',
|
|
83
|
+
amount: '0',
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
spender: '0x0000000000000000000000000000000000000000',
|
|
87
|
+
nonce: '0',
|
|
88
|
+
deadline: '0',
|
|
89
|
+
}, '0x0000000000000000000000000000000000000000', 1)).toBe('0x5ba40c5ba725fec181e4a862c717adf91682b012ad01ea99a978189106d66923');
|
|
90
|
+
});
|
|
91
|
+
it('batch, witness', () => {
|
|
92
|
+
expect(signatureTransfer_1.SignatureTransfer.hash({
|
|
93
|
+
permitted: [
|
|
94
|
+
{
|
|
95
|
+
token: '0x0000000000000000000000000000000000000000',
|
|
96
|
+
amount: '0',
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
spender: '0x0000000000000000000000000000000000000000',
|
|
100
|
+
nonce: '0',
|
|
101
|
+
deadline: '0',
|
|
102
|
+
}, '0x0000000000000000000000000000000000000000', 1, {
|
|
103
|
+
witnessTypeName: 'MockWitness',
|
|
104
|
+
witnessType: { MockWitness: [{ name: 'mock', type: 'uint256' }] },
|
|
105
|
+
witness: { mock: '0x0000000000000000000000000000000000000000000000000000000000000000' },
|
|
106
|
+
})).toBe('0xb45d605b0a4d4f16930a4f48294d94c78f34411278fd3133626cc190273e3ccf');
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
//# sourceMappingURL=signatureTransfer.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signatureTransfer.test.js","sourceRoot":"","sources":["../../../src/signatureTransfer.test.ts"],"names":[],"mappings":";;AAAA,2DAAuD;AACvD,2CAA2F;AAE3F,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;YACpB,MAAM,CAAC,GAAG,EAAE,CACV,qCAAiB,CAAC,IAAI,CACpB;gBACE,SAAS,EAAE;oBACT,KAAK,EAAE,4CAA4C;oBACnD,MAAM,EAAE,sCAA0B,CAAC,QAAQ,EAAE;iBAC9C;gBACD,OAAO,EAAE,4CAA4C;gBACrD,KAAK,EAAE,6BAAiB,CAAC,QAAQ,EAAE;gBACnC,QAAQ,EAAE,0BAAc,CAAC,QAAQ,EAAE;aACpC,EACD,4CAA4C,EAC5C,CAAC,CACF,CACF,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QACjB,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC5B,MAAM,CAAC,GAAG,EAAE,CACV,qCAAiB,CAAC,IAAI,CACpB;gBACE,SAAS,EAAE;oBACT,KAAK,EAAE,4CAA4C;oBACnD,MAAM,EAAE,GAAG;iBACZ;gBACD,OAAO,EAAE,4CAA4C;gBACrD,KAAK,EAAE,6BAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;gBAC1C,QAAQ,EAAE,GAAG;aACd,EACD,4CAA4C,EAC5C,CAAC,CACF,CACF,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;QACjC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,MAAM,CAAC,GAAG,EAAE,CACV,qCAAiB,CAAC,IAAI,CACpB;gBACE,SAAS,EAAE;oBACT,KAAK,EAAE,4CAA4C;oBACnD,MAAM,EAAE,sCAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;iBACrD;gBACD,OAAO,EAAE,4CAA4C;gBACrD,KAAK,EAAE,GAAG;gBACV,QAAQ,EAAE,GAAG;aACd,EACD,4CAA4C,EAC5C,CAAC,CACF,CACF,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,CAAC,GAAG,EAAE,CACV,qCAAiB,CAAC,IAAI,CACpB;gBACE,SAAS,EAAE;oBACT,KAAK,EAAE,4CAA4C;oBACnD,MAAM,EAAE,GAAG;iBACZ;gBACD,OAAO,EAAE,4CAA4C;gBACrD,KAAK,EAAE,GAAG;gBACV,QAAQ,EAAE,0BAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC3C,EACD,4CAA4C,EAC5C,CAAC,CACF,CACF,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,CACJ,qCAAiB,CAAC,IAAI,CACpB;YACE,SAAS,EAAE;gBACT,KAAK,EAAE,4CAA4C;gBACnD,MAAM,EAAE,GAAG;aACZ;YACD,OAAO,EAAE,4CAA4C;YACrD,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,GAAG;SACd,EACD,4CAA4C,EAC5C,CAAC,CACF,CACF,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAA;IAC9E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,CACJ,qCAAiB,CAAC,IAAI,CACpB;YACE,SAAS,EAAE;gBACT,KAAK,EAAE,4CAA4C;gBACnD,MAAM,EAAE,GAAG;aACZ;YACD,OAAO,EAAE,4CAA4C;YACrD,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,GAAG;SACd,EACD,4CAA4C,EAC5C,CAAC,EACD;YACE,eAAe,EAAE,aAAa;YAC9B,WAAW,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE;YACjE,OAAO,EAAE,EAAE,IAAI,EAAE,oEAAoE,EAAE;SACxF,CACF,CACF,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAA;IAC9E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CACJ,qCAAiB,CAAC,IAAI,CACpB;YACE,SAAS,EAAE;gBACT;oBACE,KAAK,EAAE,4CAA4C;oBACnD,MAAM,EAAE,GAAG;iBACZ;aACF;YACD,OAAO,EAAE,4CAA4C;YACrD,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,GAAG;SACd,EACD,4CAA4C,EAC5C,CAAC,CACF,CACF,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAA;IAC9E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;QACxB,MAAM,CACJ,qCAAiB,CAAC,IAAI,CACpB;YACE,SAAS,EAAE;gBACT;oBACE,KAAK,EAAE,4CAA4C;oBACnD,MAAM,EAAE,GAAG;iBACZ;aACF;YACD,OAAO,EAAE,4CAA4C;YACrD,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,GAAG;SACd,EACD,4CAA4C,EAC5C,CAAC,EACD;YACE,eAAe,EAAE,aAAa;YAC9B,WAAW,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE;YACjE,OAAO,EAAE,EAAE,IAAI,EAAE,oEAAoE,EAAE;SACxF,CACF,CACF,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAA;IAC9E,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|