@reyaxyz/common 0.155.0 → 0.155.1

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.
@@ -0,0 +1,478 @@
1
+ {
2
+ "abi":
3
+ [
4
+ {
5
+ "type": "function",
6
+ "name": "batchExecute",
7
+ "inputs": [
8
+ {
9
+ "name": "orders",
10
+ "type": "tuple[]",
11
+ "internalType": "struct ConditionalOrderDetails[]",
12
+ "components": [
13
+ {
14
+ "name": "accountId",
15
+ "type": "uint128",
16
+ "internalType": "uint128"
17
+ },
18
+ {
19
+ "name": "marketId",
20
+ "type": "uint128",
21
+ "internalType": "uint128"
22
+ },
23
+ {
24
+ "name": "exchangeId",
25
+ "type": "uint128",
26
+ "internalType": "uint128"
27
+ },
28
+ {
29
+ "name": "counterpartyAccountIds",
30
+ "type": "uint128[]",
31
+ "internalType": "uint128[]"
32
+ },
33
+ {
34
+ "name": "orderType",
35
+ "type": "uint8",
36
+ "internalType": "enum OrderType"
37
+ },
38
+ {
39
+ "name": "inputs",
40
+ "type": "bytes",
41
+ "internalType": "bytes"
42
+ },
43
+ {
44
+ "name": "signer",
45
+ "type": "address",
46
+ "internalType": "address"
47
+ },
48
+ {
49
+ "name": "nonce",
50
+ "type": "uint256",
51
+ "internalType": "uint256"
52
+ }
53
+ ]
54
+ },
55
+ {
56
+ "name": "signatures",
57
+ "type": "bytes[]",
58
+ "internalType": "bytes[]"
59
+ }
60
+ ],
61
+ "outputs": [
62
+ {
63
+ "name": "outputs",
64
+ "type": "bytes[]",
65
+ "internalType": "bytes[]"
66
+ }
67
+ ],
68
+ "stateMutability": "nonpayable"
69
+ },
70
+ {
71
+ "type": "function",
72
+ "name": "canExecute",
73
+ "inputs": [
74
+ {
75
+ "name": "order",
76
+ "type": "tuple",
77
+ "internalType": "struct ConditionalOrderDetails",
78
+ "components": [
79
+ {
80
+ "name": "accountId",
81
+ "type": "uint128",
82
+ "internalType": "uint128"
83
+ },
84
+ {
85
+ "name": "marketId",
86
+ "type": "uint128",
87
+ "internalType": "uint128"
88
+ },
89
+ {
90
+ "name": "exchangeId",
91
+ "type": "uint128",
92
+ "internalType": "uint128"
93
+ },
94
+ {
95
+ "name": "counterpartyAccountIds",
96
+ "type": "uint128[]",
97
+ "internalType": "uint128[]"
98
+ },
99
+ {
100
+ "name": "orderType",
101
+ "type": "uint8",
102
+ "internalType": "enum OrderType"
103
+ },
104
+ {
105
+ "name": "inputs",
106
+ "type": "bytes",
107
+ "internalType": "bytes"
108
+ },
109
+ {
110
+ "name": "signer",
111
+ "type": "address",
112
+ "internalType": "address"
113
+ },
114
+ {
115
+ "name": "nonce",
116
+ "type": "uint256",
117
+ "internalType": "uint256"
118
+ }
119
+ ]
120
+ },
121
+ {
122
+ "name": "signature",
123
+ "type": "bytes",
124
+ "internalType": "bytes"
125
+ }
126
+ ],
127
+ "outputs": [
128
+ {
129
+ "name": "",
130
+ "type": "bool",
131
+ "internalType": "bool"
132
+ }
133
+ ],
134
+ "stateMutability": "view"
135
+ },
136
+ {
137
+ "type": "function",
138
+ "name": "execute",
139
+ "inputs": [
140
+ {
141
+ "name": "order",
142
+ "type": "tuple",
143
+ "internalType": "struct ConditionalOrderDetails",
144
+ "components": [
145
+ {
146
+ "name": "accountId",
147
+ "type": "uint128",
148
+ "internalType": "uint128"
149
+ },
150
+ {
151
+ "name": "marketId",
152
+ "type": "uint128",
153
+ "internalType": "uint128"
154
+ },
155
+ {
156
+ "name": "exchangeId",
157
+ "type": "uint128",
158
+ "internalType": "uint128"
159
+ },
160
+ {
161
+ "name": "counterpartyAccountIds",
162
+ "type": "uint128[]",
163
+ "internalType": "uint128[]"
164
+ },
165
+ {
166
+ "name": "orderType",
167
+ "type": "uint8",
168
+ "internalType": "enum OrderType"
169
+ },
170
+ {
171
+ "name": "inputs",
172
+ "type": "bytes",
173
+ "internalType": "bytes"
174
+ },
175
+ {
176
+ "name": "signer",
177
+ "type": "address",
178
+ "internalType": "address"
179
+ },
180
+ {
181
+ "name": "nonce",
182
+ "type": "uint256",
183
+ "internalType": "uint256"
184
+ }
185
+ ]
186
+ },
187
+ {
188
+ "name": "signature",
189
+ "type": "bytes",
190
+ "internalType": "bytes"
191
+ }
192
+ ],
193
+ "outputs": [
194
+ {
195
+ "name": "output",
196
+ "type": "bytes",
197
+ "internalType": "bytes"
198
+ }
199
+ ],
200
+ "stateMutability": "nonpayable"
201
+ },
202
+ {
203
+ "type": "function",
204
+ "name": "hasUnorderedNonceBeenUsed",
205
+ "inputs": [
206
+ {
207
+ "name": "accountId",
208
+ "type": "uint128",
209
+ "internalType": "uint128"
210
+ },
211
+ {
212
+ "name": "nonce",
213
+ "type": "uint256",
214
+ "internalType": "uint256"
215
+ }
216
+ ],
217
+ "outputs": [
218
+ {
219
+ "name": "",
220
+ "type": "bool",
221
+ "internalType": "bool"
222
+ }
223
+ ],
224
+ "stateMutability": "view"
225
+ },
226
+ {
227
+ "type": "function",
228
+ "name": "verifySignature",
229
+ "inputs": [
230
+ {
231
+ "name": "order",
232
+ "type": "tuple",
233
+ "internalType": "struct ConditionalOrderDetails",
234
+ "components": [
235
+ {
236
+ "name": "accountId",
237
+ "type": "uint128",
238
+ "internalType": "uint128"
239
+ },
240
+ {
241
+ "name": "marketId",
242
+ "type": "uint128",
243
+ "internalType": "uint128"
244
+ },
245
+ {
246
+ "name": "exchangeId",
247
+ "type": "uint128",
248
+ "internalType": "uint128"
249
+ },
250
+ {
251
+ "name": "counterpartyAccountIds",
252
+ "type": "uint128[]",
253
+ "internalType": "uint128[]"
254
+ },
255
+ {
256
+ "name": "orderType",
257
+ "type": "uint8",
258
+ "internalType": "enum OrderType"
259
+ },
260
+ {
261
+ "name": "inputs",
262
+ "type": "bytes",
263
+ "internalType": "bytes"
264
+ },
265
+ {
266
+ "name": "signer",
267
+ "type": "address",
268
+ "internalType": "address"
269
+ },
270
+ {
271
+ "name": "nonce",
272
+ "type": "uint256",
273
+ "internalType": "uint256"
274
+ }
275
+ ]
276
+ },
277
+ {
278
+ "name": "signature",
279
+ "type": "bytes",
280
+ "internalType": "bytes"
281
+ }
282
+ ],
283
+ "outputs": [
284
+ {
285
+ "name": "",
286
+ "type": "bool",
287
+ "internalType": "bool"
288
+ }
289
+ ],
290
+ "stateMutability": "view"
291
+ },
292
+ {
293
+ "type": "function",
294
+ "name": "verifySigner",
295
+ "inputs": [
296
+ {
297
+ "name": "accountId",
298
+ "type": "uint128",
299
+ "internalType": "uint128"
300
+ },
301
+ {
302
+ "name": "signer",
303
+ "type": "address",
304
+ "internalType": "address"
305
+ }
306
+ ],
307
+ "outputs": [
308
+ {
309
+ "name": "",
310
+ "type": "bool",
311
+ "internalType": "bool"
312
+ }
313
+ ],
314
+ "stateMutability": "view"
315
+ },
316
+ {
317
+ "type": "error",
318
+ "name": "CannotExecuteConditionalOrder",
319
+ "inputs": [
320
+ {
321
+ "name": "order",
322
+ "type": "tuple",
323
+ "internalType": "struct ConditionalOrderDetails",
324
+ "components": [
325
+ {
326
+ "name": "accountId",
327
+ "type": "uint128",
328
+ "internalType": "uint128"
329
+ },
330
+ {
331
+ "name": "marketId",
332
+ "type": "uint128",
333
+ "internalType": "uint128"
334
+ },
335
+ {
336
+ "name": "exchangeId",
337
+ "type": "uint128",
338
+ "internalType": "uint128"
339
+ },
340
+ {
341
+ "name": "counterpartyAccountIds",
342
+ "type": "uint128[]",
343
+ "internalType": "uint128[]"
344
+ },
345
+ {
346
+ "name": "orderType",
347
+ "type": "uint8",
348
+ "internalType": "enum OrderType"
349
+ },
350
+ {
351
+ "name": "inputs",
352
+ "type": "bytes",
353
+ "internalType": "bytes"
354
+ },
355
+ {
356
+ "name": "signer",
357
+ "type": "address",
358
+ "internalType": "address"
359
+ },
360
+ {
361
+ "name": "nonce",
362
+ "type": "uint256",
363
+ "internalType": "uint256"
364
+ }
365
+ ]
366
+ },
367
+ {
368
+ "name": "signature",
369
+ "type": "bytes",
370
+ "internalType": "bytes"
371
+ }
372
+ ]
373
+ },
374
+ {
375
+ "type": "error",
376
+ "name": "FeatureUnavailable",
377
+ "inputs": [
378
+ {
379
+ "name": "which",
380
+ "type": "bytes32",
381
+ "internalType": "bytes32"
382
+ }
383
+ ]
384
+ },
385
+ {
386
+ "type": "error",
387
+ "name": "HigherExecutionPrice",
388
+ "inputs": [
389
+ {
390
+ "name": "executionPrice",
391
+ "type": "uint256",
392
+ "internalType": "UD60x18"
393
+ },
394
+ {
395
+ "name": "priceLimit",
396
+ "type": "uint256",
397
+ "internalType": "UD60x18"
398
+ }
399
+ ]
400
+ },
401
+ {
402
+ "type": "error",
403
+ "name": "LowerExecutionPrice",
404
+ "inputs": [
405
+ {
406
+ "name": "executionPrice",
407
+ "type": "uint256",
408
+ "internalType": "UD60x18"
409
+ },
410
+ {
411
+ "name": "priceLimit",
412
+ "type": "uint256",
413
+ "internalType": "UD60x18"
414
+ }
415
+ ]
416
+ },
417
+ {
418
+ "type": "error",
419
+ "name": "MatchOrderOutputsLengthMismatch",
420
+ "inputs": [
421
+ {
422
+ "name": "outputsLength",
423
+ "type": "uint256",
424
+ "internalType": "uint256"
425
+ }
426
+ ]
427
+ },
428
+ {
429
+ "type": "error",
430
+ "name": "OrderTypeNotFound",
431
+ "inputs": [
432
+ {
433
+ "name": "orderType",
434
+ "type": "uint8",
435
+ "internalType": "enum OrderType"
436
+ }
437
+ ]
438
+ },
439
+ {
440
+ "type": "error",
441
+ "name": "ZeroStopLossOrderSize",
442
+ "inputs": [
443
+ {
444
+ "name": "stopLossOrder",
445
+ "type": "tuple",
446
+ "internalType": "struct StopLossOrderDetails",
447
+ "components": [
448
+ {
449
+ "name": "accountId",
450
+ "type": "uint128",
451
+ "internalType": "uint128"
452
+ },
453
+ {
454
+ "name": "marketId",
455
+ "type": "uint128",
456
+ "internalType": "uint128"
457
+ },
458
+ {
459
+ "name": "exchangeId",
460
+ "type": "uint128",
461
+ "internalType": "uint128"
462
+ },
463
+ {
464
+ "name": "triggerPrice",
465
+ "type": "uint256",
466
+ "internalType": "UD60x18"
467
+ },
468
+ {
469
+ "name": "priceLimit",
470
+ "type": "uint256",
471
+ "internalType": "UD60x18"
472
+ }
473
+ ]
474
+ }
475
+ ]
476
+ }
477
+ ]
478
+ }
@@ -4,6 +4,7 @@ export enum ContractType {
4
4
  CORE_PROXY = 'core_proxy',
5
5
  PASSIVE_POOL_PROXY = 'passive_pool_proxy',
6
6
  PERIPHERY_PROXY = 'periphery_proxy',
7
+ CONDITIONAL_ORDERS_PROXY = 'conditional_orders_proxy',
7
8
  }
8
9
 
9
10
  const addresses: Record<ReyaChainId, Record<ContractType, Address>> = {
@@ -13,6 +14,7 @@ const addresses: Record<ReyaChainId, Record<ContractType, Address>> = {
13
14
  '0x9afc30bed29d636e566fd9d7dd89d51773724be6',
14
15
  [ContractType.PERIPHERY_PROXY]:
15
16
  '0xa45d0566144956b6012d461ad509dad2bacacaaf',
17
+ [ContractType.CONDITIONAL_ORDERS_PROXY]: '',
16
18
  },
17
19
  [ReyaChainId.reyaNetwork]: {
18
20
  [ContractType.CORE_PROXY]: '0xa763b6a5e09378434406c003dae6487fbbdc1a80',
@@ -20,6 +22,7 @@ const addresses: Record<ReyaChainId, Record<ContractType, Address>> = {
20
22
  '0xb4b77d6180cc14472a9a7bdff01cc2459368d413',
21
23
  [ContractType.PERIPHERY_PROXY]:
22
24
  '0xcd2869d1eb1bc8991bc55de9e9b779e912faf736',
25
+ [ContractType.CONDITIONAL_ORDERS_PROXY]: '',
23
26
  },
24
27
  };
25
28
  export const getAddress = (
@@ -1,6 +1,7 @@
1
1
  export * from './action';
2
2
  export { abi as CoreAbi } from './abis/CoreProxy.json';
3
3
  export { abi as PeripheryAbi } from './abis/Periphery.json';
4
+ export { abi as ConditionalOrdersAbi } from './abis/ConditionalOrdersGateway.json';
4
5
  export { abi as Socket_VaultWithPayloadAbi } from './abis/socket/VaultWithPayload.json';
5
6
  export * from './contractAddresses';
6
7
  export * from './routerCommands';
@@ -9,3 +10,4 @@ export * from './trade';
9
10
  export * from './txHelpers';
10
11
  export * from './consts';
11
12
  export * from './executeTransaction';
13
+ export * from './permissions';
@@ -0,0 +1,15 @@
1
+ import { ethers } from 'ethers';
2
+
3
+ export enum CoreAccountPermissionTypes {
4
+ ADMIN = 'ADMIN',
5
+ WITHDRAW = 'WITHDRAW',
6
+ TRANSFER = 'TRANSFER',
7
+ DUTCH_LIQUIDATION = 'DUTCH_LIQUIDATION',
8
+ MATCH_ORDER = 'MATCH_ORDER',
9
+ }
10
+
11
+ export const getPermission = (
12
+ permissionName: CoreAccountPermissionTypes,
13
+ ): string => {
14
+ return ethers.keccak256(ethers.toUtf8Bytes(permissionName));
15
+ };
@@ -133,3 +133,83 @@ async function signReyaTypedData(
133
133
 
134
134
  return Signature.from(signatureString);
135
135
  }
136
+
137
+ export async function signConditionalOrder(
138
+ signer: Signer | JsonRpcSigner,
139
+ reyaChainId: ReyaChainId,
140
+ accountId: number,
141
+ marketId: number,
142
+ exchangeId: number,
143
+ counterpartyAccountIds: number[],
144
+ orderType: number,
145
+ inputs: string,
146
+ nonce: number,
147
+ deadline: number,
148
+ ): Promise<EIP712Signature> {
149
+ // todo: add deadline to encoded sig
150
+ const signature = await signReyaTypedData(
151
+ signer,
152
+ getAddress(reyaChainId, ContractType.CONDITIONAL_ORDERS_PROXY),
153
+ {
154
+ ConditionalOrderDetails: [
155
+ { name: 'accountId', type: 'uint128' },
156
+ { name: 'marketId', type: 'uint128' },
157
+ { name: 'exchangeId', type: 'uint128' },
158
+ { name: 'counterpartyAccountIds', type: 'uint128[]' },
159
+ { name: 'orderType', type: 'uint8' },
160
+ { name: 'inputs', type: 'bytes' },
161
+ { name: 'signer', type: 'address' },
162
+ { name: 'nonce', type: 'uint256' },
163
+ ],
164
+ },
165
+ {
166
+ accountId: accountId,
167
+ marketId: marketId,
168
+ exchangeId: exchangeId,
169
+ counterpartyAccountIds: counterpartyAccountIds,
170
+ orderType: orderType,
171
+ inputs: inputs,
172
+ signer: await signer.getAddress(),
173
+ nonce: nonce,
174
+ },
175
+ );
176
+
177
+ return convertEthersSignatureToEIP712Signature(signature, deadline);
178
+ }
179
+
180
+ export async function signGrantPermission(
181
+ signer: Signer | JsonRpcSigner,
182
+ reyaChainId: ReyaChainId,
183
+ accountId: number,
184
+ permission: string,
185
+ user: string,
186
+ nonce: number,
187
+ deadline: number,
188
+ ): Promise<EIP712Signature> {
189
+ const signature = await signReyaTypedData(
190
+ signer,
191
+ getAddress(reyaChainId, ContractType.CORE_PROXY),
192
+ {
193
+ GrantAccountPermissionBySig: [
194
+ { name: 'verifyingChainId', type: 'uint256' },
195
+ { name: 'caller', type: 'address' },
196
+ { name: 'accountId', type: 'uint128' },
197
+ { name: 'permission', type: 'bytes32' },
198
+ { name: 'user', type: 'address' },
199
+ { name: 'nonce', type: 'uint256' },
200
+ { name: 'deadline', type: 'uint256' },
201
+ ],
202
+ },
203
+ {
204
+ verifyingChainId: reyaChainId,
205
+ caller: await signer.getAddress(),
206
+ accountId: accountId,
207
+ permission: permission,
208
+ user: user,
209
+ nonce: nonce,
210
+ deadline: deadline,
211
+ },
212
+ );
213
+
214
+ return convertEthersSignatureToEIP712Signature(signature, deadline);
215
+ }
package/src/types.ts CHANGED
@@ -855,3 +855,23 @@ type ReadyWithdrawalStatus = {
855
855
  export type PendingWithdrawal = {
856
856
  tokenAmount: number;
857
857
  } & (PendingWithdrawalStatus | ReadyWithdrawalStatus);
858
+
859
+ export enum StopLossOrderStatus {
860
+ NEW = 'new',
861
+ FILLED = 'filled',
862
+ CANCELLED = 'cancelled',
863
+ REJECTED = 'rejected',
864
+ }
865
+
866
+ export type StopLossOrder = {
867
+ orderId: number;
868
+ accountId: number;
869
+ marketId: number;
870
+ isLong: boolean;
871
+ stopPrice: number;
872
+ signerWallet: string;
873
+ nonce: number;
874
+ signature: string;
875
+ status: StopLossOrderStatus;
876
+ timestampMs: number;
877
+ };