@reyaxyz/common 0.154.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
@@ -625,6 +625,8 @@ export type GetUserLeaderboardDataV2Result = UserLeaderboardDataV2Entity;
625
625
 
626
626
  export type GetUserGameStatusParams = { address: string };
627
627
 
628
+ export type GetSeasonOGSnapshotParams = { address: string };
629
+
628
630
  export type GetUserGameStatusResult = {
629
631
  bodyId: string;
630
632
  status: 'notStarted' | 'notLockedIn' | 'lockedIn' | 'expired';
@@ -632,6 +634,12 @@ export type GetUserGameStatusResult = {
632
634
  nextBoostStartTimestampMilliseconds: number;
633
635
  };
634
636
 
637
+ export type GetSeasonOGSnapshotResult = {
638
+ overallPosition: number;
639
+ totalXp: number;
640
+ rank: Rank;
641
+ };
642
+
635
643
  export type GenerateGameBoostRateParams = { address: string; bodyId: string };
636
644
 
637
645
  export type GenerateGameBoostRateResult = { boostRate: number };
@@ -847,3 +855,23 @@ type ReadyWithdrawalStatus = {
847
855
  export type PendingWithdrawal = {
848
856
  tokenAmount: number;
849
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
+ };