@reyaxyz/common 0.344.0 → 0.344.1-perpob.110
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/README.md +1 -1
- package/dist/commands/exposure/command.js +8 -22
- package/dist/commands/exposure/command.js.map +1 -1
- package/dist/incentives-api-types.js.map +1 -1
- package/dist/rest/helpers/constants.js +12 -0
- package/dist/rest/helpers/constants.js.map +1 -1
- package/dist/services/getNativeToken.js +1 -0
- package/dist/services/getNativeToken.js.map +1 -1
- package/dist/services/getSocketAddresses.js +1 -0
- package/dist/services/getSocketAddresses.js.map +1 -1
- package/dist/trading-api-types.js.map +1 -1
- package/dist/transactions/abis/Errors.json +1283 -34
- package/dist/transactions/abis/OrdersGateway.json +729 -123
- package/dist/transactions/abis/PassivePerpProxy.json +542 -0
- package/dist/transactions/buildMulticallTx.js.map +1 -1
- package/dist/transactions/consts.js +1 -2
- package/dist/transactions/consts.js.map +1 -1
- package/dist/transactions/contractAddresses.js +46 -5
- package/dist/transactions/contractAddresses.js.map +1 -1
- package/dist/transactions/executeTransaction.js +8 -123
- package/dist/transactions/executeTransaction.js.map +1 -1
- package/dist/transactions/sign.js +285 -79
- package/dist/transactions/sign.js.map +1 -1
- package/dist/types/commands/exposure/command.d.ts +8 -7
- package/dist/types/commands/exposure/command.d.ts.map +1 -1
- package/dist/types/incentives-api-types.d.ts +40 -17
- package/dist/types/incentives-api-types.d.ts.map +1 -1
- package/dist/types/rest/helpers/constants.d.ts +1 -1
- package/dist/types/rest/helpers/constants.d.ts.map +1 -1
- package/dist/types/services/getNativeToken.d.ts.map +1 -1
- package/dist/types/services/getSocketAddresses.d.ts.map +1 -1
- package/dist/types/trading-api-types.d.ts +144 -94
- package/dist/types/trading-api-types.d.ts.map +1 -1
- package/dist/types/transactions/buildMulticallTx.d.ts +1 -0
- package/dist/types/transactions/buildMulticallTx.d.ts.map +1 -1
- package/dist/types/transactions/consts.d.ts +0 -1
- package/dist/types/transactions/consts.d.ts.map +1 -1
- package/dist/types/transactions/contractAddresses.d.ts +1 -1
- package/dist/types/transactions/contractAddresses.d.ts.map +1 -1
- package/dist/types/transactions/executeTransaction.d.ts +2 -15
- package/dist/types/transactions/executeTransaction.d.ts.map +1 -1
- package/dist/types/transactions/sign.d.ts +117 -6
- package/dist/types/transactions/sign.d.ts.map +1 -1
- package/dist/types/types.d.ts +52 -64
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/utils/calculate.d.ts +14 -2
- package/dist/types/utils/calculate.d.ts.map +1 -1
- package/dist/types/utils/compute-trade-pnl.d.ts +39 -0
- package/dist/types/utils/compute-trade-pnl.d.ts.map +1 -0
- package/dist/types/utils/consts.d.ts +2 -2
- package/dist/types/utils/consts.d.ts.map +1 -1
- package/dist/types/utils/error-sanitizer.d.ts +15 -0
- package/dist/types/utils/error-sanitizer.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +3 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/layerzero.d.ts +22 -0
- package/dist/types/utils/layerzero.d.ts.map +1 -0
- package/dist/types/utils/network.d.ts.map +1 -1
- package/dist/types/utils/throttled-error.d.ts +42 -0
- package/dist/types/utils/throttled-error.d.ts.map +1 -0
- package/dist/types/utils/token/batch-token-getters.d.ts +0 -5
- package/dist/types/utils/token/batch-token-getters.d.ts.map +1 -1
- package/dist/types/utils/token/normalize.d.ts +2 -1
- package/dist/types/utils/token/normalize.d.ts.map +1 -1
- package/dist/types/utils/token/token-getters.d.ts +0 -2
- package/dist/types/utils/token/token-getters.d.ts.map +1 -1
- package/dist/types/utils/token/token-info-getters.d.ts.map +1 -1
- package/dist/types/utils/token/token-info.d.ts.map +1 -1
- package/dist/types.js +41 -11
- package/dist/types.js.map +1 -1
- package/dist/utils/calculate.js +137 -16
- package/dist/utils/calculate.js.map +1 -1
- package/dist/utils/compute-trade-pnl.js +60 -0
- package/dist/utils/compute-trade-pnl.js.map +1 -0
- package/dist/utils/consts.js +8 -13
- package/dist/utils/consts.js.map +1 -1
- package/dist/utils/error-sanitizer.js +135 -0
- package/dist/utils/error-sanitizer.js.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/layerzero.js +31 -0
- package/dist/utils/layerzero.js.map +1 -0
- package/dist/utils/network.js +4 -0
- package/dist/utils/network.js.map +1 -1
- package/dist/utils/throttled-error.js +60 -0
- package/dist/utils/throttled-error.js.map +1 -0
- package/dist/utils/token/batch-token-getters.js +13 -64
- package/dist/utils/token/batch-token-getters.js.map +1 -1
- package/dist/utils/token/normalize.js +2 -2
- package/dist/utils/token/normalize.js.map +1 -1
- package/dist/utils/token/token-getters.js +1 -42
- package/dist/utils/token/token-getters.js.map +1 -1
- package/dist/utils/token/token-info-getters.js +45 -4
- package/dist/utils/token/token-info-getters.js.map +1 -1
- package/dist/utils/token/token-info.js +6 -0
- package/dist/utils/token/token-info.js.map +1 -1
- package/package.json +3 -3
- package/src/commands/exposure/command.ts +8 -38
- package/src/incentives-api-types.ts +66 -33
- package/src/rest/helpers/constants.ts +22 -0
- package/src/services/getNativeToken.ts +1 -0
- package/src/services/getSocketAddresses.ts +1 -0
- package/src/trading-api-types.ts +175 -127
- package/src/transactions/abis/Errors.json +5133 -3884
- package/src/transactions/abis/OrdersGateway.json +730 -124
- package/src/transactions/abis/PassivePerpProxy.json +542 -0
- package/src/transactions/buildMulticallTx.ts +4 -0
- package/src/transactions/consts.ts +0 -1
- package/src/transactions/contractAddresses.ts +43 -6
- package/src/transactions/executeTransaction.ts +2 -130
- package/src/transactions/sign.ts +347 -93
- package/src/types.ts +90 -74
- package/src/utils/calculate.ts +181 -21
- package/src/utils/compute-trade-pnl.ts +110 -0
- package/src/utils/consts.ts +10 -22
- package/src/utils/error-sanitizer.ts +137 -0
- package/src/utils/index.ts +3 -0
- package/src/utils/layerzero.ts +66 -0
- package/src/utils/network.ts +4 -0
- package/src/utils/throttled-error.ts +85 -0
- package/src/utils/token/batch-token-getters.ts +0 -28
- package/src/utils/token/normalize.ts +6 -1
- package/src/utils/token/token-getters.ts +0 -29
- package/src/utils/token/token-info-getters.ts +54 -4
- package/src/utils/token/token-info.ts +35 -0
- package/dist/types/utils/layerzero/index.d.ts +0 -3
- package/dist/types/utils/layerzero/index.d.ts.map +0 -1
- package/dist/types/utils/layerzero/oft-config.d.ts +0 -4
- package/dist/types/utils/layerzero/oft-config.d.ts.map +0 -1
- package/dist/types/utils/layerzero/types.d.ts +0 -23
- package/dist/types/utils/layerzero/types.d.ts.map +0 -1
- package/dist/utils/layerzero/index.js +0 -19
- package/dist/utils/layerzero/index.js.map +0 -1
- package/dist/utils/layerzero/oft-config.js +0 -29
- package/dist/utils/layerzero/oft-config.js.map +0 -1
- package/dist/utils/layerzero/types.js +0 -3
- package/dist/utils/layerzero/types.js.map +0 -1
- package/src/utils/layerzero/index.ts +0 -2
- package/src/utils/layerzero/oft-config.ts +0 -32
- package/src/utils/layerzero/types.ts +0 -25
|
@@ -36,10 +36,9 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.signManagePermissionBySig = exports.signRevokePermission = exports.signVote = exports.signGrantPermission = exports.
|
|
39
|
+
exports.signManagePermissionBySig = exports.signMECancelAllAfter = exports.signMEMassCancel = exports.signMEOrderCancel = exports.signRevokePermission = exports.signVote = exports.signGrantPermission = exports.isOrderSignatureValid = exports.signOrder = exports.fullPositionStopQuantity = exports.FULL_POSITION_STOP_SENTINEL = exports.orderTypes = exports.signMassCancel = exports.signOrderCancel = exports.cancelAllAfterTypes = exports.massCancelTypes = exports.orderCancelTypes = exports.getReyaDomain = exports.signPoolRemoveLiquidity = exports.signCoreCommands = exports.convertEthersSignatureToEIP712Signature = void 0;
|
|
40
40
|
var ethers_1 = require("ethers");
|
|
41
41
|
var contractAddresses_1 = require("./contractAddresses");
|
|
42
|
-
var types_1 = require("../types");
|
|
43
42
|
function convertEthersSignatureToEIP712Signature(signature, deadline) {
|
|
44
43
|
return {
|
|
45
44
|
v: signature.v,
|
|
@@ -159,118 +158,257 @@ function getReyaDomain(verifyingContract) {
|
|
|
159
158
|
};
|
|
160
159
|
}
|
|
161
160
|
exports.getReyaDomain = getReyaDomain;
|
|
162
|
-
|
|
163
|
-
|
|
161
|
+
// PRO-126 Bug 5 retired the legacy `ConditionalOrderDetails` typehash +
|
|
162
|
+
// `signOrdersGatewayOrder` / `isConditionalOrderSignatureValid` /
|
|
163
|
+
// `createOrdersGatewayOrderNonce` helpers. The on-chain
|
|
164
|
+
// `OrdersGateway.execute` selector that consumed those signatures is
|
|
165
|
+
// gone; every order class now signs the new flat `OrderDetails` schema
|
|
166
|
+
// via `signOrder` further down this file.
|
|
167
|
+
// The three cancel-side typed-data schemas below are EXPORTED as the single
|
|
168
|
+
// source of truth for signer AND verifier — common-backend's
|
|
169
|
+
// `recover{OrderCancel,MassCancel,CancelAllAfter}Signer` import them from
|
|
170
|
+
// here (like `orderTypes` for the Order struct). They used to be duplicated
|
|
171
|
+
// module-private consts on each side; any drift (field rename / width /
|
|
172
|
+
// reorder) silently breaks 100% of signature recovery for that request
|
|
173
|
+
// class, so exactly one copy may exist.
|
|
174
|
+
/**
|
|
175
|
+
* EIP-712 typed-data structures for the OrderCancel signature scheme used by
|
|
176
|
+
* the matching engine for order cancellations. The signer signs over a value
|
|
177
|
+
* of shape
|
|
178
|
+
* `{ verifyingChainId, deadline, cancel: { accountId, marketId, orderId, clOrdId, nonce } }`.
|
|
179
|
+
*/
|
|
180
|
+
exports.orderCancelTypes = {
|
|
181
|
+
OrderCancel: [
|
|
182
|
+
{ name: 'verifyingChainId', type: 'uint64' },
|
|
183
|
+
{ name: 'deadline', type: 'uint64' },
|
|
184
|
+
{ name: 'cancel', type: 'OrderCancelDetails' },
|
|
185
|
+
],
|
|
186
|
+
OrderCancelDetails: [
|
|
187
|
+
{ name: 'accountId', type: 'uint64' },
|
|
188
|
+
{ name: 'marketId', type: 'uint64' },
|
|
189
|
+
{ name: 'orderId', type: 'uint64' },
|
|
190
|
+
{ name: 'clOrdId', type: 'uint64' },
|
|
191
|
+
{ name: 'nonce', type: 'uint64' },
|
|
192
|
+
],
|
|
193
|
+
};
|
|
194
|
+
/**
|
|
195
|
+
* EIP-712 typed-data structures for the MassCancel signature scheme used by
|
|
196
|
+
* the matching engine for mass cancellations. The signer signs over a value
|
|
197
|
+
* of shape `{ verifyingChainId, deadline, massCancel: { accountId, marketId, nonce } }`.
|
|
198
|
+
*/
|
|
199
|
+
exports.massCancelTypes = {
|
|
200
|
+
MassCancel: [
|
|
201
|
+
{ name: 'verifyingChainId', type: 'uint64' },
|
|
202
|
+
{ name: 'deadline', type: 'uint64' },
|
|
203
|
+
{ name: 'massCancel', type: 'MassCancelDetails' },
|
|
204
|
+
],
|
|
205
|
+
MassCancelDetails: [
|
|
206
|
+
{ name: 'accountId', type: 'uint64' },
|
|
207
|
+
{ name: 'marketId', type: 'uint64' },
|
|
208
|
+
{ name: 'nonce', type: 'uint64' },
|
|
209
|
+
],
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* EIP-712 typed-data structures for the CancelAllAfter signature scheme used
|
|
213
|
+
* by the matching engine for the cancel-on-disconnect dead-man's-switch. The
|
|
214
|
+
* signer signs over a value of shape
|
|
215
|
+
* `{ verifyingChainId, deadline, cancelAllAfter: { accountId, timeoutMs, nonce } }`.
|
|
216
|
+
* uint64 throughout, matching the OrderCancel / MassCancel family.
|
|
217
|
+
*/
|
|
218
|
+
exports.cancelAllAfterTypes = {
|
|
219
|
+
CancelAllAfter: [
|
|
220
|
+
{ name: 'verifyingChainId', type: 'uint64' },
|
|
221
|
+
{ name: 'deadline', type: 'uint64' },
|
|
222
|
+
{ name: 'cancelAllAfter', type: 'CancelAllAfterDetails' },
|
|
223
|
+
],
|
|
224
|
+
CancelAllAfterDetails: [
|
|
225
|
+
{ name: 'accountId', type: 'uint64' },
|
|
226
|
+
{ name: 'timeoutMs', type: 'uint64' },
|
|
227
|
+
{ name: 'nonce', type: 'uint64' },
|
|
228
|
+
],
|
|
229
|
+
};
|
|
230
|
+
function signOrderCancel(signer, reyaChainId, accountId, marketId, orderId, clOrdId, nonce, deadline) {
|
|
231
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
232
|
+
var signature;
|
|
233
|
+
return __generator(this, function (_a) {
|
|
234
|
+
switch (_a.label) {
|
|
235
|
+
case 0: return [4 /*yield*/, signReyaTypedData(signer, (0, contractAddresses_1.getAddress)(reyaChainId, contractAddresses_1.ContractType.ORDERS_GATEWAY_PROXY), exports.orderCancelTypes, {
|
|
236
|
+
verifyingChainId: reyaChainId,
|
|
237
|
+
deadline: deadline,
|
|
238
|
+
cancel: {
|
|
239
|
+
accountId: accountId,
|
|
240
|
+
marketId: marketId,
|
|
241
|
+
orderId: orderId,
|
|
242
|
+
clOrdId: clOrdId,
|
|
243
|
+
nonce: nonce,
|
|
244
|
+
},
|
|
245
|
+
})];
|
|
246
|
+
case 1:
|
|
247
|
+
signature = _a.sent();
|
|
248
|
+
return [2 /*return*/, {
|
|
249
|
+
serializedSignature: signature.serialized,
|
|
250
|
+
nonce: nonce,
|
|
251
|
+
signature: convertEthersSignatureToEIP712Signature(signature, deadline),
|
|
252
|
+
}];
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
exports.signOrderCancel = signOrderCancel;
|
|
258
|
+
function signMassCancel(signer, reyaChainId, accountId, marketId, nonce, deadline) {
|
|
259
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
260
|
+
var signature;
|
|
261
|
+
return __generator(this, function (_a) {
|
|
262
|
+
switch (_a.label) {
|
|
263
|
+
case 0: return [4 /*yield*/, signReyaTypedData(signer, (0, contractAddresses_1.getAddress)(reyaChainId, contractAddresses_1.ContractType.ORDERS_GATEWAY_PROXY), exports.massCancelTypes, {
|
|
264
|
+
verifyingChainId: reyaChainId,
|
|
265
|
+
deadline: deadline,
|
|
266
|
+
massCancel: {
|
|
267
|
+
accountId: accountId,
|
|
268
|
+
marketId: marketId,
|
|
269
|
+
nonce: nonce,
|
|
270
|
+
},
|
|
271
|
+
})];
|
|
272
|
+
case 1:
|
|
273
|
+
signature = _a.sent();
|
|
274
|
+
return [2 /*return*/, {
|
|
275
|
+
serializedSignature: signature.serialized,
|
|
276
|
+
nonce: nonce,
|
|
277
|
+
signature: convertEthersSignatureToEIP712Signature(signature, deadline),
|
|
278
|
+
}];
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
exports.signMassCancel = signMassCancel;
|
|
284
|
+
// -----------------------------------------------------------------------------
|
|
285
|
+
// perpOB: EIP-712 typed data for the flat `Order` / `OrderDetails` struct
|
|
286
|
+
// -----------------------------------------------------------------------------
|
|
287
|
+
// Matches the post-audit on-chain redesign in
|
|
288
|
+
// reya-network/feat/perpOB (orders-gateway/src/libraries/DataTypes.sol +
|
|
289
|
+
// ConditionalOrderHashing.sol). PRO-126 Bug 5 retired the legacy
|
|
290
|
+
// `conditionalOrderTypes` / `signOrdersGatewayOrder` / `isConditionalOrderSignatureValid`
|
|
291
|
+
// surface that this struct replaced — every order class (spot + perp,
|
|
292
|
+
// IOC + GTC + TP + SL) now signs against `OrderDetails` here.
|
|
293
|
+
//
|
|
294
|
+
// Contract: Order envelope + flat OrderDetails inner struct. Two distinct time
|
|
295
|
+
// values are signed:
|
|
296
|
+
// - envelope `deadline` -> signature validity, enforced by API at entry
|
|
297
|
+
// - inner `expiresAfter` -> order lifetime, enforced on-chain at execution
|
|
298
|
+
// Convention: callers should set `deadline <= expiresAfter` when `expiresAfter > 0`.
|
|
299
|
+
// See reya-api-specs/docs/eip712.md for the canonical description.
|
|
300
|
+
exports.orderTypes = {
|
|
301
|
+
Order: [
|
|
164
302
|
{ name: 'verifyingChainId', type: 'uint256' },
|
|
165
303
|
{ name: 'deadline', type: 'uint256' },
|
|
166
|
-
{ name: 'order', type: '
|
|
304
|
+
{ name: 'order', type: 'OrderDetails' },
|
|
167
305
|
],
|
|
168
|
-
|
|
306
|
+
OrderDetails: [
|
|
169
307
|
{ name: 'accountId', type: 'uint128' },
|
|
170
308
|
{ name: 'marketId', type: 'uint128' },
|
|
171
309
|
{ name: 'exchangeId', type: 'uint128' },
|
|
172
|
-
{ name: 'counterpartyAccountIds', type: 'uint128[]' },
|
|
173
310
|
{ name: 'orderType', type: 'uint8' },
|
|
174
|
-
{ name: '
|
|
311
|
+
{ name: 'quantity', type: 'int256' },
|
|
312
|
+
{ name: 'limitPrice', type: 'uint256' },
|
|
313
|
+
{ name: 'triggerPrice', type: 'uint256' },
|
|
314
|
+
{ name: 'timeInForce', type: 'uint8' },
|
|
315
|
+
{ name: 'clientOrderId', type: 'uint64' },
|
|
316
|
+
{ name: 'reduceOnly', type: 'bool' },
|
|
317
|
+
{ name: 'postOnly', type: 'bool' },
|
|
318
|
+
{ name: 'expiresAfter', type: 'uint256' },
|
|
175
319
|
{ name: 'signer', type: 'address' },
|
|
176
320
|
{ name: 'nonce', type: 'uint256' },
|
|
177
321
|
],
|
|
178
322
|
};
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
323
|
+
/**
|
|
324
|
+
* Full-position stop sentinel — `type(int256).max` (2^255 − 1), mirroring
|
|
325
|
+
* `FULL_POSITION_STOP_SENTINEL` in the OrdersGateway (reya-network #738). A
|
|
326
|
+
* STOP_LOSS / TAKE_PROFIT signs quantity `±sentinel` (the sign carries the
|
|
327
|
+
* close side: −sentinel sells out a long, +sentinel buys back a short); the
|
|
328
|
+
* chain enforces the iff — a stop with any other quantity (including the old
|
|
329
|
+
* quantity-0 encoding) reverts, and the sentinel magnitude is reserved (a
|
|
330
|
+
* non-stop signing it reverts). Raw int256 value, NOT E18-scaled. Signer and
|
|
331
|
+
* verifier must derive it from THIS constant so they can never drift.
|
|
332
|
+
*/
|
|
333
|
+
exports.FULL_POSITION_STOP_SENTINEL = (BigInt(1) << BigInt(255)) - BigInt(1);
|
|
334
|
+
/** The signed quantity for a full-position stop: sign carries the close side. */
|
|
335
|
+
function fullPositionStopQuantity(isBuy) {
|
|
336
|
+
return isBuy ? exports.FULL_POSITION_STOP_SENTINEL : -exports.FULL_POSITION_STOP_SENTINEL;
|
|
191
337
|
}
|
|
192
|
-
exports.
|
|
193
|
-
function
|
|
338
|
+
exports.fullPositionStopQuantity = fullPositionStopQuantity;
|
|
339
|
+
function signOrder(signer, reyaChainId, params) {
|
|
340
|
+
var _a;
|
|
194
341
|
return __awaiter(this, void 0, void 0, function () {
|
|
195
|
-
var
|
|
196
|
-
var
|
|
197
|
-
return __generator(this, function (
|
|
198
|
-
switch (
|
|
342
|
+
var signature, _b, _c;
|
|
343
|
+
var _d, _e;
|
|
344
|
+
return __generator(this, function (_f) {
|
|
345
|
+
switch (_f.label) {
|
|
199
346
|
case 0:
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
_b = [signer,
|
|
347
|
+
_b = signReyaTypedData;
|
|
348
|
+
_c = [signer,
|
|
203
349
|
(0, contractAddresses_1.getAddress)(reyaChainId, contractAddresses_1.ContractType.ORDERS_GATEWAY_PROXY),
|
|
204
|
-
|
|
205
|
-
|
|
350
|
+
exports.orderTypes];
|
|
351
|
+
_d = {
|
|
206
352
|
verifyingChainId: reyaChainId,
|
|
207
|
-
deadline: BigInt(deadline)
|
|
353
|
+
deadline: BigInt(params.deadline)
|
|
208
354
|
};
|
|
209
|
-
|
|
210
|
-
accountId: accountId,
|
|
211
|
-
marketId: marketId,
|
|
212
|
-
exchangeId: exchangeId,
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
355
|
+
_e = {
|
|
356
|
+
accountId: params.accountId,
|
|
357
|
+
marketId: params.marketId,
|
|
358
|
+
exchangeId: params.exchangeId,
|
|
359
|
+
orderType: params.orderType,
|
|
360
|
+
quantity: params.quantity,
|
|
361
|
+
limitPrice: params.limitPrice,
|
|
362
|
+
triggerPrice: params.triggerPrice,
|
|
363
|
+
timeInForce: params.timeInForce,
|
|
364
|
+
clientOrderId: params.clientOrderId,
|
|
365
|
+
reduceOnly: params.reduceOnly,
|
|
366
|
+
postOnly: (_a = params.postOnly) !== null && _a !== void 0 ? _a : false,
|
|
367
|
+
expiresAfter: params.expiresAfter
|
|
216
368
|
};
|
|
217
369
|
return [4 /*yield*/, signer.getAddress()];
|
|
218
|
-
case 1: return [4 /*yield*/,
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
370
|
+
case 1: return [4 /*yield*/, _b.apply(void 0, _c.concat([(_d.order = (_e.signer = _f.sent(),
|
|
371
|
+
_e.nonce = params.nonce,
|
|
372
|
+
_e),
|
|
373
|
+
_d)]))];
|
|
222
374
|
case 2:
|
|
223
|
-
signature =
|
|
375
|
+
signature = _f.sent();
|
|
224
376
|
return [2 /*return*/, {
|
|
225
377
|
serializedSignature: signature.serialized,
|
|
226
|
-
|
|
227
|
-
signature: convertEthersSignatureToEIP712Signature(signature, deadline),
|
|
378
|
+
signature: convertEthersSignatureToEIP712Signature(signature, params.deadline),
|
|
228
379
|
}];
|
|
229
380
|
}
|
|
230
381
|
});
|
|
231
382
|
});
|
|
232
383
|
}
|
|
233
|
-
exports.
|
|
234
|
-
function
|
|
235
|
-
|
|
236
|
-
var domain = getReyaDomain((0, contractAddresses_1.getAddress)(reyaChainId, contractAddresses_1.ContractType.
|
|
384
|
+
exports.signOrder = signOrder;
|
|
385
|
+
function isOrderSignatureValid(signerAddress, signature, reyaChainId, params) {
|
|
386
|
+
var _a;
|
|
387
|
+
var domain = getReyaDomain((0, contractAddresses_1.getAddress)(reyaChainId, contractAddresses_1.ContractType.ORDERS_GATEWAY_PROXY));
|
|
237
388
|
var value = {
|
|
238
389
|
verifyingChainId: reyaChainId,
|
|
239
|
-
deadline: BigInt(deadline),
|
|
390
|
+
deadline: BigInt(params.deadline),
|
|
240
391
|
order: {
|
|
241
|
-
accountId: accountId,
|
|
242
|
-
marketId: marketId,
|
|
243
|
-
exchangeId: exchangeId,
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
392
|
+
accountId: params.accountId,
|
|
393
|
+
marketId: params.marketId,
|
|
394
|
+
exchangeId: params.exchangeId,
|
|
395
|
+
orderType: params.orderType,
|
|
396
|
+
quantity: params.quantity,
|
|
397
|
+
limitPrice: params.limitPrice,
|
|
398
|
+
triggerPrice: params.triggerPrice,
|
|
399
|
+
timeInForce: params.timeInForce,
|
|
400
|
+
clientOrderId: params.clientOrderId,
|
|
401
|
+
reduceOnly: params.reduceOnly,
|
|
402
|
+
postOnly: (_a = params.postOnly) !== null && _a !== void 0 ? _a : false,
|
|
403
|
+
expiresAfter: params.expiresAfter,
|
|
247
404
|
signer: signerAddress,
|
|
248
|
-
nonce: nonce,
|
|
405
|
+
nonce: params.nonce,
|
|
249
406
|
},
|
|
250
407
|
};
|
|
251
|
-
|
|
252
|
-
var recoveredAddress = (0, ethers_1.verifyTypedData)(domain, conditionalOrderTypes, value, signature);
|
|
408
|
+
var recoveredAddress = (0, ethers_1.verifyTypedData)(domain, exports.orderTypes, value, signature);
|
|
253
409
|
return recoveredAddress.toLowerCase() === signerAddress.toLowerCase();
|
|
254
410
|
}
|
|
255
|
-
exports.
|
|
256
|
-
function signCancelConditionalOrder(signer, orderId) {
|
|
257
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
258
|
-
var message;
|
|
259
|
-
return __generator(this, function (_a) {
|
|
260
|
-
switch (_a.label) {
|
|
261
|
-
case 0:
|
|
262
|
-
message = {
|
|
263
|
-
orderId: orderId,
|
|
264
|
-
status: types_1.ConditionalOrderStatus.CANCELLED,
|
|
265
|
-
actionType: 'changeStatus',
|
|
266
|
-
};
|
|
267
|
-
return [4 /*yield*/, signer.signMessage(JSON.stringify(message))];
|
|
268
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
269
|
-
}
|
|
270
|
-
});
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
|
-
exports.signCancelConditionalOrder = signCancelConditionalOrder;
|
|
411
|
+
exports.isOrderSignatureValid = isOrderSignatureValid;
|
|
274
412
|
function signGrantPermission(signer, reyaChainId, accountId, permission, user, nonce, deadline) {
|
|
275
413
|
return __awaiter(this, void 0, void 0, function () {
|
|
276
414
|
var signature;
|
|
@@ -363,6 +501,74 @@ function signRevokePermission(signer, reyaChainId, accountId, permission, user,
|
|
|
363
501
|
});
|
|
364
502
|
}
|
|
365
503
|
exports.signRevokePermission = signRevokePermission;
|
|
504
|
+
function signMEOrderCancel(signer, reyaChainId, accountId, marketId, orderId, clOrdId, nonce, deadline) {
|
|
505
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
506
|
+
var signature;
|
|
507
|
+
return __generator(this, function (_a) {
|
|
508
|
+
switch (_a.label) {
|
|
509
|
+
case 0: return [4 /*yield*/, signReyaTypedData(signer, (0, contractAddresses_1.getAddress)(reyaChainId, contractAddresses_1.ContractType.ORDERS_GATEWAY_PROXY), exports.orderCancelTypes, {
|
|
510
|
+
verifyingChainId: reyaChainId,
|
|
511
|
+
deadline: BigInt(deadline),
|
|
512
|
+
cancel: {
|
|
513
|
+
accountId: accountId,
|
|
514
|
+
marketId: marketId,
|
|
515
|
+
orderId: orderId,
|
|
516
|
+
clOrdId: clOrdId,
|
|
517
|
+
nonce: nonce,
|
|
518
|
+
},
|
|
519
|
+
})];
|
|
520
|
+
case 1:
|
|
521
|
+
signature = _a.sent();
|
|
522
|
+
return [2 /*return*/, signature.serialized];
|
|
523
|
+
}
|
|
524
|
+
});
|
|
525
|
+
});
|
|
526
|
+
}
|
|
527
|
+
exports.signMEOrderCancel = signMEOrderCancel;
|
|
528
|
+
function signMEMassCancel(signer, reyaChainId, accountId, marketId, nonce, deadline) {
|
|
529
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
530
|
+
var signature;
|
|
531
|
+
return __generator(this, function (_a) {
|
|
532
|
+
switch (_a.label) {
|
|
533
|
+
case 0: return [4 /*yield*/, signReyaTypedData(signer, (0, contractAddresses_1.getAddress)(reyaChainId, contractAddresses_1.ContractType.ORDERS_GATEWAY_PROXY), exports.massCancelTypes, {
|
|
534
|
+
verifyingChainId: reyaChainId,
|
|
535
|
+
deadline: BigInt(deadline),
|
|
536
|
+
massCancel: {
|
|
537
|
+
accountId: accountId,
|
|
538
|
+
marketId: marketId,
|
|
539
|
+
nonce: nonce,
|
|
540
|
+
},
|
|
541
|
+
})];
|
|
542
|
+
case 1:
|
|
543
|
+
signature = _a.sent();
|
|
544
|
+
return [2 /*return*/, signature.serialized];
|
|
545
|
+
}
|
|
546
|
+
});
|
|
547
|
+
});
|
|
548
|
+
}
|
|
549
|
+
exports.signMEMassCancel = signMEMassCancel;
|
|
550
|
+
function signMECancelAllAfter(signer, reyaChainId, accountId, timeoutMs, nonce, deadline) {
|
|
551
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
552
|
+
var signature;
|
|
553
|
+
return __generator(this, function (_a) {
|
|
554
|
+
switch (_a.label) {
|
|
555
|
+
case 0: return [4 /*yield*/, signReyaTypedData(signer, (0, contractAddresses_1.getAddress)(reyaChainId, contractAddresses_1.ContractType.ORDERS_GATEWAY_PROXY), exports.cancelAllAfterTypes, {
|
|
556
|
+
verifyingChainId: reyaChainId,
|
|
557
|
+
deadline: BigInt(deadline),
|
|
558
|
+
cancelAllAfter: {
|
|
559
|
+
accountId: accountId,
|
|
560
|
+
timeoutMs: timeoutMs,
|
|
561
|
+
nonce: nonce,
|
|
562
|
+
},
|
|
563
|
+
})];
|
|
564
|
+
case 1:
|
|
565
|
+
signature = _a.sent();
|
|
566
|
+
return [2 /*return*/, signature.serialized];
|
|
567
|
+
}
|
|
568
|
+
});
|
|
569
|
+
});
|
|
570
|
+
}
|
|
571
|
+
exports.signMECancelAllAfter = signMECancelAllAfter;
|
|
366
572
|
var signManagePermissionBySig = function (signer, signerAddress, reyaChainId, targetAddress, permissionState, deadline) { return __awaiter(void 0, void 0, void 0, function () {
|
|
367
573
|
var signature;
|
|
368
574
|
return __generator(this, function (_a) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sign.js","sourceRoot":"/","sources":["transactions/sign.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n JsonRpcSigner,\n Signature,\n Signer,\n TypedDataField,\n verifyTypedData,\n} from 'ethers';\nimport { ContractType, getAddress } from './contractAddresses';\nimport { Command } from './action';\nimport {\n Address,\n ConditionalOrderStatus,\n ConditionalOrderType,\n OrdersGatewayOrderType,\n ReyaChainId,\n} from '../types';\n\nexport type EIP712Signature = {\n v: number;\n r: string;\n s: string;\n deadline: number;\n};\n\nexport type CoreCommandsEIP712SignatureAndPayload = {\n signature: EIP712Signature;\n payload: {\n verifyingContract: string;\n types: Record<string, Array<TypedDataField>>;\n value: {\n verifyingChainId: number;\n caller: Address;\n accountId: number;\n commands: Command[];\n nonce: number;\n deadline: number;\n extraSignatureData: string;\n };\n };\n};\n\nexport function convertEthersSignatureToEIP712Signature(\n signature: Signature,\n deadline: number,\n): EIP712Signature {\n return {\n v: signature.v,\n r: signature.r,\n s: signature.s,\n deadline,\n };\n}\n\nexport async function signCoreCommands(\n signer: Signer | JsonRpcSigner,\n reyaChainId: ReyaChainId,\n caller: Address,\n accountId: number,\n commands: Command[],\n nonce: number,\n deadline: number,\n extraSignatureData: string,\n): Promise<CoreCommandsEIP712SignatureAndPayload> {\n const types = {\n ExecuteBySig: [\n { name: 'verifyingChainId', type: 'uint256' },\n { name: 'caller', type: 'address' },\n { name: 'accountId', type: 'uint128' },\n { name: 'commands', type: 'Command[]' },\n { name: 'nonce', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'extraSignatureData', type: 'bytes' },\n ],\n Command: [\n { name: 'commandType', type: 'uint8' },\n { name: 'inputs', type: 'bytes' },\n { name: 'marketId', type: 'uint128' },\n { name: 'exchangeId', type: 'uint128' },\n ],\n };\n\n const value = {\n verifyingChainId: reyaChainId,\n caller: caller,\n accountId: accountId,\n commands: commands,\n nonce: nonce,\n deadline: deadline,\n extraSignatureData: extraSignatureData,\n };\n\n const signature = await signReyaTypedData(\n signer,\n getAddress(reyaChainId, ContractType.CORE_PROXY),\n types,\n value,\n );\n\n const eip712Signature = convertEthersSignatureToEIP712Signature(\n signature,\n deadline,\n );\n\n return {\n signature: eip712Signature,\n payload: {\n verifyingContract: getAddress(reyaChainId, ContractType.CORE_PROXY),\n types: types,\n value: value,\n },\n };\n}\n\nexport async function signPoolRemoveLiquidity(\n signer: Signer | JsonRpcSigner,\n reyaChainId: ReyaChainId,\n caller: Address,\n owner: Address,\n poolId: number,\n sharesAmount: bigint,\n minOut: bigint,\n nonce: number,\n deadline: number,\n extraSignatureData: string,\n): Promise<EIP712Signature> {\n const signature = await signReyaTypedData(\n signer,\n getAddress(reyaChainId, ContractType.PASSIVE_POOL_PROXY),\n {\n RemoveLiquidityBySig: [\n { name: 'verifyingChainId', type: 'uint256' },\n { name: 'caller', type: 'address' },\n { name: 'owner', type: 'address' },\n { name: 'poolId', type: 'uint128' },\n { name: 'sharesAmount', type: 'uint256' },\n { name: 'minOut', type: 'uint256' },\n { name: 'nonce', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'extraSignatureData', type: 'bytes' },\n ],\n },\n {\n verifyingChainId: reyaChainId,\n caller: caller,\n owner: owner,\n poolId: poolId,\n sharesAmount: sharesAmount,\n minOut: minOut,\n nonce: nonce,\n deadline: deadline,\n extraSignatureData: extraSignatureData,\n },\n );\n\n return convertEthersSignatureToEIP712Signature(signature, deadline);\n}\n\nasync function signReyaTypedData(\n signer: Signer | JsonRpcSigner,\n verifyingContract: string,\n types: Record<string, Array<TypedDataField>>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: Record<string, any>,\n): Promise<Signature> {\n const domain = getReyaDomain(verifyingContract);\n\n const signatureString = await signer.signTypedData(domain, types, value);\n\n return Signature.from(signatureString);\n}\n\nexport function getReyaDomain(verifyingContract: string) {\n return {\n name: 'Reya',\n version: '1',\n verifyingContract: verifyingContract,\n };\n}\n\nconst conditionalOrderTypes = {\n ConditionalOrder: [\n { name: 'verifyingChainId', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'order', type: 'ConditionalOrderDetails' },\n ],\n ConditionalOrderDetails: [\n { name: 'accountId', type: 'uint128' },\n { name: 'marketId', type: 'uint128' },\n { name: 'exchangeId', type: 'uint128' },\n { name: 'counterpartyAccountIds', type: 'uint128[]' },\n { name: 'orderType', type: 'uint8' },\n { name: 'inputs', type: 'bytes' },\n { name: 'signer', type: 'address' },\n { name: 'nonce', type: 'uint256' },\n ],\n};\n\nexport function createOrdersGatewayOrderNonce(\n accountId: number,\n marketId: number,\n timestampMs: number,\n): bigint {\n // Validate the input ranges\n if (marketId < 0 || marketId >= 2 ** 32)\n throw new Error('marketId is out of range');\n if (accountId < 0 || accountId >= 2 ** 128)\n throw new Error('accountId is out of range');\n if (timestampMs < 0 || timestampMs >= 2 ** 64)\n throw new Error('timestamp is out of range');\n\n const hashUint256 =\n (BigInt(accountId) << BigInt(98)) |\n (BigInt(timestampMs) << BigInt(32)) |\n BigInt(marketId);\n\n return hashUint256;\n}\n\ntype SignOrdersGatewayOrderOutput = {\n serializedSignature: string;\n nonce: bigint;\n signature: EIP712Signature;\n};\n\nexport async function signOrdersGatewayOrder(\n signer: Signer | JsonRpcSigner,\n reyaChainId: ReyaChainId,\n accountId: number,\n marketId: number,\n exchangeId: number,\n counterpartyAccountIds: number[],\n orderType: ConditionalOrderType | OrdersGatewayOrderType,\n inputs: string,\n deadline: number,\n creationTimestampMs: number,\n customNonce?: bigint,\n): Promise<SignOrdersGatewayOrderOutput> {\n const nonce =\n customNonce ??\n createOrdersGatewayOrderNonce(accountId, marketId, creationTimestampMs);\n\n const signature = await signReyaTypedData(\n signer,\n getAddress(reyaChainId, ContractType.ORDERS_GATEWAY_PROXY),\n conditionalOrderTypes,\n {\n verifyingChainId: reyaChainId,\n deadline: BigInt(deadline),\n order: {\n accountId: accountId,\n marketId: marketId,\n exchangeId: exchangeId,\n counterpartyAccountIds: counterpartyAccountIds,\n orderType: orderType,\n inputs: inputs,\n signer: await signer.getAddress(),\n nonce: nonce,\n },\n },\n );\n\n return {\n serializedSignature: signature.serialized,\n nonce,\n signature: convertEthersSignatureToEIP712Signature(signature, deadline),\n };\n}\n\nexport function isConditionalOrderSignatureValid(\n signerAddress: string,\n signature: string,\n reyaChainId: ReyaChainId,\n accountId: number,\n marketId: number,\n exchangeId: number,\n counterpartyAccountIds: number[],\n orderType: number,\n inputs: string,\n nonce: bigint,\n deadline: number,\n): boolean {\n // Encode the data for recovering the address\n const domain = getReyaDomain(\n getAddress(reyaChainId, ContractType.CONDITIONAL_ORDERS_PROXY),\n );\n\n const value = {\n verifyingChainId: reyaChainId,\n deadline: BigInt(deadline),\n order: {\n accountId: accountId,\n marketId: marketId,\n exchangeId: exchangeId,\n counterpartyAccountIds: counterpartyAccountIds,\n orderType: orderType,\n inputs: inputs,\n signer: signerAddress,\n nonce: nonce,\n },\n };\n\n // Recover the address\n const recoveredAddress = verifyTypedData(\n domain,\n conditionalOrderTypes,\n value,\n signature,\n );\n\n return recoveredAddress.toLowerCase() === signerAddress.toLowerCase();\n}\n\nexport async function signCancelConditionalOrder(\n signer: Signer | JsonRpcSigner,\n orderId: string,\n): Promise<string> {\n const message = {\n orderId: orderId,\n status: ConditionalOrderStatus.CANCELLED,\n actionType: 'changeStatus',\n };\n return await signer.signMessage(JSON.stringify(message));\n}\n\nexport async function signGrantPermission(\n signer: Signer | JsonRpcSigner,\n reyaChainId: ReyaChainId,\n accountId: number,\n permission: string,\n user: string,\n nonce: number,\n deadline: number,\n): Promise<EIP712Signature> {\n const signature = await signReyaTypedData(\n signer,\n getAddress(reyaChainId, ContractType.CORE_PROXY),\n {\n GrantAccountPermissionBySig: [\n { name: 'verifyingChainId', type: 'uint256' },\n { name: 'accountId', type: 'uint128' },\n { name: 'permission', type: 'bytes32' },\n { name: 'user', type: 'address' },\n { name: 'nonce', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n ],\n },\n {\n verifyingChainId: reyaChainId,\n accountId: accountId,\n permission: permission,\n user: user,\n nonce: nonce,\n deadline: deadline,\n },\n );\n\n return convertEthersSignatureToEIP712Signature(signature, deadline);\n}\n\nexport async function signVote(\n signer: Signer | JsonRpcSigner,\n reyaChainId: ReyaChainId,\n contractAddress: string,\n voter: string,\n isYesVote: boolean,\n deadline: number,\n): Promise<string> {\n const types = {\n CastVoteBySig: [\n { name: 'verifyingChainId', type: 'uint256' },\n { name: 'voter', type: 'address' },\n { name: 'yesVote', type: 'bool' },\n { name: 'nonce', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n ],\n };\n const values = {\n verifyingChainId: reyaChainId,\n voter: voter,\n yesVote: isYesVote,\n nonce: 1, // hardcoded because a user cannot vote more than once\n deadline: deadline,\n };\n\n const domain = getReyaDomain(contractAddress);\n\n const signatureString = await signer.signTypedData(domain, types, values);\n\n return signatureString;\n}\n\nexport async function signRevokePermission(\n signer: Signer | JsonRpcSigner,\n reyaChainId: ReyaChainId,\n accountId: number,\n permission: string,\n user: string,\n nonce: number,\n deadline: number,\n): Promise<EIP712Signature> {\n const signature = await signReyaTypedData(\n signer,\n getAddress(reyaChainId, ContractType.CORE_PROXY),\n {\n RevokeAccountPermissionBySig: [\n { name: 'verifyingChainId', type: 'uint256' },\n { name: 'accountId', type: 'uint128' },\n { name: 'permission', type: 'bytes32' },\n { name: 'user', type: 'address' },\n { name: 'nonce', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n ],\n },\n {\n verifyingChainId: reyaChainId,\n accountId: accountId,\n permission: permission,\n user: user,\n nonce: nonce,\n deadline: deadline,\n },\n );\n\n return convertEthersSignatureToEIP712Signature(signature, deadline);\n}\n\nexport const signManagePermissionBySig = async (\n signer: Signer | JsonRpcSigner,\n signerAddress: string,\n reyaChainId: ReyaChainId,\n targetAddress: string,\n permissionState: boolean,\n deadline: number,\n): Promise<EIP712Signature> => {\n const signature = await signReyaTypedData(\n signer,\n getAddress(reyaChainId, ContractType.ORDERS_GATEWAY_PROXY),\n {\n ManagePermissionBySig: [\n { name: 'verifyingChainId', type: 'uint256' },\n { name: 'owner', type: 'address' },\n { name: 'target', type: 'address' },\n { name: 'permissionState', type: 'bool' },\n { name: 'deadline', type: 'uint256' },\n ],\n },\n {\n verifyingChainId: reyaChainId,\n owner: signerAddress,\n target: targetAddress,\n permissionState: permissionState,\n deadline: deadline,\n },\n );\n\n return convertEthersSignatureToEIP712Signature(signature, deadline);\n};\n"]}
|
|
1
|
+
{"version":3,"file":"sign.js","sourceRoot":"/","sources":["transactions/sign.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n JsonRpcSigner,\n Signature,\n Signer,\n TypedDataField,\n verifyTypedData,\n} from 'ethers';\nimport { ContractType, getAddress } from './contractAddresses';\nimport { Command } from './action';\nimport { Address, OrderType, ReyaChainId } from '../types';\n\nexport type EIP712Signature = {\n v: number;\n r: string;\n s: string;\n deadline: number;\n};\n\nexport type CoreCommandsEIP712SignatureAndPayload = {\n signature: EIP712Signature;\n payload: {\n verifyingContract: string;\n types: Record<string, Array<TypedDataField>>;\n value: {\n verifyingChainId: number;\n caller: Address;\n accountId: number;\n commands: Command[];\n nonce: number;\n deadline: number;\n extraSignatureData: string;\n };\n };\n};\n\nexport function convertEthersSignatureToEIP712Signature(\n signature: Signature,\n deadline: number,\n): EIP712Signature {\n return {\n v: signature.v,\n r: signature.r,\n s: signature.s,\n deadline,\n };\n}\n\nexport async function signCoreCommands(\n signer: Signer | JsonRpcSigner,\n reyaChainId: ReyaChainId,\n caller: Address,\n accountId: number,\n commands: Command[],\n nonce: number,\n deadline: number,\n extraSignatureData: string,\n): Promise<CoreCommandsEIP712SignatureAndPayload> {\n const types = {\n ExecuteBySig: [\n { name: 'verifyingChainId', type: 'uint256' },\n { name: 'caller', type: 'address' },\n { name: 'accountId', type: 'uint128' },\n { name: 'commands', type: 'Command[]' },\n { name: 'nonce', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'extraSignatureData', type: 'bytes' },\n ],\n Command: [\n { name: 'commandType', type: 'uint8' },\n { name: 'inputs', type: 'bytes' },\n { name: 'marketId', type: 'uint128' },\n { name: 'exchangeId', type: 'uint128' },\n ],\n };\n\n const value = {\n verifyingChainId: reyaChainId,\n caller: caller,\n accountId: accountId,\n commands: commands,\n nonce: nonce,\n deadline: deadline,\n extraSignatureData: extraSignatureData,\n };\n\n const signature = await signReyaTypedData(\n signer,\n getAddress(reyaChainId, ContractType.CORE_PROXY),\n types,\n value,\n );\n\n const eip712Signature = convertEthersSignatureToEIP712Signature(\n signature,\n deadline,\n );\n\n return {\n signature: eip712Signature,\n payload: {\n verifyingContract: getAddress(reyaChainId, ContractType.CORE_PROXY),\n types: types,\n value: value,\n },\n };\n}\n\nexport async function signPoolRemoveLiquidity(\n signer: Signer | JsonRpcSigner,\n reyaChainId: ReyaChainId,\n caller: Address,\n owner: Address,\n poolId: number,\n sharesAmount: bigint,\n minOut: bigint,\n nonce: number,\n deadline: number,\n extraSignatureData: string,\n): Promise<EIP712Signature> {\n const signature = await signReyaTypedData(\n signer,\n getAddress(reyaChainId, ContractType.PASSIVE_POOL_PROXY),\n {\n RemoveLiquidityBySig: [\n { name: 'verifyingChainId', type: 'uint256' },\n { name: 'caller', type: 'address' },\n { name: 'owner', type: 'address' },\n { name: 'poolId', type: 'uint128' },\n { name: 'sharesAmount', type: 'uint256' },\n { name: 'minOut', type: 'uint256' },\n { name: 'nonce', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'extraSignatureData', type: 'bytes' },\n ],\n },\n {\n verifyingChainId: reyaChainId,\n caller: caller,\n owner: owner,\n poolId: poolId,\n sharesAmount: sharesAmount,\n minOut: minOut,\n nonce: nonce,\n deadline: deadline,\n extraSignatureData: extraSignatureData,\n },\n );\n\n return convertEthersSignatureToEIP712Signature(signature, deadline);\n}\n\nasync function signReyaTypedData(\n signer: Signer | JsonRpcSigner,\n verifyingContract: string,\n types: Record<string, Array<TypedDataField>>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: Record<string, any>,\n): Promise<Signature> {\n const domain = getReyaDomain(verifyingContract);\n\n const signatureString = await signer.signTypedData(domain, types, value);\n\n return Signature.from(signatureString);\n}\n\nexport function getReyaDomain(verifyingContract: string) {\n return {\n name: 'Reya',\n version: '1',\n verifyingContract: verifyingContract,\n };\n}\n\n// PRO-126 Bug 5 retired the legacy `ConditionalOrderDetails` typehash +\n// `signOrdersGatewayOrder` / `isConditionalOrderSignatureValid` /\n// `createOrdersGatewayOrderNonce` helpers. The on-chain\n// `OrdersGateway.execute` selector that consumed those signatures is\n// gone; every order class now signs the new flat `OrderDetails` schema\n// via `signOrder` further down this file.\n\n// The three cancel-side typed-data schemas below are EXPORTED as the single\n// source of truth for signer AND verifier — common-backend's\n// `recover{OrderCancel,MassCancel,CancelAllAfter}Signer` import them from\n// here (like `orderTypes` for the Order struct). They used to be duplicated\n// module-private consts on each side; any drift (field rename / width /\n// reorder) silently breaks 100% of signature recovery for that request\n// class, so exactly one copy may exist.\n\n/**\n * EIP-712 typed-data structures for the OrderCancel signature scheme used by\n * the matching engine for order cancellations. The signer signs over a value\n * of shape\n * `{ verifyingChainId, deadline, cancel: { accountId, marketId, orderId, clOrdId, nonce } }`.\n */\nexport const orderCancelTypes = {\n OrderCancel: [\n { name: 'verifyingChainId', type: 'uint64' },\n { name: 'deadline', type: 'uint64' },\n { name: 'cancel', type: 'OrderCancelDetails' },\n ],\n OrderCancelDetails: [\n { name: 'accountId', type: 'uint64' },\n { name: 'marketId', type: 'uint64' },\n { name: 'orderId', type: 'uint64' },\n { name: 'clOrdId', type: 'uint64' },\n { name: 'nonce', type: 'uint64' },\n ],\n};\n\n/**\n * EIP-712 typed-data structures for the MassCancel signature scheme used by\n * the matching engine for mass cancellations. The signer signs over a value\n * of shape `{ verifyingChainId, deadline, massCancel: { accountId, marketId, nonce } }`.\n */\nexport const massCancelTypes = {\n MassCancel: [\n { name: 'verifyingChainId', type: 'uint64' },\n { name: 'deadline', type: 'uint64' },\n { name: 'massCancel', type: 'MassCancelDetails' },\n ],\n MassCancelDetails: [\n { name: 'accountId', type: 'uint64' },\n { name: 'marketId', type: 'uint64' },\n { name: 'nonce', type: 'uint64' },\n ],\n};\n\n/**\n * EIP-712 typed-data structures for the CancelAllAfter signature scheme used\n * by the matching engine for the cancel-on-disconnect dead-man's-switch. The\n * signer signs over a value of shape\n * `{ verifyingChainId, deadline, cancelAllAfter: { accountId, timeoutMs, nonce } }`.\n * uint64 throughout, matching the OrderCancel / MassCancel family.\n */\nexport const cancelAllAfterTypes = {\n CancelAllAfter: [\n { name: 'verifyingChainId', type: 'uint64' },\n { name: 'deadline', type: 'uint64' },\n { name: 'cancelAllAfter', type: 'CancelAllAfterDetails' },\n ],\n CancelAllAfterDetails: [\n { name: 'accountId', type: 'uint64' },\n { name: 'timeoutMs', type: 'uint64' },\n { name: 'nonce', type: 'uint64' },\n ],\n};\n\ntype SignCancelOutput = {\n serializedSignature: string;\n nonce: bigint;\n signature: EIP712Signature;\n};\n\nexport async function signOrderCancel(\n signer: Signer | JsonRpcSigner,\n reyaChainId: ReyaChainId,\n accountId: number,\n marketId: number,\n orderId: bigint,\n clOrdId: bigint,\n nonce: bigint,\n deadline: number,\n): Promise<SignCancelOutput> {\n const signature = await signReyaTypedData(\n signer,\n getAddress(reyaChainId, ContractType.ORDERS_GATEWAY_PROXY),\n orderCancelTypes,\n {\n verifyingChainId: reyaChainId,\n deadline: deadline,\n cancel: {\n accountId: accountId,\n marketId: marketId,\n orderId: orderId,\n clOrdId: clOrdId,\n nonce: nonce,\n },\n },\n );\n\n return {\n serializedSignature: signature.serialized,\n nonce,\n signature: convertEthersSignatureToEIP712Signature(signature, deadline),\n };\n}\n\nexport async function signMassCancel(\n signer: Signer | JsonRpcSigner,\n reyaChainId: ReyaChainId,\n accountId: number,\n marketId: number,\n nonce: bigint,\n deadline: number,\n): Promise<SignCancelOutput> {\n const signature = await signReyaTypedData(\n signer,\n getAddress(reyaChainId, ContractType.ORDERS_GATEWAY_PROXY),\n massCancelTypes,\n {\n verifyingChainId: reyaChainId,\n deadline: deadline,\n massCancel: {\n accountId: accountId,\n marketId: marketId,\n nonce: nonce,\n },\n },\n );\n\n return {\n serializedSignature: signature.serialized,\n nonce,\n signature: convertEthersSignatureToEIP712Signature(signature, deadline),\n };\n}\n\n// -----------------------------------------------------------------------------\n// perpOB: EIP-712 typed data for the flat `Order` / `OrderDetails` struct\n// -----------------------------------------------------------------------------\n// Matches the post-audit on-chain redesign in\n// reya-network/feat/perpOB (orders-gateway/src/libraries/DataTypes.sol +\n// ConditionalOrderHashing.sol). PRO-126 Bug 5 retired the legacy\n// `conditionalOrderTypes` / `signOrdersGatewayOrder` / `isConditionalOrderSignatureValid`\n// surface that this struct replaced — every order class (spot + perp,\n// IOC + GTC + TP + SL) now signs against `OrderDetails` here.\n//\n// Contract: Order envelope + flat OrderDetails inner struct. Two distinct time\n// values are signed:\n// - envelope `deadline` -> signature validity, enforced by API at entry\n// - inner `expiresAfter` -> order lifetime, enforced on-chain at execution\n// Convention: callers should set `deadline <= expiresAfter` when `expiresAfter > 0`.\n// See reya-api-specs/docs/eip712.md for the canonical description.\n\nexport const orderTypes = {\n Order: [\n { name: 'verifyingChainId', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'order', type: 'OrderDetails' },\n ],\n OrderDetails: [\n { name: 'accountId', type: 'uint128' },\n { name: 'marketId', type: 'uint128' },\n { name: 'exchangeId', type: 'uint128' },\n { name: 'orderType', type: 'uint8' },\n { name: 'quantity', type: 'int256' },\n { name: 'limitPrice', type: 'uint256' },\n { name: 'triggerPrice', type: 'uint256' },\n { name: 'timeInForce', type: 'uint8' },\n { name: 'clientOrderId', type: 'uint64' },\n { name: 'reduceOnly', type: 'bool' },\n { name: 'postOnly', type: 'bool' },\n { name: 'expiresAfter', type: 'uint256' },\n { name: 'signer', type: 'address' },\n { name: 'nonce', type: 'uint256' },\n ],\n};\n\n/**\n * Full-position stop sentinel — `type(int256).max` (2^255 − 1), mirroring\n * `FULL_POSITION_STOP_SENTINEL` in the OrdersGateway (reya-network #738). A\n * STOP_LOSS / TAKE_PROFIT signs quantity `±sentinel` (the sign carries the\n * close side: −sentinel sells out a long, +sentinel buys back a short); the\n * chain enforces the iff — a stop with any other quantity (including the old\n * quantity-0 encoding) reverts, and the sentinel magnitude is reserved (a\n * non-stop signing it reverts). Raw int256 value, NOT E18-scaled. Signer and\n * verifier must derive it from THIS constant so they can never drift.\n */\nexport const FULL_POSITION_STOP_SENTINEL =\n (BigInt(1) << BigInt(255)) - BigInt(1);\n\n/** The signed quantity for a full-position stop: sign carries the close side. */\nexport function fullPositionStopQuantity(isBuy: boolean): bigint {\n return isBuy ? FULL_POSITION_STOP_SENTINEL : -FULL_POSITION_STOP_SENTINEL;\n}\n\nexport type SignOrderParams = {\n /** Unified market id: core_id for perp, core_id + 1e10 for spot. */\n accountId: number;\n marketId: number;\n exchangeId: number;\n orderType: OrderType;\n /**\n * Signed: positive = buy/long, negative = sell/short. For STOP_LOSS /\n * TAKE_PROFIT this must be `fullPositionStopQuantity(isBuy)` — the\n * ±int256.max full-position sentinel, never a real size and never 0.\n */\n quantity: bigint;\n limitPrice: bigint;\n /** Must be 0n for Limit; must be non-zero for StopLoss / TakeProfit. */\n triggerPrice: bigint;\n /** 0 = GTC, 1 = IOC, 2 = GTT. Signed but not on-chain-enforced. */\n timeInForce: number;\n /** Signed but not on-chain-enforced. Off-chain correlation id. */\n clientOrderId: bigint;\n reduceOnly: boolean;\n /**\n * Maker-only intent, signed into OrderDetails (api-specs 3.0.1 / on-chain\n * Phase 0). Optional for back-compat: omitted ⇒ signed as `false`, so\n * existing signers keep producing valid signatures. Must equal the\n * client's intent for recovery to match.\n */\n postOnly?: boolean;\n /** 0n = good-until-cancelled. On-chain-enforced at execution. */\n expiresAfter: bigint;\n nonce: bigint;\n /** EIP-712 envelope signature deadline (unix seconds). API-enforced at entry. */\n deadline: number;\n};\n\nexport type SignOrderOutput = {\n serializedSignature: string;\n signature: EIP712Signature;\n};\n\nexport async function signOrder(\n signer: Signer | JsonRpcSigner,\n reyaChainId: ReyaChainId,\n params: SignOrderParams,\n): Promise<SignOrderOutput> {\n const signature = await signReyaTypedData(\n signer,\n getAddress(reyaChainId, ContractType.ORDERS_GATEWAY_PROXY),\n orderTypes,\n {\n verifyingChainId: reyaChainId,\n deadline: BigInt(params.deadline),\n order: {\n accountId: params.accountId,\n marketId: params.marketId,\n exchangeId: params.exchangeId,\n orderType: params.orderType,\n quantity: params.quantity,\n limitPrice: params.limitPrice,\n triggerPrice: params.triggerPrice,\n timeInForce: params.timeInForce,\n clientOrderId: params.clientOrderId,\n reduceOnly: params.reduceOnly,\n postOnly: params.postOnly ?? false,\n expiresAfter: params.expiresAfter,\n signer: await signer.getAddress(),\n nonce: params.nonce,\n },\n },\n );\n\n return {\n serializedSignature: signature.serialized,\n signature: convertEthersSignatureToEIP712Signature(\n signature,\n params.deadline,\n ),\n };\n}\n\nexport function isOrderSignatureValid(\n signerAddress: string,\n signature: string,\n reyaChainId: ReyaChainId,\n params: SignOrderParams,\n): boolean {\n const domain = getReyaDomain(\n getAddress(reyaChainId, ContractType.ORDERS_GATEWAY_PROXY),\n );\n\n const value = {\n verifyingChainId: reyaChainId,\n deadline: BigInt(params.deadline),\n order: {\n accountId: params.accountId,\n marketId: params.marketId,\n exchangeId: params.exchangeId,\n orderType: params.orderType,\n quantity: params.quantity,\n limitPrice: params.limitPrice,\n triggerPrice: params.triggerPrice,\n timeInForce: params.timeInForce,\n clientOrderId: params.clientOrderId,\n reduceOnly: params.reduceOnly,\n postOnly: params.postOnly ?? false,\n expiresAfter: params.expiresAfter,\n signer: signerAddress,\n nonce: params.nonce,\n },\n };\n\n const recoveredAddress = verifyTypedData(\n domain,\n orderTypes,\n value,\n signature,\n );\n\n return recoveredAddress.toLowerCase() === signerAddress.toLowerCase();\n}\n\nexport async function signGrantPermission(\n signer: Signer | JsonRpcSigner,\n reyaChainId: ReyaChainId,\n accountId: number,\n permission: string,\n user: string,\n nonce: number,\n deadline: number,\n): Promise<EIP712Signature> {\n const signature = await signReyaTypedData(\n signer,\n getAddress(reyaChainId, ContractType.CORE_PROXY),\n {\n GrantAccountPermissionBySig: [\n { name: 'verifyingChainId', type: 'uint256' },\n { name: 'accountId', type: 'uint128' },\n { name: 'permission', type: 'bytes32' },\n { name: 'user', type: 'address' },\n { name: 'nonce', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n ],\n },\n {\n verifyingChainId: reyaChainId,\n accountId: accountId,\n permission: permission,\n user: user,\n nonce: nonce,\n deadline: deadline,\n },\n );\n\n return convertEthersSignatureToEIP712Signature(signature, deadline);\n}\n\nexport async function signVote(\n signer: Signer | JsonRpcSigner,\n reyaChainId: ReyaChainId,\n contractAddress: string,\n voter: string,\n isYesVote: boolean,\n deadline: number,\n): Promise<string> {\n const types = {\n CastVoteBySig: [\n { name: 'verifyingChainId', type: 'uint256' },\n { name: 'voter', type: 'address' },\n { name: 'yesVote', type: 'bool' },\n { name: 'nonce', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n ],\n };\n const values = {\n verifyingChainId: reyaChainId,\n voter: voter,\n yesVote: isYesVote,\n nonce: 1, // hardcoded because a user cannot vote more than once\n deadline: deadline,\n };\n\n const domain = getReyaDomain(contractAddress);\n\n const signatureString = await signer.signTypedData(domain, types, values);\n\n return signatureString;\n}\n\nexport async function signRevokePermission(\n signer: Signer | JsonRpcSigner,\n reyaChainId: ReyaChainId,\n accountId: number,\n permission: string,\n user: string,\n nonce: number,\n deadline: number,\n): Promise<EIP712Signature> {\n const signature = await signReyaTypedData(\n signer,\n getAddress(reyaChainId, ContractType.CORE_PROXY),\n {\n RevokeAccountPermissionBySig: [\n { name: 'verifyingChainId', type: 'uint256' },\n { name: 'accountId', type: 'uint128' },\n { name: 'permission', type: 'bytes32' },\n { name: 'user', type: 'address' },\n { name: 'nonce', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n ],\n },\n {\n verifyingChainId: reyaChainId,\n accountId: accountId,\n permission: permission,\n user: user,\n nonce: nonce,\n deadline: deadline,\n },\n );\n\n return convertEthersSignatureToEIP712Signature(signature, deadline);\n}\n\nexport async function signMEOrderCancel(\n signer: Signer | JsonRpcSigner,\n reyaChainId: ReyaChainId,\n accountId: number,\n marketId: number,\n orderId: bigint,\n clOrdId: bigint,\n nonce: bigint,\n deadline: number,\n): Promise<string> {\n const signature = await signReyaTypedData(\n signer,\n getAddress(reyaChainId, ContractType.ORDERS_GATEWAY_PROXY),\n orderCancelTypes,\n {\n verifyingChainId: reyaChainId,\n deadline: BigInt(deadline),\n cancel: {\n accountId: accountId,\n marketId: marketId,\n orderId: orderId,\n clOrdId: clOrdId,\n nonce: nonce,\n },\n },\n );\n\n return signature.serialized;\n}\n\nexport async function signMEMassCancel(\n signer: Signer | JsonRpcSigner,\n reyaChainId: ReyaChainId,\n accountId: number,\n marketId: number,\n nonce: bigint,\n deadline: number,\n): Promise<string> {\n const signature = await signReyaTypedData(\n signer,\n getAddress(reyaChainId, ContractType.ORDERS_GATEWAY_PROXY),\n massCancelTypes,\n {\n verifyingChainId: reyaChainId,\n deadline: BigInt(deadline),\n massCancel: {\n accountId: accountId,\n marketId: marketId,\n nonce: nonce,\n },\n },\n );\n\n return signature.serialized;\n}\n\nexport async function signMECancelAllAfter(\n signer: Signer | JsonRpcSigner,\n reyaChainId: ReyaChainId,\n accountId: number,\n timeoutMs: number,\n nonce: bigint,\n deadline: number,\n): Promise<string> {\n const signature = await signReyaTypedData(\n signer,\n getAddress(reyaChainId, ContractType.ORDERS_GATEWAY_PROXY),\n cancelAllAfterTypes,\n {\n verifyingChainId: reyaChainId,\n deadline: BigInt(deadline),\n cancelAllAfter: {\n accountId: accountId,\n timeoutMs: timeoutMs,\n nonce: nonce,\n },\n },\n );\n\n return signature.serialized;\n}\n\nexport const signManagePermissionBySig = async (\n signer: Signer | JsonRpcSigner,\n signerAddress: string,\n reyaChainId: ReyaChainId,\n targetAddress: string,\n permissionState: boolean,\n deadline: number,\n): Promise<EIP712Signature> => {\n const signature = await signReyaTypedData(\n signer,\n getAddress(reyaChainId, ContractType.ORDERS_GATEWAY_PROXY),\n {\n ManagePermissionBySig: [\n { name: 'verifyingChainId', type: 'uint256' },\n { name: 'owner', type: 'address' },\n { name: 'target', type: 'address' },\n { name: 'permissionState', type: 'bool' },\n { name: 'deadline', type: 'uint256' },\n ],\n },\n {\n verifyingChainId: reyaChainId,\n owner: signerAddress,\n target: targetAddress,\n permissionState: permissionState,\n deadline: deadline,\n },\n );\n\n return convertEthersSignatureToEIP712Signature(signature, deadline);\n};\n"]}
|
|
@@ -51,13 +51,6 @@ export declare class ExposureCommand {
|
|
|
51
51
|
static exchangeWithPriceHaircut(quantity: number, price: number, haircut: number): number;
|
|
52
52
|
static reverseExchangeWithPriceHaircut(quantity: number, price: number, haircut: number): number;
|
|
53
53
|
static getBalanceWithHaircut(exchangeInfoPerAsset: ExchangeInfo[], assetAddress: string, marginBalance: number): number;
|
|
54
|
-
/**
|
|
55
|
-
* @audit This function uses a linear approximation that is not aligned with the on-chain
|
|
56
|
-
* exponential logPriceMultiplier pricing logic (PriceMultiplier.sol). The intention is to
|
|
57
|
-
* deprecate this function completely once downstream consumers (PoolLiquidityCommand,
|
|
58
|
-
* updateLiquidity.task, marketDataLiquidity.task) are migrated.
|
|
59
|
-
*/
|
|
60
|
-
getSlippage(deltaBase: number, marketConfiguration: MarketConfiguration, marketStorage: MarketStorage): number;
|
|
61
54
|
getMaxExposure(marketConfiguration: MarketConfiguration, marketStorage: MarketStorage, isPool: boolean): {
|
|
62
55
|
maxExposureShort: number;
|
|
63
56
|
maxExposureLong: number;
|
|
@@ -94,8 +87,16 @@ export declare class ExposureCommand {
|
|
|
94
87
|
static getHourlyFundingPeriods(lastFundingTimeStamp: BigNumber): BigNumber;
|
|
95
88
|
static getFundingRateDelta(fundingPeriods: BigNumber, lastFundingVelocity: BigNumber): BigNumber;
|
|
96
89
|
static getCurrentFundingRate(last_funding_timestamp: BigNumber, lastFundingVelocity: BigNumber, lastFundingRate: BigNumber): BigNumber;
|
|
90
|
+
/**
|
|
91
|
+
* @deprecated OB model reads funding rate directly from FundingRateProvider.
|
|
92
|
+
* Remains for legacy AMM model consumers. To be removed in a future cleanup PR.
|
|
93
|
+
*/
|
|
97
94
|
static getCurrentHourlyFundingRate(last_funding_timestamp: BigNumber, lastFundingVelocity: BigNumber, lastFundingRate: BigNumber): BigNumber;
|
|
98
95
|
static getFundingValueDelta(periods: BigNumber, lastFundingRate: BigNumber, lastFundingVelocity: BigNumber, price: BigNumber, baseMultiplier: BigNumber): BigNumber;
|
|
96
|
+
/**
|
|
97
|
+
* @deprecated OB model reads funding value directly from market trackers.
|
|
98
|
+
* Remains for legacy AMM model consumers. To be removed in a future cleanup PR.
|
|
99
|
+
*/
|
|
99
100
|
static getCurrentFundingValue(spotPrice: BigNumber, lastFundingValue: BigNumber, baseMultiplier: BigNumber, lastFundingRate: BigNumber, lastFundingVelocity: BigNumber, lastFundingTimestamp: BigNumber): BigNumber;
|
|
100
101
|
convertToUsd(amount: number, tokenAddress: string): number;
|
|
101
102
|
getExchangeRate(tokenAddress: string): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"/","sources":["commands/exposure/command.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"/","sources":["commands/exposure/command.ts"],"names":[],"mappings":"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"}
|