@safe-global/relay-kit 3.1.0-alpha.2 → 3.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/dist/src/packs/safe-4337/Safe4337Pack.d.ts +1 -1
- package/dist/src/packs/safe-4337/Safe4337Pack.js +26 -17
- package/dist/src/packs/safe-4337/Safe4337Pack.js.map +1 -1
- package/dist/src/packs/safe-4337/testing-utils/fixtures.d.ts +1 -1
- package/dist/src/packs/safe-4337/testing-utils/fixtures.js +1 -1
- package/dist/src/packs/safe-4337/types.d.ts +2 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/dist/src/packs/gelato/GelatoRelayPack.test.d.ts +0 -1
- package/dist/src/packs/gelato/GelatoRelayPack.test.js +0 -512
- package/dist/src/packs/gelato/GelatoRelayPack.test.js.map +0 -1
- package/dist/src/packs/safe-4337/Safe4337Pack.test.d.ts +0 -1
- package/dist/src/packs/safe-4337/Safe4337Pack.test.js +0 -740
- package/dist/src/packs/safe-4337/Safe4337Pack.test.js.map +0 -1
- package/dist/src/packs/safe-4337/SafeOperation.test.d.ts +0 -1
- package/dist/src/packs/safe-4337/SafeOperation.test.js +0 -134
- package/dist/src/packs/safe-4337/SafeOperation.test.js.map +0 -1
- package/dist/src/packs/safe-4337/estimators/PimlicoFeeEstimator.test.d.ts +0 -1
- package/dist/src/packs/safe-4337/estimators/PimlicoFeeEstimator.test.js +0 -75
- package/dist/src/packs/safe-4337/estimators/PimlicoFeeEstimator.test.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@safe-global/relay-kit",
|
|
3
|
-
"version": "3.1.0
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "SDK for Safe Smart Accounts with support for ERC-4337 and Relay",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"typings": "dist/src/index.d.ts",
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@gelatonetwork/relay-sdk": "^5.5.0",
|
|
42
|
-
"@safe-global/protocol-kit": "^4.1.0
|
|
43
|
-
"@safe-global/safe-core-sdk-types": "^5.1.0
|
|
44
|
-
"@safe-global/safe-modules-deployments": "^2.
|
|
42
|
+
"@safe-global/protocol-kit": "^4.1.0",
|
|
43
|
+
"@safe-global/safe-core-sdk-types": "^5.1.0",
|
|
44
|
+
"@safe-global/safe-modules-deployments": "^2.2.1",
|
|
45
45
|
"ethers": "^6.13.1"
|
|
46
46
|
}
|
|
47
47
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,512 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
const protocol_kit_1 = __importStar(require("@safe-global/protocol-kit"));
|
|
27
|
-
const safe_core_sdk_types_1 = require("@safe-global/safe-core-sdk-types");
|
|
28
|
-
const constants_1 = require("../../constants");
|
|
29
|
-
const GelatoRelayPack_1 = require("./GelatoRelayPack");
|
|
30
|
-
var TaskState;
|
|
31
|
-
(function (TaskState) {
|
|
32
|
-
TaskState["CheckPending"] = "CheckPending";
|
|
33
|
-
})(TaskState || (TaskState = {}));
|
|
34
|
-
const CHAIN_ID = 1n;
|
|
35
|
-
const ADDRESS = '0x...address';
|
|
36
|
-
const GAS_TOKEN = '0x...gasToken';
|
|
37
|
-
const SAFE_ADDRESS = '0x...safe-address';
|
|
38
|
-
const API_KEY = 'api-key';
|
|
39
|
-
const FEE_ESTIMATION = BigInt(100000);
|
|
40
|
-
const BASEGAS_ESTIMATION = '20000';
|
|
41
|
-
const SAFETXGAS_ESTIMATION = '10000';
|
|
42
|
-
const SAFE_DEPLOYMENT_GAS_ESTIMATION = '30000';
|
|
43
|
-
const TASK_ID = 'task-id';
|
|
44
|
-
const TASK_STATUS = {
|
|
45
|
-
chainId: Number(CHAIN_ID),
|
|
46
|
-
taskState: TaskState.CheckPending,
|
|
47
|
-
taskId: TASK_ID,
|
|
48
|
-
creationDate: Date.now().toString()
|
|
49
|
-
};
|
|
50
|
-
const RELAY_RESPONSE = {
|
|
51
|
-
taskId: TASK_ID
|
|
52
|
-
};
|
|
53
|
-
const SAFE_TRANSACTION = {
|
|
54
|
-
data: {
|
|
55
|
-
operation: safe_core_sdk_types_1.OperationType.Call,
|
|
56
|
-
safeTxGas: '0',
|
|
57
|
-
baseGas: '0',
|
|
58
|
-
gasPrice: '0',
|
|
59
|
-
nonce: 0,
|
|
60
|
-
gasToken: '0x',
|
|
61
|
-
refundReceiver: '0x',
|
|
62
|
-
to: ADDRESS,
|
|
63
|
-
value: '0',
|
|
64
|
-
data: '0x'
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
const mockGetEstimateFee = jest.fn().mockResolvedValue(FEE_ESTIMATION);
|
|
68
|
-
const mockGetTaskStatus = jest.fn().mockResolvedValue(TASK_STATUS);
|
|
69
|
-
const mockSponsoredCall = jest.fn().mockResolvedValue(RELAY_RESPONSE);
|
|
70
|
-
const mockCallWithSyncFee = jest.fn().mockResolvedValue(RELAY_RESPONSE);
|
|
71
|
-
jest.mock('@gelatonetwork/relay-sdk', () => {
|
|
72
|
-
return {
|
|
73
|
-
GelatoRelay: jest.fn().mockImplementation(() => {
|
|
74
|
-
return {
|
|
75
|
-
getEstimatedFee: mockGetEstimateFee,
|
|
76
|
-
getTaskStatus: mockGetTaskStatus,
|
|
77
|
-
sponsoredCall: mockSponsoredCall,
|
|
78
|
-
callWithSyncFee: mockCallWithSyncFee
|
|
79
|
-
};
|
|
80
|
-
})
|
|
81
|
-
};
|
|
82
|
-
});
|
|
83
|
-
jest.mock('@safe-global/protocol-kit');
|
|
84
|
-
// Cast the import to jest.Mocked type
|
|
85
|
-
const mockEstimateTxBaseGas = protocol_kit_1.estimateTxBaseGas;
|
|
86
|
-
const mockEstimateSafeTxGas = protocol_kit_1.estimateSafeTxGas;
|
|
87
|
-
const mockEstimateSafeDeploymentGas = protocol_kit_1.estimateSafeDeploymentGas;
|
|
88
|
-
const mockCreateERC20TokenTransferTransaction = protocol_kit_1.createERC20TokenTransferTransaction;
|
|
89
|
-
const mockedIsGasTokenCompatibleWithHandlePayment = protocol_kit_1.isGasTokenCompatibleWithHandlePayment;
|
|
90
|
-
jest.doMock('@safe-global/protocol-kit', () => ({
|
|
91
|
-
...jest.requireActual('@safe-global/protocol-kit'),
|
|
92
|
-
estimateTxBaseGas: mockEstimateTxBaseGas,
|
|
93
|
-
estimateSafeTxGas: mockEstimateSafeTxGas,
|
|
94
|
-
estimateSafeDeploymentGas: mockEstimateSafeDeploymentGas,
|
|
95
|
-
createERC20TokenTransferTransaction: mockCreateERC20TokenTransferTransaction,
|
|
96
|
-
isGasTokenCompatibleWithHandlePayment: mockedIsGasTokenCompatibleWithHandlePayment
|
|
97
|
-
}));
|
|
98
|
-
const safe = new protocol_kit_1.default();
|
|
99
|
-
const gelatoRelayPack = new GelatoRelayPack_1.GelatoRelayPack({ apiKey: API_KEY, protocolKit: safe });
|
|
100
|
-
describe('GelatoRelayPack', () => {
|
|
101
|
-
beforeEach(() => {
|
|
102
|
-
jest.clearAllMocks();
|
|
103
|
-
mockEstimateTxBaseGas.mockResolvedValue(Promise.resolve(BASEGAS_ESTIMATION));
|
|
104
|
-
mockEstimateSafeTxGas.mockResolvedValue(Promise.resolve(SAFETXGAS_ESTIMATION));
|
|
105
|
-
mockEstimateSafeDeploymentGas.mockResolvedValue(Promise.resolve(SAFE_DEPLOYMENT_GAS_ESTIMATION));
|
|
106
|
-
});
|
|
107
|
-
it('should allow to get a fee estimation', async () => {
|
|
108
|
-
const chainId = 1n;
|
|
109
|
-
const gasLimit = '100000';
|
|
110
|
-
const gasToken = '0x0000000000000000000000000000000000000000';
|
|
111
|
-
const estimation = await gelatoRelayPack.getEstimateFee({ chainId, gasLimit, gasToken });
|
|
112
|
-
expect(estimation).toBe(FEE_ESTIMATION.toString());
|
|
113
|
-
expect(mockGetEstimateFee).toHaveBeenCalledWith(chainId, constants_1.GELATO_NATIVE_TOKEN_ADDRESS, BigInt(gasLimit), false);
|
|
114
|
-
expect(BigInt(estimation) > 0).toBe(true);
|
|
115
|
-
});
|
|
116
|
-
it('should allow to check the task status', async () => {
|
|
117
|
-
const taskId = 'task-id';
|
|
118
|
-
const status = await gelatoRelayPack.getTaskStatus(taskId);
|
|
119
|
-
expect(status).toBe(TASK_STATUS);
|
|
120
|
-
expect(mockGetTaskStatus).toHaveBeenCalledWith('task-id');
|
|
121
|
-
});
|
|
122
|
-
it('should allow to make a sponsored transaction', async () => {
|
|
123
|
-
const response = await gelatoRelayPack.sendSponsorTransaction(SAFE_ADDRESS, '0x', CHAIN_ID);
|
|
124
|
-
expect(response).toBe(RELAY_RESPONSE);
|
|
125
|
-
expect(mockSponsoredCall).toHaveBeenCalledWith({
|
|
126
|
-
chainId: CHAIN_ID,
|
|
127
|
-
target: SAFE_ADDRESS,
|
|
128
|
-
data: '0x'
|
|
129
|
-
}, API_KEY);
|
|
130
|
-
});
|
|
131
|
-
it('should throw an error when trying to do a sponsored transaction without an api key', async () => {
|
|
132
|
-
const relayPack = new GelatoRelayPack_1.GelatoRelayPack({ protocolKit: safe });
|
|
133
|
-
await expect(relayPack.sendSponsorTransaction(SAFE_ADDRESS, '0x', CHAIN_ID)).rejects.toThrow('API key not defined');
|
|
134
|
-
});
|
|
135
|
-
describe('when creating a relayed transaction', () => {
|
|
136
|
-
describe('When gas limit is manually defined', () => {
|
|
137
|
-
let relayPack;
|
|
138
|
-
const transactions = [
|
|
139
|
-
{
|
|
140
|
-
to: ADDRESS,
|
|
141
|
-
data: '0x',
|
|
142
|
-
value: '0'
|
|
143
|
-
}
|
|
144
|
-
];
|
|
145
|
-
const options = {
|
|
146
|
-
gasLimit: '100',
|
|
147
|
-
isSponsored: true
|
|
148
|
-
};
|
|
149
|
-
beforeEach(() => {
|
|
150
|
-
jest.clearAllMocks();
|
|
151
|
-
relayPack = new GelatoRelayPack_1.GelatoRelayPack({ protocolKit: safe });
|
|
152
|
-
safe.getNonce = jest.fn().mockResolvedValue(0);
|
|
153
|
-
safe.getChainId = jest.fn().mockResolvedValue(0);
|
|
154
|
-
safe.getContractManager = jest.fn().mockReturnValue({ safeContract: {} });
|
|
155
|
-
safe.createTransaction = jest.fn().mockResolvedValue(SAFE_TRANSACTION);
|
|
156
|
-
mockedIsGasTokenCompatibleWithHandlePayment.mockResolvedValue(Promise.resolve(true));
|
|
157
|
-
});
|
|
158
|
-
it('should allow you to create a sponsored one', async () => {
|
|
159
|
-
await relayPack.createTransaction({ transactions, options });
|
|
160
|
-
expect(safe.createTransaction).toHaveBeenCalledWith({
|
|
161
|
-
transactions,
|
|
162
|
-
onlyCalls: false,
|
|
163
|
-
options: {
|
|
164
|
-
nonce: 0
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
it('should allow to create a sync fee one', async () => {
|
|
169
|
-
await relayPack.createTransaction({
|
|
170
|
-
transactions,
|
|
171
|
-
options: { ...options, isSponsored: false }
|
|
172
|
-
});
|
|
173
|
-
expect(safe.createTransaction).toHaveBeenCalledWith({
|
|
174
|
-
transactions,
|
|
175
|
-
onlyCalls: false,
|
|
176
|
-
options: {
|
|
177
|
-
baseGas: FEE_ESTIMATION.toString(),
|
|
178
|
-
safeTxGas: SAFETXGAS_ESTIMATION,
|
|
179
|
-
gasPrice: '1',
|
|
180
|
-
gasToken: constants_1.ZERO_ADDRESS, // native token
|
|
181
|
-
refundReceiver: constants_1.GELATO_FEE_COLLECTOR,
|
|
182
|
-
nonce: 0
|
|
183
|
-
}
|
|
184
|
-
});
|
|
185
|
-
});
|
|
186
|
-
it('should return the correct gasToken when being sent through the options', async () => {
|
|
187
|
-
await relayPack.createTransaction({
|
|
188
|
-
transactions,
|
|
189
|
-
options: { ...options, isSponsored: false, gasToken: GAS_TOKEN }
|
|
190
|
-
});
|
|
191
|
-
expect(safe.createTransaction).toHaveBeenCalledWith({
|
|
192
|
-
transactions,
|
|
193
|
-
onlyCalls: false,
|
|
194
|
-
options: {
|
|
195
|
-
baseGas: FEE_ESTIMATION.toString(),
|
|
196
|
-
safeTxGas: SAFETXGAS_ESTIMATION,
|
|
197
|
-
gasPrice: '1',
|
|
198
|
-
gasToken: GAS_TOKEN,
|
|
199
|
-
refundReceiver: constants_1.GELATO_FEE_COLLECTOR,
|
|
200
|
-
nonce: 0
|
|
201
|
-
}
|
|
202
|
-
});
|
|
203
|
-
});
|
|
204
|
-
it('should allow you to create relay transaction using a non standard ERC20 gas token to pay Gelato fees', async () => {
|
|
205
|
-
// non standard ERC20 like USDC
|
|
206
|
-
mockedIsGasTokenCompatibleWithHandlePayment.mockResolvedValue(Promise.resolve(false));
|
|
207
|
-
const options = {
|
|
208
|
-
gasToken: GAS_TOKEN,
|
|
209
|
-
isSponsored: false,
|
|
210
|
-
gasLimit: '5000' // manual gas limit
|
|
211
|
-
};
|
|
212
|
-
const transferToGelato = {
|
|
213
|
-
to: constants_1.GELATO_FEE_COLLECTOR,
|
|
214
|
-
value: FEE_ESTIMATION.toString(),
|
|
215
|
-
data: '0x'
|
|
216
|
-
};
|
|
217
|
-
mockCreateERC20TokenTransferTransaction.mockReturnValue(transferToGelato);
|
|
218
|
-
await relayPack.createTransaction({ transactions, options });
|
|
219
|
-
expect(safe.createTransaction).toHaveBeenCalledWith({
|
|
220
|
-
transactions: [...transactions, transferToGelato], // the transfer to Gelato is prensent
|
|
221
|
-
onlyCalls: false,
|
|
222
|
-
options: {
|
|
223
|
-
gasToken: GAS_TOKEN, // non standard ERC20 gas token
|
|
224
|
-
nonce: 0
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
});
|
|
228
|
-
});
|
|
229
|
-
describe('When gas limit is automatically estimate', () => {
|
|
230
|
-
let relayPack;
|
|
231
|
-
const mockTransferTransacton = {
|
|
232
|
-
to: ADDRESS,
|
|
233
|
-
data: '0x',
|
|
234
|
-
value: '0'
|
|
235
|
-
};
|
|
236
|
-
const transactions = [mockTransferTransacton];
|
|
237
|
-
beforeEach(() => {
|
|
238
|
-
jest.clearAllMocks();
|
|
239
|
-
relayPack = new GelatoRelayPack_1.GelatoRelayPack({ protocolKit: safe });
|
|
240
|
-
safe.getNonce = jest.fn().mockResolvedValue(0);
|
|
241
|
-
safe.getChainId = jest.fn().mockResolvedValue(0);
|
|
242
|
-
safe.getContractManager = jest.fn().mockReturnValue({ safeContract: {} });
|
|
243
|
-
safe.createTransaction = jest.fn().mockResolvedValue(SAFE_TRANSACTION);
|
|
244
|
-
mockedIsGasTokenCompatibleWithHandlePayment.mockResolvedValue(Promise.resolve(true));
|
|
245
|
-
});
|
|
246
|
-
it('should allow you to create a sponsored one', async () => {
|
|
247
|
-
const options = {
|
|
248
|
-
isSponsored: true
|
|
249
|
-
};
|
|
250
|
-
await relayPack.createTransaction({ transactions, options });
|
|
251
|
-
expect(safe.createTransaction).toHaveBeenCalledWith({
|
|
252
|
-
transactions,
|
|
253
|
-
onlyCalls: false,
|
|
254
|
-
options: {
|
|
255
|
-
nonce: 0
|
|
256
|
-
}
|
|
257
|
-
});
|
|
258
|
-
});
|
|
259
|
-
describe('When a compatible gas token is used', () => {
|
|
260
|
-
beforeEach(() => {
|
|
261
|
-
jest.clearAllMocks();
|
|
262
|
-
mockedIsGasTokenCompatibleWithHandlePayment.mockResolvedValue(Promise.resolve(true));
|
|
263
|
-
});
|
|
264
|
-
it('should allow you to create relay transaction using the native token to pay Gelato fees', async () => {
|
|
265
|
-
await relayPack.createTransaction({ transactions });
|
|
266
|
-
expect(safe.createTransaction).toHaveBeenCalledWith({
|
|
267
|
-
transactions,
|
|
268
|
-
onlyCalls: false,
|
|
269
|
-
options: {
|
|
270
|
-
baseGas: FEE_ESTIMATION.toString(),
|
|
271
|
-
gasPrice: '1',
|
|
272
|
-
safeTxGas: SAFETXGAS_ESTIMATION,
|
|
273
|
-
gasToken: constants_1.ZERO_ADDRESS, // native token
|
|
274
|
-
refundReceiver: constants_1.GELATO_FEE_COLLECTOR,
|
|
275
|
-
nonce: 0
|
|
276
|
-
}
|
|
277
|
-
});
|
|
278
|
-
});
|
|
279
|
-
it('should allow you to create relay transaction using a compatible ERC20 token to pay Gelato fees', async () => {
|
|
280
|
-
const options = {
|
|
281
|
-
gasToken: GAS_TOKEN
|
|
282
|
-
};
|
|
283
|
-
await relayPack.createTransaction({ transactions, options });
|
|
284
|
-
expect(safe.createTransaction).toHaveBeenCalledWith({
|
|
285
|
-
transactions,
|
|
286
|
-
onlyCalls: false,
|
|
287
|
-
options: {
|
|
288
|
-
baseGas: FEE_ESTIMATION.toString(),
|
|
289
|
-
gasPrice: '1',
|
|
290
|
-
safeTxGas: SAFETXGAS_ESTIMATION,
|
|
291
|
-
gasToken: GAS_TOKEN, // ERC20 gas token
|
|
292
|
-
refundReceiver: constants_1.GELATO_FEE_COLLECTOR,
|
|
293
|
-
nonce: 0
|
|
294
|
-
}
|
|
295
|
-
});
|
|
296
|
-
});
|
|
297
|
-
});
|
|
298
|
-
describe('When a non compatible gas token is used', () => {
|
|
299
|
-
beforeEach(() => {
|
|
300
|
-
jest.clearAllMocks();
|
|
301
|
-
mockedIsGasTokenCompatibleWithHandlePayment.mockResolvedValue(Promise.resolve(false));
|
|
302
|
-
});
|
|
303
|
-
it('should allow you to create relay transaction using a non standard ERC20 gas token to pay Gelato fees', async () => {
|
|
304
|
-
const options = {
|
|
305
|
-
gasToken: GAS_TOKEN
|
|
306
|
-
};
|
|
307
|
-
const transferToGelato = {
|
|
308
|
-
to: constants_1.GELATO_FEE_COLLECTOR,
|
|
309
|
-
value: FEE_ESTIMATION.toString(),
|
|
310
|
-
data: '0x'
|
|
311
|
-
};
|
|
312
|
-
mockCreateERC20TokenTransferTransaction.mockReturnValue(transferToGelato);
|
|
313
|
-
await relayPack.createTransaction({ transactions, options });
|
|
314
|
-
expect(safe.createTransaction).toHaveBeenCalledWith({
|
|
315
|
-
transactions: [...transactions, transferToGelato], // the transfer to Gelato is prensent
|
|
316
|
-
onlyCalls: false,
|
|
317
|
-
options: {
|
|
318
|
-
gasToken: GAS_TOKEN, // non standard ERC20 gas token
|
|
319
|
-
nonce: 0
|
|
320
|
-
}
|
|
321
|
-
});
|
|
322
|
-
});
|
|
323
|
-
});
|
|
324
|
-
});
|
|
325
|
-
});
|
|
326
|
-
it('should allow to make a sync fee transaction', async () => {
|
|
327
|
-
const response = await gelatoRelayPack.sendSyncTransaction(SAFE_ADDRESS, '0x', CHAIN_ID, {
|
|
328
|
-
gasLimit: '100000'
|
|
329
|
-
});
|
|
330
|
-
expect(response).toBe(RELAY_RESPONSE);
|
|
331
|
-
expect(mockCallWithSyncFee).toHaveBeenCalledWith({
|
|
332
|
-
chainId: CHAIN_ID,
|
|
333
|
-
target: SAFE_ADDRESS,
|
|
334
|
-
data: '0x',
|
|
335
|
-
feeToken: constants_1.GELATO_NATIVE_TOKEN_ADDRESS,
|
|
336
|
-
isRelayContext: false
|
|
337
|
-
}, {
|
|
338
|
-
gasLimit: BigInt(100000)
|
|
339
|
-
});
|
|
340
|
-
});
|
|
341
|
-
it('should expose a relayTransaction doing a sponsored or sync fee transaction depending on an optional parameter', async () => {
|
|
342
|
-
const sponsoredResponse = await gelatoRelayPack.relayTransaction({
|
|
343
|
-
target: SAFE_ADDRESS,
|
|
344
|
-
encodedTransaction: '0x',
|
|
345
|
-
chainId: CHAIN_ID,
|
|
346
|
-
options: {
|
|
347
|
-
gasLimit: '100000',
|
|
348
|
-
isSponsored: true
|
|
349
|
-
}
|
|
350
|
-
});
|
|
351
|
-
expect(sponsoredResponse).toBe(RELAY_RESPONSE);
|
|
352
|
-
expect(mockSponsoredCall).toHaveBeenCalledWith({
|
|
353
|
-
chainId: CHAIN_ID,
|
|
354
|
-
target: SAFE_ADDRESS,
|
|
355
|
-
data: '0x'
|
|
356
|
-
}, API_KEY);
|
|
357
|
-
const paidResponse = await gelatoRelayPack.relayTransaction({
|
|
358
|
-
target: SAFE_ADDRESS,
|
|
359
|
-
encodedTransaction: '0x',
|
|
360
|
-
chainId: CHAIN_ID,
|
|
361
|
-
options: {
|
|
362
|
-
gasLimit: '100000',
|
|
363
|
-
isSponsored: false
|
|
364
|
-
}
|
|
365
|
-
});
|
|
366
|
-
expect(paidResponse).toBe(RELAY_RESPONSE);
|
|
367
|
-
expect(mockCallWithSyncFee).toHaveBeenCalledWith({
|
|
368
|
-
chainId: CHAIN_ID,
|
|
369
|
-
target: SAFE_ADDRESS,
|
|
370
|
-
data: '0x',
|
|
371
|
-
feeToken: constants_1.GELATO_NATIVE_TOKEN_ADDRESS,
|
|
372
|
-
isRelayContext: false
|
|
373
|
-
}, {
|
|
374
|
-
gasLimit: BigInt(100000)
|
|
375
|
-
});
|
|
376
|
-
});
|
|
377
|
-
it('should allow to retrieve the fee collector address', () => {
|
|
378
|
-
expect(gelatoRelayPack.getFeeCollector()).toBe(constants_1.GELATO_FEE_COLLECTOR);
|
|
379
|
-
});
|
|
380
|
-
describe('executeTransaction', () => {
|
|
381
|
-
const ENCODED_TRANSACTION_DATA = '0x...txData';
|
|
382
|
-
const MULTISEND_ADDRESS = '0x...multiSendAddress';
|
|
383
|
-
const SAFE_DEPLOYMENT_BATCH = {
|
|
384
|
-
to: MULTISEND_ADDRESS,
|
|
385
|
-
value: '0',
|
|
386
|
-
data: '0x...deplymentBachData'
|
|
387
|
-
};
|
|
388
|
-
beforeEach(() => {
|
|
389
|
-
jest.clearAllMocks();
|
|
390
|
-
safe.isSafeDeployed = jest.fn().mockResolvedValue(true);
|
|
391
|
-
safe.getChainId = jest.fn().mockResolvedValue(CHAIN_ID);
|
|
392
|
-
safe.getAddress = jest.fn().mockResolvedValue(SAFE_ADDRESS);
|
|
393
|
-
safe.getEncodedTransaction = jest.fn().mockResolvedValue(ENCODED_TRANSACTION_DATA);
|
|
394
|
-
safe.wrapSafeTransactionIntoDeploymentBatch = jest
|
|
395
|
-
.fn()
|
|
396
|
-
.mockResolvedValue(SAFE_DEPLOYMENT_BATCH);
|
|
397
|
-
});
|
|
398
|
-
describe('when the Safe is already deployed', () => {
|
|
399
|
-
it('should execute a sponsored relay transaction', async () => {
|
|
400
|
-
const relayTransaction = {
|
|
401
|
-
data: {
|
|
402
|
-
nonce: 0,
|
|
403
|
-
to: ADDRESS,
|
|
404
|
-
value: '0',
|
|
405
|
-
data: '0x'
|
|
406
|
-
}
|
|
407
|
-
};
|
|
408
|
-
const gelatoResponse = await gelatoRelayPack.executeTransaction({
|
|
409
|
-
executable: relayTransaction,
|
|
410
|
-
options: {
|
|
411
|
-
isSponsored: true
|
|
412
|
-
}
|
|
413
|
-
});
|
|
414
|
-
expect(gelatoResponse).toBe(RELAY_RESPONSE);
|
|
415
|
-
expect(mockSponsoredCall).toHaveBeenCalledWith({
|
|
416
|
-
chainId: CHAIN_ID,
|
|
417
|
-
target: SAFE_ADDRESS,
|
|
418
|
-
data: ENCODED_TRANSACTION_DATA
|
|
419
|
-
}, API_KEY);
|
|
420
|
-
// no counterfactual deployment present
|
|
421
|
-
expect(safe.wrapSafeTransactionIntoDeploymentBatch).not.toHaveBeenCalled();
|
|
422
|
-
});
|
|
423
|
-
it('should execute a sync relay transaction', async () => {
|
|
424
|
-
const relayTransaction = {
|
|
425
|
-
data: {
|
|
426
|
-
operation: safe_core_sdk_types_1.OperationType.Call,
|
|
427
|
-
safeTxGas: SAFETXGAS_ESTIMATION,
|
|
428
|
-
baseGas: FEE_ESTIMATION.toString(),
|
|
429
|
-
gasPrice: '1',
|
|
430
|
-
nonce: 0,
|
|
431
|
-
gasToken: GAS_TOKEN,
|
|
432
|
-
refundReceiver: constants_1.GELATO_FEE_COLLECTOR,
|
|
433
|
-
to: ADDRESS,
|
|
434
|
-
value: '0',
|
|
435
|
-
data: '0x'
|
|
436
|
-
}
|
|
437
|
-
};
|
|
438
|
-
const gelatoResponse = await gelatoRelayPack.executeTransaction({
|
|
439
|
-
executable: relayTransaction
|
|
440
|
-
});
|
|
441
|
-
expect(gelatoResponse).toBe(RELAY_RESPONSE);
|
|
442
|
-
expect(mockCallWithSyncFee).toHaveBeenCalledWith({
|
|
443
|
-
chainId: CHAIN_ID,
|
|
444
|
-
target: SAFE_ADDRESS,
|
|
445
|
-
data: ENCODED_TRANSACTION_DATA,
|
|
446
|
-
feeToken: GAS_TOKEN,
|
|
447
|
-
isRelayContext: false
|
|
448
|
-
}, { gasLimit: undefined });
|
|
449
|
-
// no counterfactual deployment present
|
|
450
|
-
expect(safe.wrapSafeTransactionIntoDeploymentBatch).not.toHaveBeenCalled();
|
|
451
|
-
});
|
|
452
|
-
});
|
|
453
|
-
describe('when the Safe is not deployed (counterfactual deployment)', () => {
|
|
454
|
-
it('should execute a sponsored relay transaction & counterfactual deployment', async () => {
|
|
455
|
-
// Safe is not deployed
|
|
456
|
-
safe.isSafeDeployed = jest.fn().mockResolvedValue(false);
|
|
457
|
-
const relayTransaction = {
|
|
458
|
-
data: {
|
|
459
|
-
nonce: 0,
|
|
460
|
-
to: ADDRESS,
|
|
461
|
-
value: '0',
|
|
462
|
-
data: '0x'
|
|
463
|
-
}
|
|
464
|
-
};
|
|
465
|
-
const gelatoResponse = await gelatoRelayPack.executeTransaction({
|
|
466
|
-
executable: relayTransaction,
|
|
467
|
-
options: { isSponsored: true }
|
|
468
|
-
});
|
|
469
|
-
expect(gelatoResponse).toBe(RELAY_RESPONSE);
|
|
470
|
-
expect(mockSponsoredCall).toHaveBeenCalledWith({
|
|
471
|
-
chainId: CHAIN_ID,
|
|
472
|
-
target: MULTISEND_ADDRESS, // multiSend contract as a target address because a counterfactual deployment is present
|
|
473
|
-
data: SAFE_DEPLOYMENT_BATCH.data
|
|
474
|
-
}, API_KEY);
|
|
475
|
-
// counterfactual deployment in present
|
|
476
|
-
expect(safe.wrapSafeTransactionIntoDeploymentBatch).toHaveBeenCalled();
|
|
477
|
-
});
|
|
478
|
-
it('should execute a sync relay transaction & counterfactual deployment', async () => {
|
|
479
|
-
// Safe is not deployed
|
|
480
|
-
safe.isSafeDeployed = jest.fn().mockResolvedValue(false);
|
|
481
|
-
const relayTransaction = {
|
|
482
|
-
data: {
|
|
483
|
-
operation: safe_core_sdk_types_1.OperationType.Call,
|
|
484
|
-
safeTxGas: SAFETXGAS_ESTIMATION,
|
|
485
|
-
baseGas: FEE_ESTIMATION.toString(),
|
|
486
|
-
gasPrice: '1',
|
|
487
|
-
nonce: 0,
|
|
488
|
-
gasToken: GAS_TOKEN,
|
|
489
|
-
refundReceiver: constants_1.GELATO_FEE_COLLECTOR,
|
|
490
|
-
to: ADDRESS,
|
|
491
|
-
value: '0',
|
|
492
|
-
data: '0x'
|
|
493
|
-
}
|
|
494
|
-
};
|
|
495
|
-
const gelatoResponse = await gelatoRelayPack.executeTransaction({
|
|
496
|
-
executable: relayTransaction
|
|
497
|
-
});
|
|
498
|
-
expect(gelatoResponse).toBe(RELAY_RESPONSE);
|
|
499
|
-
expect(mockCallWithSyncFee).toHaveBeenCalledWith({
|
|
500
|
-
chainId: CHAIN_ID,
|
|
501
|
-
target: MULTISEND_ADDRESS, // multiSend contract as a target address because a counterfactual deployment is present
|
|
502
|
-
data: SAFE_DEPLOYMENT_BATCH.data,
|
|
503
|
-
feeToken: GAS_TOKEN,
|
|
504
|
-
isRelayContext: false
|
|
505
|
-
}, { gasLimit: undefined });
|
|
506
|
-
// counterfactual deployment in present
|
|
507
|
-
expect(safe.wrapSafeTransactionIntoDeploymentBatch).toHaveBeenCalled();
|
|
508
|
-
});
|
|
509
|
-
});
|
|
510
|
-
});
|
|
511
|
-
});
|
|
512
|
-
//# sourceMappingURL=GelatoRelayPack.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GelatoRelayPack.test.js","sourceRoot":"","sources":["../../../../src/packs/gelato/GelatoRelayPack.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|