@reyaxyz/sdk 0.37.0 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/config/index.js +9 -2
  2. package/dist/config/index.js.map +1 -1
  3. package/dist/services/executeTransaction.js +23 -25
  4. package/dist/services/executeTransaction.js.map +1 -1
  5. package/dist/services/margin-accounts/withdrawMAAndBridge.js +1 -1
  6. package/dist/services/margin-accounts/withdrawMAAndBridge.js.map +1 -1
  7. package/dist/services/orders/encode.js +62 -17
  8. package/dist/services/orders/encode.js.map +1 -1
  9. package/dist/services/orders/order.js +10 -6
  10. package/dist/services/orders/order.js.map +1 -1
  11. package/dist/services/orders/types.js.map +1 -1
  12. package/dist/types/config/index.d.ts +10 -1
  13. package/dist/types/config/index.d.ts.map +1 -1
  14. package/dist/types/services/executeTransaction.d.ts +2 -2
  15. package/dist/types/services/executeTransaction.d.ts.map +1 -1
  16. package/dist/types/services/orders/encode.d.ts +2 -1
  17. package/dist/types/services/orders/encode.d.ts.map +1 -1
  18. package/dist/types/services/orders/order.d.ts.map +1 -1
  19. package/dist/types/services/orders/types.d.ts +3 -1
  20. package/dist/types/services/orders/types.d.ts.map +1 -1
  21. package/dist/types/utils/consts.d.ts +2 -0
  22. package/dist/types/utils/consts.d.ts.map +1 -1
  23. package/dist/utils/consts.js +3 -1
  24. package/dist/utils/consts.js.map +1 -1
  25. package/package.json +2 -2
  26. package/src/config/index.ts +18 -2
  27. package/src/services/executeTransaction.ts +11 -12
  28. package/src/services/margin-accounts/withdrawMAAndBridge.ts +1 -1
  29. package/src/services/orders/encode.ts +26 -6
  30. package/src/services/orders/order.ts +13 -8
  31. package/src/services/orders/types.ts +3 -0
  32. package/src/utils/consts.ts +2 -0
@@ -58,13 +58,20 @@ var TransactionModule = /** @class */ (function (_super) {
58
58
  function TransactionModule() {
59
59
  return _super !== null && _super.apply(this, arguments) || this;
60
60
  }
61
- TransactionModule.prototype.executeTransaction = function (signedTx, contractType, metadata) {
61
+ TransactionModule.prototype.executeTransaction = function (txData, contractType, metadata) {
62
62
  return __awaiter(this, void 0, void 0, function () {
63
63
  var uri;
64
64
  return __generator(this, function (_a) {
65
+ Object.defineProperty(BigInt.prototype, 'toJSON', {
66
+ get: function () {
67
+ 'use strict';
68
+ var _this = this;
69
+ return function () { return String(_this); };
70
+ },
71
+ });
65
72
  uri = "/api/transaction/execute";
66
73
  return [2 /*return*/, this.post(uri, {}, {
67
- signedTx: signedTx,
74
+ txData: txData,
68
75
  contractType: contractType,
69
76
  metadata: metadata,
70
77
  })];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAgF;AAKhF;IAAuC,qCAAU;IAAjD;;IAiBA,CAAC;IAhBO,8CAAkB,GAAxB,UACE,QAAgB,EAChB,YAAoB,EACpB,QAAsC;;;;gBAEhC,GAAG,GAAG,0BAA0B,CAAC;gBACvC,sBAAO,IAAI,CAAC,IAAI,CACd,GAAG,EACH,EAAE,EACF;wBACE,QAAQ,UAAA;wBACR,YAAY,cAAA;wBACZ,QAAQ,UAAA;qBACT,CACF,EAAC;;;KACH;IACH,wBAAC;AAAD,CAAC,AAjBD,CAAuC,mBAAU,GAiBhD;AAjBY,8CAAiB;AAmB9B,iBAAiB;AACjB,IAAI,iBAAiB,GAAsB,IAAI,iBAAiB,CAC9D,2BAAkB,CAAC,MAAM,CAAC,CAAC,WAAW,CACvC,CAAC;AAEF,gCAAgC;AACzB,IAAM,YAAY,GAAG,UAC1B,WAAyC;IAEzC,IAAM,MAAM,GAAG,2BAAkB,CAAC,WAAW,CAAC,IAAI,2BAAkB,CAAC,MAAM,CAAC,CAAC;IAC7E,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAChE,CAAC,CAAC;AALW,QAAA,YAAY,gBAKvB;AAEK,IAAM,0BAA0B,GAAG;IACxC,IAAI,CAAC,iBAAiB;QACpB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AAJW,QAAA,0BAA0B,8BAIrC","sourcesContent":["import { API_CLIENT_CONFIGS, RestClient, ServiceConfig } from '@reyaxyz/common';\n\nexport type BroadcastTransactionMetadata = {\n accountName?: string;\n};\nexport class TransactionModule extends RestClient {\n async executeTransaction(\n signedTx: string,\n contractType: string,\n metadata: BroadcastTransactionMetadata,\n ) {\n const uri = `/api/transaction/execute`;\n return this.post<{ txHash: string }>(\n uri,\n {},\n {\n signedTx,\n contractType,\n metadata,\n },\n );\n }\n}\n\n// Internal state\nlet transactionModule: TransactionModule = new TransactionModule(\n API_CLIENT_CONFIGS['test'].apiEndpoint,\n);\n\n// Function to configure the SDK\nexport const configureSDK = (\n environment: ServiceConfig['environment'],\n): void => {\n const config = API_CLIENT_CONFIGS[environment] || API_CLIENT_CONFIGS['test'];\n transactionModule = new TransactionModule(config.apiEndpoint);\n};\n\nexport const getTransactionModuleClient = (): TransactionModule => {\n if (!transactionModule)\n throw new Error('SDK is not configured! Call configureSDK()');\n return transactionModule;\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAgF;AAehF;IAAuC,qCAAU;IAAjD;;IAuBA,CAAC;IAtBO,8CAAkB,GAAxB,UACE,MAAc,EACd,YAAoB,EACpB,QAAsC;;;;gBAEtC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE;oBAChD,GAAG;wBACD,YAAY,CAAC;wBADf,iBAGC;wBADC,OAAO,cAAM,OAAA,MAAM,CAAC,KAAI,CAAC,EAAZ,CAAY,CAAC;oBAC5B,CAAC;iBACF,CAAC,CAAC;gBACG,GAAG,GAAG,0BAA0B,CAAC;gBACvC,sBAAO,IAAI,CAAC,IAAI,CACd,GAAG,EACH,EAAE,EACF;wBACE,MAAM,QAAA;wBACN,YAAY,cAAA;wBACZ,QAAQ,UAAA;qBACT,CACF,EAAC;;;KACH;IACH,wBAAC;AAAD,CAAC,AAvBD,CAAuC,mBAAU,GAuBhD;AAvBY,8CAAiB;AAyB9B,iBAAiB;AACjB,IAAI,iBAAiB,GAAsB,IAAI,iBAAiB,CAC9D,2BAAkB,CAAC,MAAM,CAAC,CAAC,WAAW,CACvC,CAAC;AAEF,gCAAgC;AACzB,IAAM,YAAY,GAAG,UAC1B,WAAyC;IAEzC,IAAM,MAAM,GAAG,2BAAkB,CAAC,WAAW,CAAC,IAAI,2BAAkB,CAAC,MAAM,CAAC,CAAC;IAC7E,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAChE,CAAC,CAAC;AALW,QAAA,YAAY,gBAKvB;AAEK,IAAM,0BAA0B,GAAG;IACxC,IAAI,CAAC,iBAAiB;QACpB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AAJW,QAAA,0BAA0B,8BAIrC","sourcesContent":["import { API_CLIENT_CONFIGS, RestClient, ServiceConfig } from '@reyaxyz/common';\n\nexport type BroadcastTransactionMetadata = {\n accountName?: string;\n};\n\nexport type TxData = {\n from: string;\n to: string;\n data: string;\n value?: string;\n gasLimit: bigint;\n maxPriorityFeePerGas?: bigint;\n maxFeePerGas?: bigint;\n};\nexport class TransactionModule extends RestClient {\n async executeTransaction(\n txData: TxData,\n contractType: string,\n metadata: BroadcastTransactionMetadata,\n ) {\n Object.defineProperty(BigInt.prototype, 'toJSON', {\n get() {\n 'use strict';\n return () => String(this);\n },\n });\n const uri = `/api/transaction/execute`;\n return this.post<{ txHash: string }>(\n uri,\n {},\n {\n txData,\n contractType,\n metadata,\n },\n );\n }\n}\n\n// Internal state\nlet transactionModule: TransactionModule = new TransactionModule(\n API_CLIENT_CONFIGS['test'].apiEndpoint,\n);\n\n// Function to configure the SDK\nexport const configureSDK = (\n environment: ServiceConfig['environment'],\n): void => {\n const config = API_CLIENT_CONFIGS[environment] || API_CLIENT_CONFIGS['test'];\n transactionModule = new TransactionModule(config.apiEndpoint);\n};\n\nexport const getTransactionModuleClient = (): TransactionModule => {\n if (!transactionModule)\n throw new Error('SDK is not configured! Call configureSDK()');\n return transactionModule;\n};\n"]}
@@ -51,39 +51,40 @@ exports.signAndBroadcastTransaction = exports.executeTransaction = exports.estim
51
51
  var contractAddresses_1 = require("../utils/contractAddresses");
52
52
  var txHelpers_1 = require("../utils/txHelpers");
53
53
  var config_1 = require("../config");
54
+ var common_1 = require("@reyaxyz/common");
54
55
  function estimateGas(signer, data, value, chainId, targetContract) {
55
56
  return __awaiter(this, void 0, void 0, function () {
56
- var accountAddress, nonce, contractAddress, tx, gasLimit, gasEstimate, error_1, maxPriorityFeePerGas, maxFeePerGas;
57
+ var accountAddress, contractAddress, tx, gasLimit, gasEstimate, error_1, maxPriorityFeePerGas, maxFeePerGas;
57
58
  return __generator(this, function (_a) {
58
59
  switch (_a.label) {
59
60
  case 0: return [4 /*yield*/, signer.getAddress()];
60
61
  case 1:
61
62
  accountAddress = _a.sent();
62
- return [4 /*yield*/, signer.getNonce()];
63
- case 2:
64
- nonce = _a.sent();
65
63
  contractAddress = Object.values(contractAddresses_1.ContractType).includes(targetContract)
66
64
  ? (0, contractAddresses_1.getAddress)(chainId, targetContract)
67
65
  : targetContract;
68
- tx = __assign(__assign({ from: accountAddress, to: contractAddress, data: data }, (value && value !== '0' ? { value: value } : {})), { chainId: chainId, nonce: nonce });
66
+ tx = __assign({ from: accountAddress, to: contractAddress, data: data }, (value && value !== '0' ? { value: value } : {}));
69
67
  gasLimit = BigInt('5000000');
70
- _a.label = 3;
71
- case 3:
72
- _a.trys.push([3, 5, , 6]);
68
+ _a.label = 2;
69
+ case 2:
70
+ _a.trys.push([2, 4, , 5]);
73
71
  return [4 /*yield*/, signer.estimateGas(tx)];
74
- case 4:
72
+ case 3:
75
73
  gasEstimate = _a.sent();
76
74
  gasLimit = (0, txHelpers_1.getGasBuffer)(gasEstimate);
77
- return [3 /*break*/, 6];
78
- case 5:
75
+ return [3 /*break*/, 5];
76
+ case 4:
79
77
  error_1 = _a.sent();
80
78
  // sentry error & throw
81
79
  console.warn(error_1);
82
- return [3 /*break*/, 6];
83
- case 6:
84
- maxPriorityFeePerGas = BigInt('0');
85
- maxFeePerGas = BigInt('0');
86
- return [2 /*return*/, __assign(__assign({}, tx), { gasLimit: gasLimit, maxPriorityFeePerGas: maxPriorityFeePerGas, maxFeePerGas: maxFeePerGas })];
80
+ return [3 /*break*/, 5];
81
+ case 5:
82
+ if (Object.values(common_1.ReyaChainId).includes(chainId)) {
83
+ maxPriorityFeePerGas = BigInt('0');
84
+ maxFeePerGas = BigInt('0');
85
+ return [2 /*return*/, __assign(__assign({}, tx), { gasLimit: gasLimit, maxPriorityFeePerGas: maxPriorityFeePerGas, maxFeePerGas: maxFeePerGas })];
86
+ }
87
+ return [2 /*return*/, __assign(__assign({}, tx), { gasLimit: gasLimit })];
87
88
  }
88
89
  });
89
90
  });
@@ -119,7 +120,7 @@ function executeTransaction(signer, data, value, chainId, targetContract) {
119
120
  exports.executeTransaction = executeTransaction;
120
121
  function signAndBroadcastTransaction(signer, data, value, chainId, targetContract, metadata) {
121
122
  return __awaiter(this, void 0, void 0, function () {
122
- var txData, signedTx, transactionModuleClient, txHash, error_3;
123
+ var txData, transactionModuleClient, txHash, error_3;
123
124
  return __generator(this, function (_a) {
124
125
  switch (_a.label) {
125
126
  case 0: return [4 /*yield*/, estimateGas(signer, data, value, chainId, targetContract)];
@@ -127,20 +128,17 @@ function signAndBroadcastTransaction(signer, data, value, chainId, targetContrac
127
128
  txData = _a.sent();
128
129
  _a.label = 2;
129
130
  case 2:
130
- _a.trys.push([2, 5, , 6]);
131
- return [4 /*yield*/, signer.signTransaction(txData)];
132
- case 3:
133
- signedTx = _a.sent();
131
+ _a.trys.push([2, 4, , 5]);
134
132
  transactionModuleClient = (0, config_1.getTransactionModuleClient)();
135
- return [4 /*yield*/, transactionModuleClient.executeTransaction(signedTx, targetContract, metadata)];
136
- case 4:
133
+ return [4 /*yield*/, transactionModuleClient.executeTransaction(txData, targetContract, metadata)];
134
+ case 3:
137
135
  txHash = (_a.sent()).txHash;
138
136
  return [2 /*return*/, { hash: txHash }];
139
- case 5:
137
+ case 4:
140
138
  error_3 = _a.sent();
141
139
  console.warn(error_3);
142
140
  throw new Error('Transaction Execution Error');
143
- case 6: return [2 /*return*/];
141
+ case 5: return [2 /*return*/];
144
142
  }
145
143
  });
146
144
  });
@@ -1 +1 @@
1
- {"version":3,"file":"executeTransaction.js","sourceRoot":"/","sources":["services/executeTransaction.ts"],"names":[],"mappings":"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","sourcesContent":["import { JsonRpcSigner, Signer } from 'ethers';\nimport { ContractType, getAddress } from '../utils/contractAddresses';\nimport { getGasBuffer } from '../utils/txHelpers';\nimport {\n BroadcastTransactionMetadata,\n getTransactionModuleClient,\n} from '../config';\n\nexport type Transaction = {\n from: string;\n to: string;\n data: string;\n value?: string;\n};\n\nexport async function estimateGas(\n signer: Signer | JsonRpcSigner,\n data: string,\n value: string,\n chainId: number,\n targetContract: ContractType | string,\n): Promise<\n Transaction & {\n gasLimit: bigint;\n maxPriorityFeePerGas: bigint;\n maxFeePerGas: bigint;\n }\n> {\n const accountAddress = await signer.getAddress();\n const nonce = await signer.getNonce();\n\n const contractAddress = Object.values(ContractType).includes(\n targetContract as ContractType,\n )\n ? getAddress(chainId, targetContract as ContractType)\n : targetContract;\n const tx = {\n from: accountAddress,\n to: contractAddress,\n data,\n ...(value && value !== '0' ? { value: value } : {}),\n chainId: chainId,\n nonce,\n };\n\n let gasLimit: bigint = BigInt('5000000'); // hardcode to 5m gas limit if fails to get estimate\n\n try {\n const gasEstimate = await signer.estimateGas(tx);\n gasLimit = getGasBuffer(gasEstimate);\n } catch (error) {\n // sentry error & throw\n console.warn(error);\n }\n\n const maxPriorityFeePerGas: bigint = BigInt('0');\n const maxFeePerGas: bigint = BigInt('0');\n return { ...tx, gasLimit, maxPriorityFeePerGas, maxFeePerGas };\n}\n\nexport async function executeTransaction(\n signer: Signer | JsonRpcSigner,\n data: string,\n value: string,\n chainId: number,\n targetContract: ContractType | string,\n) {\n const txData = await estimateGas(\n signer,\n data,\n value,\n chainId,\n targetContract,\n );\n\n try {\n const txResponse = await signer.sendTransaction(txData);\n const txReceipt = await txResponse.wait();\n return txReceipt;\n } catch (error) {\n console.warn(error);\n throw new Error('Transaction Execution Error');\n }\n}\n\nexport async function signAndBroadcastTransaction(\n signer: Signer | JsonRpcSigner,\n data: string,\n value: string,\n chainId: number,\n targetContract: ContractType | string,\n metadata: BroadcastTransactionMetadata,\n): Promise<{ hash: string }> {\n const txData = await estimateGas(\n signer,\n data,\n value,\n chainId,\n targetContract,\n );\n\n try {\n const signedTx = await signer.signTransaction(txData);\n\n const transactionModuleClient = getTransactionModuleClient();\n const { txHash } = await transactionModuleClient.executeTransaction(\n signedTx,\n targetContract,\n metadata,\n );\n return { hash: txHash };\n } catch (error) {\n console.warn(error);\n throw new Error('Transaction Execution Error');\n }\n}\n"]}
1
+ {"version":3,"file":"executeTransaction.js","sourceRoot":"/","sources":["services/executeTransaction.ts"],"names":[],"mappings":"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","sourcesContent":["import { JsonRpcSigner, Signer } from 'ethers';\nimport { ContractType, getAddress } from '../utils/contractAddresses';\nimport { getGasBuffer } from '../utils/txHelpers';\nimport {\n BroadcastTransactionMetadata,\n getTransactionModuleClient,\n} from '../config';\nimport { ReyaChainId } from '@reyaxyz/common';\n\nexport type Transaction = {\n from: string;\n to: string;\n data: string;\n value?: string;\n};\n\nexport async function estimateGas(\n signer: Signer | JsonRpcSigner,\n data: string,\n value: string,\n chainId: number,\n targetContract: ContractType | string,\n): Promise<\n Transaction & {\n gasLimit: bigint;\n maxPriorityFeePerGas?: bigint;\n maxFeePerGas?: bigint;\n }\n> {\n const accountAddress = await signer.getAddress();\n\n const contractAddress = Object.values(ContractType).includes(\n targetContract as ContractType,\n )\n ? getAddress(chainId, targetContract as ContractType)\n : targetContract;\n const tx = {\n from: accountAddress,\n to: contractAddress,\n data,\n ...(value && value !== '0' ? { value: value } : {}),\n };\n\n let gasLimit: bigint = BigInt('5000000'); // hardcode to 5m gas limit if fails to get estimate\n\n try {\n const gasEstimate = await signer.estimateGas(tx);\n gasLimit = getGasBuffer(gasEstimate);\n } catch (error) {\n // sentry error & throw\n console.warn(error);\n }\n\n if (Object.values(ReyaChainId).includes(chainId as ReyaChainId)) {\n const maxPriorityFeePerGas: bigint = BigInt('0');\n const maxFeePerGas: bigint = BigInt('0');\n return { ...tx, gasLimit, maxPriorityFeePerGas, maxFeePerGas };\n }\n\n return { ...tx, gasLimit };\n}\n\nexport async function executeTransaction(\n signer: Signer | JsonRpcSigner,\n data: string,\n value: string,\n chainId: number,\n targetContract: ContractType | string,\n) {\n const txData = await estimateGas(\n signer,\n data,\n value,\n chainId,\n targetContract,\n );\n\n try {\n const txResponse = await signer.sendTransaction(txData);\n const txReceipt = await txResponse.wait();\n return txReceipt;\n } catch (error) {\n console.warn(error);\n throw new Error('Transaction Execution Error');\n }\n}\n\nexport async function signAndBroadcastTransaction(\n signer: Signer | JsonRpcSigner,\n data: string,\n value: string,\n chainId: number,\n targetContract: ContractType | string,\n metadata: BroadcastTransactionMetadata,\n): Promise<{ hash: string }> {\n const txData = await estimateGas(\n signer,\n data,\n value,\n chainId,\n targetContract,\n );\n try {\n const transactionModuleClient = getTransactionModuleClient();\n const { txHash } = await transactionModuleClient.executeTransaction(\n txData,\n targetContract,\n metadata,\n );\n return { hash: txHash };\n } catch (error) {\n console.warn(error);\n throw new Error('Transaction Execution Error');\n }\n}\n"]}
@@ -69,7 +69,7 @@ var withdrawMAAndBridge = function (_a) {
69
69
  moneyInOutChainId: moneyInOutChainId,
70
70
  tokenName: bridgeTokenInfo.name,
71
71
  });
72
- _c = (0, encode_1.encodeWithdrawMAAndBridge)(marginAccountId, corePeripheryTokenInfo.address, (0, common_1.scale)(corePeripheryTokenInfo.decimals)(unscaledAmount), eip712Signature, BigInt('10000000'), socketConnectors.deposit, receiverAddress), data = _c.calldata, value = _c.value;
72
+ _c = (0, encode_1.encodeWithdrawMAAndBridge)(marginAccountId, corePeripheryTokenInfo.address, (0, common_1.scale)(corePeripheryTokenInfo.decimals)(unscaledAmount), eip712Signature, BigInt('10000000'), socketConnectors.withdraw, receiverAddress), data = _c.calldata, value = _c.value;
73
73
  return [4 /*yield*/, (0, executeTransaction_1.executeTransaction)(signer, data, value, reyaChainId, contractAddresses_1.ContractType.CORE_PROXY)];
74
74
  case 3:
75
75
  result = _e.sent();
@@ -1 +1 @@
1
- {"version":3,"file":"withdrawMAAndBridge.js","sourceRoot":"/","sources":["services/margin-accounts/withdrawMAAndBridge.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAOyB;AACzB,mEAAyE;AACzE,4DAA2D;AAC3D,gCAA2C;AAC3C,mCAAqD;AAKrD,6CAAgE;AAChE,oCAAiD;AACjD,6CAAiD;AAE1C,IAAM,mBAAmB,GAAG,UAAO,EAQd;QAP1B,MAAM,YAAA,EACN,iBAAiB,uBAAA,EACjB,eAAe,qBAAA,EACf,KAAK,WAAA,EACG,cAAc,YAAA,EACtB,YAAY,kBAAA,EACZ,uBAA+B,EAA/B,eAAe,mBAAG,KAAK,CAAC,OAAO,KAAA;;;;;;wBAEf,qBAAM,CAAA,MAAA,MAAM,CAAC,QAAQ,0CAAE,UAAU,EAAE,CAAA,EAAA;;oBAA7C,OAAO,GAAG,SAAmC;oBAC7C,WAAW,GAAgB,MAAM,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC,CAAC;oBAEpD,eAAe,GAAG,IAAA,8BAAqB,EAAC,YAAY,CAAC,CAAC;oBACtD,sBAAsB,GAC1B,eAAe,CAAC,IAAI,KAAK,MAAM;wBAC7B,CAAC,CAAC,IAAA,2BAAkB,EAAC,MAAM,EAAE,WAAW,CAAC;wBACzC,CAAC,CAAC,eAAe,CAAC;oBAEhB,WAAW,GAAG,IAAI,oBAAW,EAAE,CAAC;oBACtC,IAAA,6BAAoB,EAClB,sBAAsB,CAAC,OAAO,EAC9B,IAAA,cAAK,EAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,EACtD,WAAW,CACZ,CAAC;oBACsB,qBAAM,IAAA,uBAAgB,EAC5C,MAAM,EACN,WAAW,EACX,IAAA,8BAAU,EAAC,WAAW,EAAE,gCAAY,CAAC,eAAe,CAAC,EACrD,eAAe,EACf,WAAW,CAAC,QAAQ,EACpB,KAAK,CAAC,YAAY,GAAG,CAAC,EACtB,IAAA,qCAA4B,GAAE,GAAG,mCAA0B,CAC5D,EAAA;;oBARK,eAAe,GAAG,SAQvB;oBAEK,gBAAgB,GAAG,IAAA,4BAAmB,EAAC;wBAC3C,iBAAiB,EAAE,iBAAiB;wBACpC,SAAS,EAAE,eAAe,CAAC,IAAI;qBAChC,CAAC,CAAC;oBAEG,KAA4B,IAAA,kCAAyB,EACzD,eAAe,EACf,sBAAsB,CAAC,OAAO,EAC9B,IAAA,cAAK,EAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,EACtD,eAAe,EACf,MAAM,CAAC,UAAU,CAAC,EAClB,gBAAgB,CAAC,OAAO,EACxB,eAAe,CAChB,EARiB,IAAI,cAAA,EAAE,KAAK,WAAA,CAQ3B;oBAEa,qBAAM,IAAA,uCAAkB,EACrC,MAAM,EACN,IAAI,EACJ,KAAK,EACL,WAAW,EACX,gCAAY,CAAC,UAAU,CACxB,EAAA;;oBANK,MAAM,GAAG,SAMd;oBAED,sBAAO;4BACL,eAAe,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,KAAI,IAAI;yBACtC,EAAC;;;;CACH,CAAC;AA5DW,QAAA,mBAAmB,uBA4D9B","sourcesContent":["import {\n getCurrentTimestampInSeconds,\n getSocketConnectors,\n scale,\n ReyaChainId,\n getTokenInfoByAddress,\n getTokenInfoByName,\n} from '@reyaxyz/common';\nimport { ContractType, getAddress } from '../../utils/contractAddresses';\nimport { executeTransaction } from '../executeTransaction';\nimport { signCoreCommands } from '../sign';\nimport { encodeWithdrawMAAndBridge } from './encode';\nimport {\n WithdrawMAAndBridgeParams,\n WithdrawMAAndBridgeParamsResult,\n} from './types';\nimport { BRIDGE_DEADLINE_IN_SECONDS } from '../../utils/consts';\nimport { encodeSingleWithdraw } from '../encode';\nimport { MultiAction } from '../../utils/action';\n\nexport const withdrawMAAndBridge = async ({\n signer,\n moneyInOutChainId,\n marginAccountId,\n owner,\n amount: unscaledAmount,\n tokenAddress,\n receiverAddress = owner.address,\n}: WithdrawMAAndBridgeParams): Promise<WithdrawMAAndBridgeParamsResult> => {\n const network = await signer.provider?.getNetwork();\n const reyaChainId: ReyaChainId = Number(network?.chainId);\n\n const bridgeTokenInfo = getTokenInfoByAddress(tokenAddress);\n const corePeripheryTokenInfo =\n bridgeTokenInfo.name === 'USDC'\n ? getTokenInfoByName('RUSD', reyaChainId)\n : bridgeTokenInfo;\n\n const multiAction = new MultiAction();\n encodeSingleWithdraw(\n corePeripheryTokenInfo.address,\n scale(corePeripheryTokenInfo.decimals)(unscaledAmount),\n multiAction,\n );\n const eip712Signature = await signCoreCommands(\n signer,\n reyaChainId,\n getAddress(reyaChainId, ContractType.PERIPHERY_PROXY),\n marginAccountId,\n multiAction.commands,\n owner.coreSigNonce + 1,\n getCurrentTimestampInSeconds() + BRIDGE_DEADLINE_IN_SECONDS,\n );\n\n const socketConnectors = getSocketConnectors({\n moneyInOutChainId: moneyInOutChainId,\n tokenName: bridgeTokenInfo.name,\n });\n\n const { calldata: data, value } = encodeWithdrawMAAndBridge(\n marginAccountId,\n corePeripheryTokenInfo.address,\n scale(corePeripheryTokenInfo.decimals)(unscaledAmount),\n eip712Signature,\n BigInt('10000000'),\n socketConnectors.deposit,\n receiverAddress,\n );\n\n const result = await executeTransaction(\n signer,\n data,\n value,\n reyaChainId,\n ContractType.CORE_PROXY,\n );\n\n return {\n transactionHash: result?.hash || null,\n };\n};\n"]}
1
+ {"version":3,"file":"withdrawMAAndBridge.js","sourceRoot":"/","sources":["services/margin-accounts/withdrawMAAndBridge.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAOyB;AACzB,mEAAyE;AACzE,4DAA2D;AAC3D,gCAA2C;AAC3C,mCAAqD;AAKrD,6CAAgE;AAChE,oCAAiD;AACjD,6CAAiD;AAE1C,IAAM,mBAAmB,GAAG,UAAO,EAQd;QAP1B,MAAM,YAAA,EACN,iBAAiB,uBAAA,EACjB,eAAe,qBAAA,EACf,KAAK,WAAA,EACG,cAAc,YAAA,EACtB,YAAY,kBAAA,EACZ,uBAA+B,EAA/B,eAAe,mBAAG,KAAK,CAAC,OAAO,KAAA;;;;;;wBAEf,qBAAM,CAAA,MAAA,MAAM,CAAC,QAAQ,0CAAE,UAAU,EAAE,CAAA,EAAA;;oBAA7C,OAAO,GAAG,SAAmC;oBAC7C,WAAW,GAAgB,MAAM,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC,CAAC;oBAEpD,eAAe,GAAG,IAAA,8BAAqB,EAAC,YAAY,CAAC,CAAC;oBACtD,sBAAsB,GAC1B,eAAe,CAAC,IAAI,KAAK,MAAM;wBAC7B,CAAC,CAAC,IAAA,2BAAkB,EAAC,MAAM,EAAE,WAAW,CAAC;wBACzC,CAAC,CAAC,eAAe,CAAC;oBAEhB,WAAW,GAAG,IAAI,oBAAW,EAAE,CAAC;oBACtC,IAAA,6BAAoB,EAClB,sBAAsB,CAAC,OAAO,EAC9B,IAAA,cAAK,EAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,EACtD,WAAW,CACZ,CAAC;oBACsB,qBAAM,IAAA,uBAAgB,EAC5C,MAAM,EACN,WAAW,EACX,IAAA,8BAAU,EAAC,WAAW,EAAE,gCAAY,CAAC,eAAe,CAAC,EACrD,eAAe,EACf,WAAW,CAAC,QAAQ,EACpB,KAAK,CAAC,YAAY,GAAG,CAAC,EACtB,IAAA,qCAA4B,GAAE,GAAG,mCAA0B,CAC5D,EAAA;;oBARK,eAAe,GAAG,SAQvB;oBAEK,gBAAgB,GAAG,IAAA,4BAAmB,EAAC;wBAC3C,iBAAiB,EAAE,iBAAiB;wBACpC,SAAS,EAAE,eAAe,CAAC,IAAI;qBAChC,CAAC,CAAC;oBAEG,KAA4B,IAAA,kCAAyB,EACzD,eAAe,EACf,sBAAsB,CAAC,OAAO,EAC9B,IAAA,cAAK,EAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,EACtD,eAAe,EACf,MAAM,CAAC,UAAU,CAAC,EAClB,gBAAgB,CAAC,QAAQ,EACzB,eAAe,CAChB,EARiB,IAAI,cAAA,EAAE,KAAK,WAAA,CAQ3B;oBAEa,qBAAM,IAAA,uCAAkB,EACrC,MAAM,EACN,IAAI,EACJ,KAAK,EACL,WAAW,EACX,gCAAY,CAAC,UAAU,CACxB,EAAA;;oBANK,MAAM,GAAG,SAMd;oBAED,sBAAO;4BACL,eAAe,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,KAAI,IAAI;yBACtC,EAAC;;;;CACH,CAAC;AA5DW,QAAA,mBAAmB,uBA4D9B","sourcesContent":["import {\n getCurrentTimestampInSeconds,\n getSocketConnectors,\n scale,\n ReyaChainId,\n getTokenInfoByAddress,\n getTokenInfoByName,\n} from '@reyaxyz/common';\nimport { ContractType, getAddress } from '../../utils/contractAddresses';\nimport { executeTransaction } from '../executeTransaction';\nimport { signCoreCommands } from '../sign';\nimport { encodeWithdrawMAAndBridge } from './encode';\nimport {\n WithdrawMAAndBridgeParams,\n WithdrawMAAndBridgeParamsResult,\n} from './types';\nimport { BRIDGE_DEADLINE_IN_SECONDS } from '../../utils/consts';\nimport { encodeSingleWithdraw } from '../encode';\nimport { MultiAction } from '../../utils/action';\n\nexport const withdrawMAAndBridge = async ({\n signer,\n moneyInOutChainId,\n marginAccountId,\n owner,\n amount: unscaledAmount,\n tokenAddress,\n receiverAddress = owner.address,\n}: WithdrawMAAndBridgeParams): Promise<WithdrawMAAndBridgeParamsResult> => {\n const network = await signer.provider?.getNetwork();\n const reyaChainId: ReyaChainId = Number(network?.chainId);\n\n const bridgeTokenInfo = getTokenInfoByAddress(tokenAddress);\n const corePeripheryTokenInfo =\n bridgeTokenInfo.name === 'USDC'\n ? getTokenInfoByName('RUSD', reyaChainId)\n : bridgeTokenInfo;\n\n const multiAction = new MultiAction();\n encodeSingleWithdraw(\n corePeripheryTokenInfo.address,\n scale(corePeripheryTokenInfo.decimals)(unscaledAmount),\n multiAction,\n );\n const eip712Signature = await signCoreCommands(\n signer,\n reyaChainId,\n getAddress(reyaChainId, ContractType.PERIPHERY_PROXY),\n marginAccountId,\n multiAction.commands,\n owner.coreSigNonce + 1,\n getCurrentTimestampInSeconds() + BRIDGE_DEADLINE_IN_SECONDS,\n );\n\n const socketConnectors = getSocketConnectors({\n moneyInOutChainId: moneyInOutChainId,\n tokenName: bridgeTokenInfo.name,\n });\n\n const { calldata: data, value } = encodeWithdrawMAAndBridge(\n marginAccountId,\n corePeripheryTokenInfo.address,\n scale(corePeripheryTokenInfo.decimals)(unscaledAmount),\n eip712Signature,\n BigInt('10000000'),\n socketConnectors.withdraw,\n receiverAddress,\n );\n\n const result = await executeTransaction(\n signer,\n data,\n value,\n reyaChainId,\n ContractType.CORE_PROXY,\n );\n\n return {\n transactionHash: result?.hash || null,\n };\n};\n"]}
@@ -1,25 +1,70 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
12
37
  };
13
38
  Object.defineProperty(exports, "__esModule", { value: true });
14
39
  exports.encodeMatchOrder = void 0;
15
40
  var action_1 = require("../../utils/action");
16
41
  var encode_1 = require("../encode");
17
- var encodeMatchOrder = function (accountId, orderBase, orderPriceLimit, counterpartyAccountIds, marketId, exchangeId) {
18
- var multiAction = new action_1.MultiAction();
19
- (0, encode_1.encodeSingleTrade)(counterpartyAccountIds, orderBase, orderPriceLimit, marketId, exchangeId, multiAction);
20
- var value = BigInt(0);
21
- var call = (0, encode_1.encodeRouterCall)(multiAction, accountId, value);
22
- return __assign({}, call);
23
- };
42
+ var sign_1 = require("../sign");
43
+ var common_1 = require("@reyaxyz/common");
44
+ var consts_1 = require("../../utils/consts");
45
+ var ethers_1 = require("ethers");
46
+ var ExecutionModule_json_1 = require("../../abis/ExecutionModule.json");
47
+ var encodeMatchOrder = function (signer, chainId, coreSigNonce, accountId, orderBase, orderPriceLimit, counterpartyAccountIds, marketId, exchangeId) { return __awaiter(void 0, void 0, void 0, function () {
48
+ var multiAction, eip712Signature, value, functionSignature, parameters, INTERFACE, calldata;
49
+ return __generator(this, function (_a) {
50
+ switch (_a.label) {
51
+ case 0:
52
+ multiAction = new action_1.MultiAction();
53
+ (0, encode_1.encodeSingleTrade)(counterpartyAccountIds, orderBase, orderPriceLimit, marketId, exchangeId, multiAction);
54
+ return [4 /*yield*/, (0, sign_1.signCoreCommands)(signer, chainId, consts_1.RELAYER_ACCOUNT, accountId, multiAction.commands, coreSigNonce + 1, (0, common_1.getCurrentTimestampInSeconds)() + consts_1.CORE_DEADLINE_IN_SECONDS)];
55
+ case 1:
56
+ eip712Signature = _a.sent();
57
+ value = BigInt(0);
58
+ functionSignature = 'executeBySig';
59
+ parameters = [accountId, multiAction.commands, eip712Signature];
60
+ INTERFACE = new ethers_1.Interface(ExecutionModule_json_1.abi);
61
+ calldata = INTERFACE.encodeFunctionData(functionSignature, parameters);
62
+ return [2 /*return*/, {
63
+ calldata: calldata,
64
+ value: BigInt(value).toString(10),
65
+ }];
66
+ }
67
+ });
68
+ }); };
24
69
  exports.encodeMatchOrder = encodeMatchOrder;
25
70
  //# sourceMappingURL=encode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"encode.js","sourceRoot":"/","sources":["services/orders/encode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,6CAAmE;AACnE,oCAAgE;AAEzD,IAAM,gBAAgB,GAAG,UAC9B,SAAiB,EACjB,SAAiB,EACjB,eAAuB,EACvB,sBAAgC,EAChC,QAAgB,EAChB,UAAkB;IAElB,IAAM,WAAW,GAAG,IAAI,oBAAW,EAAE,CAAC;IAEtC,IAAA,0BAAiB,EACf,sBAAsB,EACtB,SAAS,EACT,eAAe,EACf,QAAQ,EACR,UAAU,EACV,WAAW,CACZ,CAAC;IAEF,IAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,IAAM,IAAI,GAAG,IAAA,yBAAgB,EAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAE7D,oBACK,IAAI,EACP;AACJ,CAAC,CAAC;AAzBW,QAAA,gBAAgB,oBAyB3B","sourcesContent":["import { MethodParameters, MultiAction } from '../../utils/action';\nimport { encodeRouterCall, encodeSingleTrade } from '../encode';\n\nexport const encodeMatchOrder = (\n accountId: number,\n orderBase: bigint,\n orderPriceLimit: bigint,\n counterpartyAccountIds: number[],\n marketId: number,\n exchangeId: number,\n): MethodParameters => {\n const multiAction = new MultiAction();\n\n encodeSingleTrade(\n counterpartyAccountIds,\n orderBase,\n orderPriceLimit,\n marketId,\n exchangeId,\n multiAction,\n );\n\n const value = BigInt(0);\n const call = encodeRouterCall(multiAction, accountId, value);\n\n return {\n ...call,\n };\n};\n"]}
1
+ {"version":3,"file":"encode.js","sourceRoot":"/","sources":["services/orders/encode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAmE;AACnE,oCAA8C;AAC9C,gCAA2C;AAC3C,0CAA+D;AAC/D,6CAA+E;AAC/E,iCAA2C;AAC3C,wEAAsD;AAC/C,IAAM,gBAAgB,GAAG,UAC9B,MAAc,EACd,OAAe,EACf,YAAoB,EACpB,SAAiB,EACjB,SAAiB,EACjB,eAAuB,EACvB,sBAAgC,EAChC,QAAgB,EAChB,UAAkB;;;;;gBAEZ,WAAW,GAAG,IAAI,oBAAW,EAAE,CAAC;gBAEtC,IAAA,0BAAiB,EACf,sBAAsB,EACtB,SAAS,EACT,eAAe,EACf,QAAQ,EACR,UAAU,EACV,WAAW,CACZ,CAAC;gBACsB,qBAAM,IAAA,uBAAgB,EAC5C,MAAM,EACN,OAAO,EACP,wBAAe,EACf,SAAS,EACT,WAAW,CAAC,QAAQ,EACpB,YAAY,GAAG,CAAC,EAChB,IAAA,qCAA4B,GAAE,GAAG,iCAAwB,CAC1D,EAAA;;gBARK,eAAe,GAAG,SAQvB;gBAEK,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBAClB,iBAAiB,GAAG,cAAc,CAAC;gBACnC,UAAU,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;gBAEhE,SAAS,GAAG,IAAI,kBAAS,CAAC,0BAAG,CAAC,CAAC;gBAC/B,QAAQ,GAAG,SAAS,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;gBAC7E,sBAAO;wBACL,QAAQ,EAAE,QAAQ;wBAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;qBAClC,EAAC;;;KACH,CAAC;AAzCW,QAAA,gBAAgB,oBAyC3B","sourcesContent":["import { MethodParameters, MultiAction } from '../../utils/action';\nimport { encodeSingleTrade } from '../encode';\nimport { signCoreCommands } from '../sign';\nimport { getCurrentTimestampInSeconds } from '@reyaxyz/common';\nimport { CORE_DEADLINE_IN_SECONDS, RELAYER_ACCOUNT } from '../../utils/consts';\nimport { Interface, Signer } from 'ethers';\nimport { abi } from '../../abis/ExecutionModule.json';\nexport const encodeMatchOrder = async (\n signer: Signer,\n chainId: number,\n coreSigNonce: number,\n accountId: number,\n orderBase: bigint,\n orderPriceLimit: bigint,\n counterpartyAccountIds: number[],\n marketId: number,\n exchangeId: number,\n): Promise<MethodParameters> => {\n const multiAction = new MultiAction();\n\n encodeSingleTrade(\n counterpartyAccountIds,\n orderBase,\n orderPriceLimit,\n marketId,\n exchangeId,\n multiAction,\n );\n const eip712Signature = await signCoreCommands(\n signer,\n chainId,\n RELAYER_ACCOUNT,\n accountId,\n multiAction.commands,\n coreSigNonce + 1,\n getCurrentTimestampInSeconds() + CORE_DEADLINE_IN_SECONDS,\n );\n\n const value = BigInt(0);\n const functionSignature = 'executeBySig';\n const parameters = [accountId, multiAction.commands, eip712Signature];\n\n const INTERFACE = new Interface(abi);\n const calldata = INTERFACE.encodeFunctionData(functionSignature, parameters);\n return {\n calldata: calldata,\n value: BigInt(value).toString(10),\n };\n};\n"]}
@@ -47,7 +47,7 @@ var bignumber_js_1 = __importDefault(require("bignumber.js"));
47
47
  var contractAddresses_1 = require("../../utils/contractAddresses");
48
48
  var common_1 = require("@reyaxyz/common");
49
49
  var matchOrder = function (params) { return __awaiter(void 0, void 0, void 0, function () {
50
- var orderPriceLimit, orderBase, _a, data, value, network, chainId, result;
50
+ var orderPriceLimit, orderBase, network, chainId, _a, data, value, result;
51
51
  var _b;
52
52
  return __generator(this, function (_c) {
53
53
  switch (_c.label) {
@@ -57,13 +57,15 @@ var matchOrder = function (params) { return __awaiter(void 0, void 0, void 0, fu
57
57
  }
58
58
  orderPriceLimit = (0, trade_1.calculatePriceLimitForTrade)(params.market.currentPrice, params.orderBase);
59
59
  orderBase = (0, common_1.scale)(18)(params.orderBase);
60
- _a = (0, encode_1.encodeMatchOrder)(params.marginAccountId, orderBase, orderPriceLimit, params.market.counterpartyAccountIds, params.market.id, params.market.exchangeId), data = _a.calldata, value = _a.value;
61
60
  return [4 /*yield*/, ((_b = params.signer.provider) === null || _b === void 0 ? void 0 : _b.getNetwork())];
62
61
  case 1:
63
62
  network = _c.sent();
64
63
  chainId = Number(network === null || network === void 0 ? void 0 : network.chainId);
65
- return [4 /*yield*/, (0, executeTransaction_1.signAndBroadcastTransaction)(params.signer, data, value, chainId, contractAddresses_1.ContractType.CORE_PROXY, {})];
64
+ return [4 /*yield*/, (0, encode_1.encodeMatchOrder)(params.signer, chainId, params.owner.coreSigNonce, params.marginAccountId, orderBase, orderPriceLimit, params.market.counterpartyAccountIds, params.market.id, params.market.exchangeId)];
66
65
  case 2:
66
+ _a = _c.sent(), data = _a.calldata, value = _a.value;
67
+ return [4 /*yield*/, (0, executeTransaction_1.signAndBroadcastTransaction)(params.signer, data, value, chainId, contractAddresses_1.ContractType.CORE_PROXY, {})];
68
+ case 3:
67
69
  result = _c.sent();
68
70
  return [2 /*return*/, {
69
71
  transactionHash: (result === null || result === void 0 ? void 0 : result.hash) || null,
@@ -73,7 +75,7 @@ var matchOrder = function (params) { return __awaiter(void 0, void 0, void 0, fu
73
75
  }); };
74
76
  exports.matchOrder = matchOrder;
75
77
  var closeOrder = function (params) { return __awaiter(void 0, void 0, void 0, function () {
76
- var base, orderPriceLimit, _a, data, value, network, chainId, result;
78
+ var base, orderPriceLimit, network, chainId, _a, data, value, result;
77
79
  var _b;
78
80
  return __generator(this, function (_c) {
79
81
  switch (_c.label) {
@@ -83,13 +85,15 @@ var closeOrder = function (params) { return __awaiter(void 0, void 0, void 0, fu
83
85
  }
84
86
  base = (0, common_1.scale)(18)((0, bignumber_js_1.default)(params.orderBase).negated().toNumber());
85
87
  orderPriceLimit = (0, trade_1.calculatePriceLimitForTrade)(params.market.currentPrice, (0, bignumber_js_1.default)(params.orderBase).negated().toNumber());
86
- _a = (0, encode_1.encodeMatchOrder)(params.marginAccountId, BigInt(base), orderPriceLimit, params.market.counterpartyAccountIds, params.market.id, params.market.exchangeId), data = _a.calldata, value = _a.value;
87
88
  return [4 /*yield*/, ((_b = params.signer.provider) === null || _b === void 0 ? void 0 : _b.getNetwork())];
88
89
  case 1:
89
90
  network = _c.sent();
90
91
  chainId = Number(network === null || network === void 0 ? void 0 : network.chainId);
91
- return [4 /*yield*/, (0, executeTransaction_1.signAndBroadcastTransaction)(params.signer, data, value, chainId, contractAddresses_1.ContractType.CORE_PROXY, {})];
92
+ return [4 /*yield*/, (0, encode_1.encodeMatchOrder)(params.signer, chainId, params.owner.coreSigNonce, params.marginAccountId, BigInt(base), orderPriceLimit, params.market.counterpartyAccountIds, params.market.id, params.market.exchangeId)];
92
93
  case 2:
94
+ _a = _c.sent(), data = _a.calldata, value = _a.value;
95
+ return [4 /*yield*/, (0, executeTransaction_1.signAndBroadcastTransaction)(params.signer, data, value, chainId, contractAddresses_1.ContractType.CORE_PROXY, {})];
96
+ case 3:
93
97
  result = _c.sent();
94
98
  return [2 /*return*/, {
95
99
  transactionHash: (result === null || result === void 0 ? void 0 : result.hash) || null,
@@ -1 +1 @@
1
- {"version":3,"file":"order.js","sourceRoot":"/","sources":["services/orders/order.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CloseOrderParams,\n CloseOrderResult,\n MatchOrderParams,\n MatchOrderResult,\n} from './types';\nimport { encodeMatchOrder } from './encode';\nimport { signAndBroadcastTransaction } from '../executeTransaction';\nimport { calculatePriceLimitForTrade } from '../../utils/trade';\nimport BigNumber from 'bignumber.js';\nimport { ContractType } from '../../utils/contractAddresses';\nimport { scale } from '@reyaxyz/common';\n\nexport const matchOrder = async (\n params: MatchOrderParams,\n): Promise<MatchOrderResult> => {\n if (params.orderBase === 0) {\n throw new Error('Position base can not be 0');\n }\n const orderPriceLimit = calculatePriceLimitForTrade(\n params.market.currentPrice,\n params.orderBase,\n );\n\n const orderBase = scale(18)(params.orderBase);\n\n const { calldata: data, value } = encodeMatchOrder(\n params.marginAccountId,\n orderBase,\n orderPriceLimit,\n params.market.counterpartyAccountIds,\n params.market.id,\n params.market.exchangeId,\n );\n\n const network = await params.signer.provider?.getNetwork();\n const chainId = Number(network?.chainId);\n\n const result = await signAndBroadcastTransaction(\n params.signer,\n data,\n value,\n chainId,\n ContractType.CORE_PROXY,\n {},\n );\n\n return {\n transactionHash: result?.hash || null,\n };\n};\n\nexport const closeOrder = async (\n params: CloseOrderParams,\n): Promise<CloseOrderResult> => {\n if (params.orderBase === 0) {\n throw new Error('Position base can not be 0');\n }\n\n const base = scale(18)(BigNumber(params.orderBase).negated().toNumber());\n const orderPriceLimit = calculatePriceLimitForTrade(\n params.market.currentPrice,\n BigNumber(params.orderBase).negated().toNumber(), // used just because of sign\n );\n\n const { calldata: data, value } = encodeMatchOrder(\n params.marginAccountId,\n BigInt(base),\n orderPriceLimit,\n params.market.counterpartyAccountIds,\n params.market.id,\n params.market.exchangeId,\n );\n\n const network = await params.signer.provider?.getNetwork();\n const chainId = Number(network?.chainId);\n\n const result = await signAndBroadcastTransaction(\n params.signer,\n data,\n value,\n chainId,\n ContractType.CORE_PROXY,\n {},\n );\n\n return {\n transactionHash: result?.hash || null,\n };\n};\n"]}
1
+ {"version":3,"file":"order.js","sourceRoot":"/","sources":["services/orders/order.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CloseOrderParams,\n CloseOrderResult,\n MatchOrderParams,\n MatchOrderResult,\n} from './types';\nimport { encodeMatchOrder } from './encode';\nimport { signAndBroadcastTransaction } from '../executeTransaction';\nimport { calculatePriceLimitForTrade } from '../../utils/trade';\nimport BigNumber from 'bignumber.js';\nimport { ContractType } from '../../utils/contractAddresses';\nimport { scale } from '@reyaxyz/common';\n\nexport const matchOrder = async (\n params: MatchOrderParams,\n): Promise<MatchOrderResult> => {\n if (params.orderBase === 0) {\n throw new Error('Position base can not be 0');\n }\n const orderPriceLimit = calculatePriceLimitForTrade(\n params.market.currentPrice,\n params.orderBase,\n );\n\n const orderBase = scale(18)(params.orderBase);\n const network = await params.signer.provider?.getNetwork();\n const chainId = Number(network?.chainId);\n\n const { calldata: data, value } = await encodeMatchOrder(\n params.signer,\n chainId,\n params.owner.coreSigNonce,\n params.marginAccountId,\n orderBase,\n orderPriceLimit,\n params.market.counterpartyAccountIds,\n params.market.id,\n params.market.exchangeId,\n );\n\n const result = await signAndBroadcastTransaction(\n params.signer,\n data,\n value,\n chainId,\n ContractType.CORE_PROXY,\n {},\n );\n\n return {\n transactionHash: result?.hash || null,\n };\n};\n\nexport const closeOrder = async (\n params: CloseOrderParams,\n): Promise<CloseOrderResult> => {\n if (params.orderBase === 0) {\n throw new Error('Position base can not be 0');\n }\n\n const base = scale(18)(BigNumber(params.orderBase).negated().toNumber());\n const orderPriceLimit = calculatePriceLimitForTrade(\n params.market.currentPrice,\n BigNumber(params.orderBase).negated().toNumber(), // used just because of sign\n );\n\n const network = await params.signer.provider?.getNetwork();\n const chainId = Number(network?.chainId);\n\n const { calldata: data, value } = await encodeMatchOrder(\n params.signer,\n chainId,\n params.owner.coreSigNonce,\n params.marginAccountId,\n BigInt(base),\n orderPriceLimit,\n params.market.counterpartyAccountIds,\n params.market.id,\n params.market.exchangeId,\n );\n\n const result = await signAndBroadcastTransaction(\n params.signer,\n data,\n value,\n chainId,\n ContractType.CORE_PROXY,\n {},\n );\n\n return {\n transactionHash: result?.hash || null,\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"/","sources":["services/orders/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Signer, JsonRpcSigner } from 'ethers';\nimport {\n MarginAccountEntity,\n MarketEntity,\n PositionEntity,\n} from '@reyaxyz/common';\n\nexport type MarketParams = {\n id: MarketEntity['id'];\n exchangeId: MarketEntity['orderInfo']['exchangeId'];\n counterpartyAccountIds: MarketEntity['orderInfo']['counterpartyAccountIds'];\n currentPrice: number;\n};\n\nexport type MatchOrderParams = {\n signer: Signer | JsonRpcSigner;\n marginAccountId: MarginAccountEntity['id'];\n orderBase: number;\n market: MarketParams;\n};\n\nexport type CloseOrderParams = {\n signer: Signer | JsonRpcSigner;\n marginAccountId: MarginAccountEntity['id'];\n orderBase: PositionEntity['base'];\n market: MarketParams;\n};\n\nexport type MatchOrderResult = {\n transactionHash: string | null;\n};\n\nexport type CloseOrderResult = {\n transactionHash: string | null;\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"/","sources":["services/orders/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Signer, JsonRpcSigner } from 'ethers';\nimport {\n MarginAccountEntity,\n MarketEntity,\n OwnerMetadataEntity,\n PositionEntity,\n} from '@reyaxyz/common';\n\nexport type MarketParams = {\n id: MarketEntity['id'];\n exchangeId: MarketEntity['orderInfo']['exchangeId'];\n counterpartyAccountIds: MarketEntity['orderInfo']['counterpartyAccountIds'];\n currentPrice: number;\n};\n\nexport type MatchOrderParams = {\n signer: Signer | JsonRpcSigner;\n owner: Pick<OwnerMetadataEntity, 'coreSigNonce'>;\n marginAccountId: MarginAccountEntity['id'];\n orderBase: number;\n market: MarketParams;\n};\n\nexport type CloseOrderParams = {\n signer: Signer | JsonRpcSigner;\n owner: Pick<OwnerMetadataEntity, 'coreSigNonce'>;\n marginAccountId: MarginAccountEntity['id'];\n orderBase: PositionEntity['base'];\n market: MarketParams;\n};\n\nexport type MatchOrderResult = {\n transactionHash: string | null;\n};\n\nexport type CloseOrderResult = {\n transactionHash: string | null;\n};\n"]}
@@ -2,8 +2,17 @@ import { RestClient, ServiceConfig } from '@reyaxyz/common';
2
2
  export type BroadcastTransactionMetadata = {
3
3
  accountName?: string;
4
4
  };
5
+ export type TxData = {
6
+ from: string;
7
+ to: string;
8
+ data: string;
9
+ value?: string;
10
+ gasLimit: bigint;
11
+ maxPriorityFeePerGas?: bigint;
12
+ maxFeePerGas?: bigint;
13
+ };
5
14
  export declare class TransactionModule extends RestClient {
6
- executeTransaction(signedTx: string, contractType: string, metadata: BroadcastTransactionMetadata): Promise<{
15
+ executeTransaction(txData: TxData, contractType: string, metadata: BroadcastTransactionMetadata): Promise<{
7
16
  txHash: string;
8
17
  }>;
9
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhF,MAAM,MAAM,4BAA4B,GAAG;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AACF,qBAAa,iBAAkB,SAAQ,UAAU;IACzC,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,4BAA4B;gBAGX,MAAM;;CAUpC;AAQD,eAAO,MAAM,YAAY,gBACV,aAAa,CAAC,aAAa,CAAC,KACxC,IAGF,CAAC;AAEF,eAAO,MAAM,0BAA0B,QAAO,iBAI7C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhF,MAAM,MAAM,4BAA4B,GAAG;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AACF,qBAAa,iBAAkB,SAAQ,UAAU;IACzC,kBAAkB,CACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,4BAA4B;gBASX,MAAM;;CAUpC;AAQD,eAAO,MAAM,YAAY,gBACV,aAAa,CAAC,aAAa,CAAC,KACxC,IAGF,CAAC;AAEF,eAAO,MAAM,0BAA0B,QAAO,iBAI7C,CAAC"}
@@ -9,8 +9,8 @@ export type Transaction = {
9
9
  };
10
10
  export declare function estimateGas(signer: Signer | JsonRpcSigner, data: string, value: string, chainId: number, targetContract: ContractType | string): Promise<Transaction & {
11
11
  gasLimit: bigint;
12
- maxPriorityFeePerGas: bigint;
13
- maxFeePerGas: bigint;
12
+ maxPriorityFeePerGas?: bigint;
13
+ maxFeePerGas?: bigint;
14
14
  }>;
15
15
  export declare function executeTransaction(signer: Signer | JsonRpcSigner, data: string, value: string, chainId: number, targetContract: ContractType | string): Promise<import("ethers").TransactionReceipt | null>;
16
16
  export declare function signAndBroadcastTransaction(signer: Signer | JsonRpcSigner, data: string, value: string, chainId: number, targetContract: ContractType | string, metadata: BroadcastTransactionMetadata): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"executeTransaction.d.ts","sourceRoot":"/","sources":["services/executeTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAc,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EACL,4BAA4B,EAE7B,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,GAAG,aAAa,EAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,YAAY,GAAG,MAAM,GACpC,OAAO,CACR,WAAW,GAAG;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;CACtB,CACF,CA+BA;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,GAAG,aAAa,EAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,YAAY,GAAG,MAAM,uDAkBtC;AAED,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,MAAM,GAAG,aAAa,EAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,YAAY,GAAG,MAAM,EACrC,QAAQ,EAAE,4BAA4B,GACrC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB3B"}
1
+ {"version":3,"file":"executeTransaction.d.ts","sourceRoot":"/","sources":["services/executeTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAc,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EACL,4BAA4B,EAE7B,MAAM,WAAW,CAAC;AAGnB,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,GAAG,aAAa,EAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,YAAY,GAAG,MAAM,GACpC,OAAO,CACR,WAAW,GAAG;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CACF,CAgCA;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,GAAG,aAAa,EAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,YAAY,GAAG,MAAM,uDAkBtC;AAED,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,MAAM,GAAG,aAAa,EAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,YAAY,GAAG,MAAM,EACrC,QAAQ,EAAE,4BAA4B,GACrC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAoB3B"}
@@ -1,3 +1,4 @@
1
1
  import { MethodParameters } from '../../utils/action';
2
- export declare const encodeMatchOrder: (accountId: number, orderBase: bigint, orderPriceLimit: bigint, counterpartyAccountIds: number[], marketId: number, exchangeId: number) => MethodParameters;
2
+ import { Signer } from 'ethers';
3
+ export declare const encodeMatchOrder: (signer: Signer, chainId: number, coreSigNonce: number, accountId: number, orderBase: bigint, orderPriceLimit: bigint, counterpartyAccountIds: number[], marketId: number, exchangeId: number) => Promise<MethodParameters>;
3
4
  //# sourceMappingURL=encode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"encode.d.ts","sourceRoot":"/","sources":["services/orders/encode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAe,MAAM,oBAAoB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,MAAM,aACN,MAAM,mBACA,MAAM,0BACC,MAAM,EAAE,YACtB,MAAM,cACJ,MAAM,KACjB,gBAkBF,CAAC"}
1
+ {"version":3,"file":"encode.d.ts","sourceRoot":"/","sources":["services/orders/encode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAe,MAAM,oBAAoB,CAAC;AAKnE,OAAO,EAAa,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE3C,eAAO,MAAM,gBAAgB,WACnB,MAAM,WACL,MAAM,gBACD,MAAM,aACT,MAAM,aACN,MAAM,mBACA,MAAM,0BACC,MAAM,EAAE,YACtB,MAAM,cACJ,MAAM,KACjB,QAAQ,gBAAgB,CA+B1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"order.d.ts","sourceRoot":"/","sources":["services/orders/order.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAQjB,eAAO,MAAM,UAAU,WACb,gBAAgB,KACvB,QAAQ,gBAAgB,CAmC1B,CAAC;AAEF,eAAO,MAAM,UAAU,WACb,gBAAgB,KACvB,QAAQ,gBAAgB,CAmC1B,CAAC"}
1
+ {"version":3,"file":"order.d.ts","sourceRoot":"/","sources":["services/orders/order.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAQjB,eAAO,MAAM,UAAU,WACb,gBAAgB,KACvB,QAAQ,gBAAgB,CAqC1B,CAAC;AAEF,eAAO,MAAM,UAAU,WACb,gBAAgB,KACvB,QAAQ,gBAAgB,CAsC1B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Signer, JsonRpcSigner } from 'ethers';
2
- import { MarginAccountEntity, MarketEntity, PositionEntity } from '@reyaxyz/common';
2
+ import { MarginAccountEntity, MarketEntity, OwnerMetadataEntity, PositionEntity } from '@reyaxyz/common';
3
3
  export type MarketParams = {
4
4
  id: MarketEntity['id'];
5
5
  exchangeId: MarketEntity['orderInfo']['exchangeId'];
@@ -8,12 +8,14 @@ export type MarketParams = {
8
8
  };
9
9
  export type MatchOrderParams = {
10
10
  signer: Signer | JsonRpcSigner;
11
+ owner: Pick<OwnerMetadataEntity, 'coreSigNonce'>;
11
12
  marginAccountId: MarginAccountEntity['id'];
12
13
  orderBase: number;
13
14
  market: MarketParams;
14
15
  };
15
16
  export type CloseOrderParams = {
16
17
  signer: Signer | JsonRpcSigner;
18
+ owner: Pick<OwnerMetadataEntity, 'coreSigNonce'>;
17
19
  marginAccountId: MarginAccountEntity['id'];
18
20
  orderBase: PositionEntity['base'];
19
21
  market: MarketParams;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["services/orders/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACf,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IACvB,UAAU,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC;IACpD,sBAAsB,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,wBAAwB,CAAC,CAAC;IAC5E,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,eAAe,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,eAAe,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC3C,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["services/orders/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACf,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IACvB,UAAU,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC;IACpD,sBAAsB,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,wBAAwB,CAAC,CAAC;IAC5E,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;IACjD,eAAe,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;IACjD,eAAe,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC3C,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC"}
@@ -1,2 +1,4 @@
1
1
  export declare const BRIDGE_DEADLINE_IN_SECONDS: number;
2
+ export declare const CORE_DEADLINE_IN_SECONDS = 60;
3
+ export declare const RELAYER_ACCOUNT = "0xb43c317c9c9215d268881d7d6b59c2d3d0247da1";
2
4
  //# sourceMappingURL=consts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"/","sources":["utils/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,QAAU,CAAC"}
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"/","sources":["utils/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,QAAU,CAAC;AAClD,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,eAAe,+CAA+C,CAAC"}
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BRIDGE_DEADLINE_IN_SECONDS = void 0;
3
+ exports.RELAYER_ACCOUNT = exports.CORE_DEADLINE_IN_SECONDS = exports.BRIDGE_DEADLINE_IN_SECONDS = void 0;
4
4
  exports.BRIDGE_DEADLINE_IN_SECONDS = 15 * 60; // 15 minutes
5
+ exports.CORE_DEADLINE_IN_SECONDS = 60; // 1 minute
6
+ exports.RELAYER_ACCOUNT = '0xb43c317c9c9215d268881d7d6b59c2d3d0247da1'; // @todo update value
5
7
  //# sourceMappingURL=consts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"consts.js","sourceRoot":"/","sources":["utils/consts.ts"],"names":[],"mappings":";;;AAAa,QAAA,0BAA0B,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa","sourcesContent":["export const BRIDGE_DEADLINE_IN_SECONDS = 15 * 60; // 15 minutes\n"]}
1
+ {"version":3,"file":"consts.js","sourceRoot":"/","sources":["utils/consts.ts"],"names":[],"mappings":";;;AAAa,QAAA,0BAA0B,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa;AACnD,QAAA,wBAAwB,GAAG,EAAE,CAAC,CAAC,WAAW;AAC1C,QAAA,eAAe,GAAG,4CAA4C,CAAC,CAAC,qBAAqB","sourcesContent":["export const BRIDGE_DEADLINE_IN_SECONDS = 15 * 60; // 15 minutes\nexport const CORE_DEADLINE_IN_SECONDS = 60; // 1 minute\nexport const RELAYER_ACCOUNT = '0xb43c317c9c9215d268881d7d6b59c2d3d0247da1'; // @todo update value\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reyaxyz/sdk",
3
- "version": "0.37.0",
3
+ "version": "0.38.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -34,5 +34,5 @@
34
34
  "ethers": "6.9.0"
35
35
  },
36
36
  "packageManager": "pnpm@8.10.4",
37
- "gitHead": "08b91b59581c5c96bc77b2f490f9596b9371bb39"
37
+ "gitHead": "483895feb58ea8c9b5ff53441a0cc98701352db4"
38
38
  }
@@ -3,18 +3,34 @@ import { API_CLIENT_CONFIGS, RestClient, ServiceConfig } from '@reyaxyz/common';
3
3
  export type BroadcastTransactionMetadata = {
4
4
  accountName?: string;
5
5
  };
6
+
7
+ export type TxData = {
8
+ from: string;
9
+ to: string;
10
+ data: string;
11
+ value?: string;
12
+ gasLimit: bigint;
13
+ maxPriorityFeePerGas?: bigint;
14
+ maxFeePerGas?: bigint;
15
+ };
6
16
  export class TransactionModule extends RestClient {
7
17
  async executeTransaction(
8
- signedTx: string,
18
+ txData: TxData,
9
19
  contractType: string,
10
20
  metadata: BroadcastTransactionMetadata,
11
21
  ) {
22
+ Object.defineProperty(BigInt.prototype, 'toJSON', {
23
+ get() {
24
+ 'use strict';
25
+ return () => String(this);
26
+ },
27
+ });
12
28
  const uri = `/api/transaction/execute`;
13
29
  return this.post<{ txHash: string }>(
14
30
  uri,
15
31
  {},
16
32
  {
17
- signedTx,
33
+ txData,
18
34
  contractType,
19
35
  metadata,
20
36
  },
@@ -5,6 +5,7 @@ import {
5
5
  BroadcastTransactionMetadata,
6
6
  getTransactionModuleClient,
7
7
  } from '../config';
8
+ import { ReyaChainId } from '@reyaxyz/common';
8
9
 
9
10
  export type Transaction = {
10
11
  from: string;
@@ -22,12 +23,11 @@ export async function estimateGas(
22
23
  ): Promise<
23
24
  Transaction & {
24
25
  gasLimit: bigint;
25
- maxPriorityFeePerGas: bigint;
26
- maxFeePerGas: bigint;
26
+ maxPriorityFeePerGas?: bigint;
27
+ maxFeePerGas?: bigint;
27
28
  }
28
29
  > {
29
30
  const accountAddress = await signer.getAddress();
30
- const nonce = await signer.getNonce();
31
31
 
32
32
  const contractAddress = Object.values(ContractType).includes(
33
33
  targetContract as ContractType,
@@ -39,8 +39,6 @@ export async function estimateGas(
39
39
  to: contractAddress,
40
40
  data,
41
41
  ...(value && value !== '0' ? { value: value } : {}),
42
- chainId: chainId,
43
- nonce,
44
42
  };
45
43
 
46
44
  let gasLimit: bigint = BigInt('5000000'); // hardcode to 5m gas limit if fails to get estimate
@@ -53,9 +51,13 @@ export async function estimateGas(
53
51
  console.warn(error);
54
52
  }
55
53
 
56
- const maxPriorityFeePerGas: bigint = BigInt('0');
57
- const maxFeePerGas: bigint = BigInt('0');
58
- return { ...tx, gasLimit, maxPriorityFeePerGas, maxFeePerGas };
54
+ if (Object.values(ReyaChainId).includes(chainId as ReyaChainId)) {
55
+ const maxPriorityFeePerGas: bigint = BigInt('0');
56
+ const maxFeePerGas: bigint = BigInt('0');
57
+ return { ...tx, gasLimit, maxPriorityFeePerGas, maxFeePerGas };
58
+ }
59
+
60
+ return { ...tx, gasLimit };
59
61
  }
60
62
 
61
63
  export async function executeTransaction(
@@ -98,13 +100,10 @@ export async function signAndBroadcastTransaction(
98
100
  chainId,
99
101
  targetContract,
100
102
  );
101
-
102
103
  try {
103
- const signedTx = await signer.signTransaction(txData);
104
-
105
104
  const transactionModuleClient = getTransactionModuleClient();
106
105
  const { txHash } = await transactionModuleClient.executeTransaction(
107
- signedTx,
106
+ txData,
108
107
  targetContract,
109
108
  metadata,
110
109
  );
@@ -63,7 +63,7 @@ export const withdrawMAAndBridge = async ({
63
63
  scale(corePeripheryTokenInfo.decimals)(unscaledAmount),
64
64
  eip712Signature,
65
65
  BigInt('10000000'),
66
- socketConnectors.deposit,
66
+ socketConnectors.withdraw,
67
67
  receiverAddress,
68
68
  );
69
69
 
@@ -1,14 +1,21 @@
1
1
  import { MethodParameters, MultiAction } from '../../utils/action';
2
- import { encodeRouterCall, encodeSingleTrade } from '../encode';
3
-
4
- export const encodeMatchOrder = (
2
+ import { encodeSingleTrade } from '../encode';
3
+ import { signCoreCommands } from '../sign';
4
+ import { getCurrentTimestampInSeconds } from '@reyaxyz/common';
5
+ import { CORE_DEADLINE_IN_SECONDS, RELAYER_ACCOUNT } from '../../utils/consts';
6
+ import { Interface, Signer } from 'ethers';
7
+ import { abi } from '../../abis/ExecutionModule.json';
8
+ export const encodeMatchOrder = async (
9
+ signer: Signer,
10
+ chainId: number,
11
+ coreSigNonce: number,
5
12
  accountId: number,
6
13
  orderBase: bigint,
7
14
  orderPriceLimit: bigint,
8
15
  counterpartyAccountIds: number[],
9
16
  marketId: number,
10
17
  exchangeId: number,
11
- ): MethodParameters => {
18
+ ): Promise<MethodParameters> => {
12
19
  const multiAction = new MultiAction();
13
20
 
14
21
  encodeSingleTrade(
@@ -19,11 +26,24 @@ export const encodeMatchOrder = (
19
26
  exchangeId,
20
27
  multiAction,
21
28
  );
29
+ const eip712Signature = await signCoreCommands(
30
+ signer,
31
+ chainId,
32
+ RELAYER_ACCOUNT,
33
+ accountId,
34
+ multiAction.commands,
35
+ coreSigNonce + 1,
36
+ getCurrentTimestampInSeconds() + CORE_DEADLINE_IN_SECONDS,
37
+ );
22
38
 
23
39
  const value = BigInt(0);
24
- const call = encodeRouterCall(multiAction, accountId, value);
40
+ const functionSignature = 'executeBySig';
41
+ const parameters = [accountId, multiAction.commands, eip712Signature];
25
42
 
43
+ const INTERFACE = new Interface(abi);
44
+ const calldata = INTERFACE.encodeFunctionData(functionSignature, parameters);
26
45
  return {
27
- ...call,
46
+ calldata: calldata,
47
+ value: BigInt(value).toString(10),
28
48
  };
29
49
  };
@@ -23,8 +23,13 @@ export const matchOrder = async (
23
23
  );
24
24
 
25
25
  const orderBase = scale(18)(params.orderBase);
26
+ const network = await params.signer.provider?.getNetwork();
27
+ const chainId = Number(network?.chainId);
26
28
 
27
- const { calldata: data, value } = encodeMatchOrder(
29
+ const { calldata: data, value } = await encodeMatchOrder(
30
+ params.signer,
31
+ chainId,
32
+ params.owner.coreSigNonce,
28
33
  params.marginAccountId,
29
34
  orderBase,
30
35
  orderPriceLimit,
@@ -33,9 +38,6 @@ export const matchOrder = async (
33
38
  params.market.exchangeId,
34
39
  );
35
40
 
36
- const network = await params.signer.provider?.getNetwork();
37
- const chainId = Number(network?.chainId);
38
-
39
41
  const result = await signAndBroadcastTransaction(
40
42
  params.signer,
41
43
  data,
@@ -63,7 +65,13 @@ export const closeOrder = async (
63
65
  BigNumber(params.orderBase).negated().toNumber(), // used just because of sign
64
66
  );
65
67
 
66
- const { calldata: data, value } = encodeMatchOrder(
68
+ const network = await params.signer.provider?.getNetwork();
69
+ const chainId = Number(network?.chainId);
70
+
71
+ const { calldata: data, value } = await encodeMatchOrder(
72
+ params.signer,
73
+ chainId,
74
+ params.owner.coreSigNonce,
67
75
  params.marginAccountId,
68
76
  BigInt(base),
69
77
  orderPriceLimit,
@@ -72,9 +80,6 @@ export const closeOrder = async (
72
80
  params.market.exchangeId,
73
81
  );
74
82
 
75
- const network = await params.signer.provider?.getNetwork();
76
- const chainId = Number(network?.chainId);
77
-
78
83
  const result = await signAndBroadcastTransaction(
79
84
  params.signer,
80
85
  data,
@@ -2,6 +2,7 @@ import { Signer, JsonRpcSigner } from 'ethers';
2
2
  import {
3
3
  MarginAccountEntity,
4
4
  MarketEntity,
5
+ OwnerMetadataEntity,
5
6
  PositionEntity,
6
7
  } from '@reyaxyz/common';
7
8
 
@@ -14,6 +15,7 @@ export type MarketParams = {
14
15
 
15
16
  export type MatchOrderParams = {
16
17
  signer: Signer | JsonRpcSigner;
18
+ owner: Pick<OwnerMetadataEntity, 'coreSigNonce'>;
17
19
  marginAccountId: MarginAccountEntity['id'];
18
20
  orderBase: number;
19
21
  market: MarketParams;
@@ -21,6 +23,7 @@ export type MatchOrderParams = {
21
23
 
22
24
  export type CloseOrderParams = {
23
25
  signer: Signer | JsonRpcSigner;
26
+ owner: Pick<OwnerMetadataEntity, 'coreSigNonce'>;
24
27
  marginAccountId: MarginAccountEntity['id'];
25
28
  orderBase: PositionEntity['base'];
26
29
  market: MarketParams;
@@ -1 +1,3 @@
1
1
  export const BRIDGE_DEADLINE_IN_SECONDS = 15 * 60; // 15 minutes
2
+ export const CORE_DEADLINE_IN_SECONDS = 60; // 1 minute
3
+ export const RELAYER_ACCOUNT = '0xb43c317c9c9215d268881d7d6b59c2d3d0247da1'; // @todo update value