@reyaxyz/sdk 0.1.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/index.js +4 -1
  2. package/dist/index.js.map +1 -1
  3. package/dist/services/executeTransaction.js +9 -7
  4. package/dist/services/executeTransaction.js.map +1 -1
  5. package/dist/services/lp/index.js +19 -0
  6. package/dist/services/lp/index.js.map +1 -0
  7. package/dist/services/lp/lp.js +3 -2
  8. package/dist/services/lp/lp.js.map +1 -1
  9. package/dist/services/lp/types.js.map +1 -1
  10. package/dist/services/margin-accounts/account.js +2 -1
  11. package/dist/services/margin-accounts/account.js.map +1 -1
  12. package/dist/services/margin-accounts/deposit.js +2 -1
  13. package/dist/services/margin-accounts/deposit.js.map +1 -1
  14. package/dist/services/margin-accounts/index.js +21 -0
  15. package/dist/services/margin-accounts/index.js.map +1 -0
  16. package/dist/services/margin-accounts/types.js.map +1 -1
  17. package/dist/services/margin-accounts/withdraw.js +2 -1
  18. package/dist/services/margin-accounts/withdraw.js.map +1 -1
  19. package/dist/services/orders/index.js +19 -0
  20. package/dist/services/orders/index.js.map +1 -0
  21. package/dist/services/orders/order.js +14 -4
  22. package/dist/services/orders/order.js.map +1 -1
  23. package/dist/services/orders/types.js.map +1 -1
  24. package/dist/services/token/index.js +20 -0
  25. package/dist/services/token/index.js.map +1 -0
  26. package/dist/services/token/types.js.map +1 -1
  27. package/dist/types/index.d.ts +4 -1
  28. package/dist/types/index.d.ts.map +1 -1
  29. package/dist/types/services/executeTransaction.d.ts +4 -3
  30. package/dist/types/services/executeTransaction.d.ts.map +1 -1
  31. package/dist/types/services/lp/index.d.ts +3 -0
  32. package/dist/types/services/lp/index.d.ts.map +1 -0
  33. package/dist/types/services/lp/lp.d.ts.map +1 -1
  34. package/dist/types/services/lp/types.d.ts +3 -3
  35. package/dist/types/services/lp/types.d.ts.map +1 -1
  36. package/dist/types/services/margin-accounts/account.d.ts.map +1 -1
  37. package/dist/types/services/margin-accounts/deposit.d.ts.map +1 -1
  38. package/dist/types/services/margin-accounts/index.d.ts +5 -0
  39. package/dist/types/services/margin-accounts/index.d.ts.map +1 -0
  40. package/dist/types/services/margin-accounts/types.d.ts +4 -4
  41. package/dist/types/services/margin-accounts/types.d.ts.map +1 -1
  42. package/dist/types/services/margin-accounts/withdraw.d.ts.map +1 -1
  43. package/dist/types/services/orders/index.d.ts +3 -0
  44. package/dist/types/services/orders/index.d.ts.map +1 -0
  45. package/dist/types/services/orders/order.d.ts +2 -2
  46. package/dist/types/services/orders/order.d.ts.map +1 -1
  47. package/dist/types/services/orders/types.d.ts +14 -9
  48. package/dist/types/services/orders/types.d.ts.map +1 -1
  49. package/dist/types/services/token/index.d.ts +4 -0
  50. package/dist/types/services/token/index.d.ts.map +1 -0
  51. package/dist/types/services/token/types.d.ts +3 -3
  52. package/dist/types/services/token/types.d.ts.map +1 -1
  53. package/dist/types/utils/consts.d.ts +8 -0
  54. package/dist/types/utils/consts.d.ts.map +1 -0
  55. package/dist/types/utils/trade.d.ts +3 -0
  56. package/dist/types/utils/trade.d.ts.map +1 -0
  57. package/dist/utils/consts.js +12 -0
  58. package/dist/utils/consts.js.map +1 -0
  59. package/dist/utils/trade.js +27 -0
  60. package/dist/utils/trade.js.map +1 -0
  61. package/package.json +2 -2
  62. package/src/index.ts +4 -1
  63. package/src/services/executeTransaction.ts +18 -6
  64. package/src/services/lp/index.ts +2 -0
  65. package/src/services/lp/lp.ts +3 -0
  66. package/src/services/lp/types.ts +3 -3
  67. package/src/services/margin-accounts/account.ts +2 -0
  68. package/src/services/margin-accounts/deposit.ts +2 -0
  69. package/src/services/margin-accounts/index.ts +4 -0
  70. package/src/services/margin-accounts/types.ts +4 -4
  71. package/src/services/margin-accounts/withdraw.ts +2 -0
  72. package/src/services/orders/index.ts +2 -0
  73. package/src/services/orders/order.ts +35 -11
  74. package/src/services/orders/types.ts +16 -9
  75. package/src/services/token/index.ts +3 -0
  76. package/src/services/token/types.ts +3 -3
  77. package/src/utils/consts.ts +7 -0
  78. package/src/utils/trade.ts +31 -0
package/dist/index.js CHANGED
@@ -14,5 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./utils/action"), exports);
17
+ __exportStar(require("./services/lp"), exports);
18
+ __exportStar(require("./services/margin-accounts"), exports);
19
+ __exportStar(require("./services/orders"), exports);
20
+ __exportStar(require("./services/token"), exports);
18
21
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B","sourcesContent":["export * from './utils/action';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,6DAA2C;AAC3C,oDAAkC;AAClC,mDAAiC","sourcesContent":["export * from './services/lp';\nexport * from './services/margin-accounts';\nexport * from './services/orders';\nexport * from './services/token';\n"]}
@@ -49,17 +49,19 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
49
49
  Object.defineProperty(exports, "__esModule", { value: true });
50
50
  exports.executeTransaction = exports.estimateGas = void 0;
51
51
  var txHelpers_1 = require("../utils/txHelpers");
52
- function estimateGas(signer, data, value, chainId) {
52
+ var contractAddresses_1 = require("../utils/contractAddresses");
53
+ var consts_1 = require("../utils/consts");
54
+ function estimateGas(signer, data, value, chainId, transactionType) {
53
55
  return __awaiter(this, void 0, void 0, function () {
54
56
  var accountAddress, contractAddress, tx, gasLimit, gasEstimate, error_1;
55
57
  return __generator(this, function (_a) {
56
58
  switch (_a.label) {
57
- case 0:
58
- console.log(chainId); // @todo remove chainId if obsolete
59
- return [4 /*yield*/, signer.getAddress()];
59
+ case 0: return [4 /*yield*/, signer.getAddress()];
60
60
  case 1:
61
61
  accountAddress = _a.sent();
62
- contractAddress = "0xdb8cd625873ca9d7b6529ffafe5ecdd3746708b4";
62
+ contractAddress = transactionType === consts_1.TransactionType.LP
63
+ ? (0, contractAddresses_1.getAddress)(chainId, 'passive_pool_proxy')
64
+ : (0, contractAddresses_1.getAddress)(chainId, 'core_proxy');
63
65
  tx = __assign({ from: accountAddress, to: contractAddress, data: data }, (value && value !== '0' ? { value: value } : {}));
64
66
  _a.label = 2;
65
67
  case 2:
@@ -79,12 +81,12 @@ function estimateGas(signer, data, value, chainId) {
79
81
  });
80
82
  }
81
83
  exports.estimateGas = estimateGas;
82
- function executeTransaction(signer, data, value, chainId) {
84
+ function executeTransaction(signer, data, value, chainId, transactionType) {
83
85
  return __awaiter(this, void 0, void 0, function () {
84
86
  var txData, txResponse, txReceipt, error_2;
85
87
  return __generator(this, function (_a) {
86
88
  switch (_a.label) {
87
- case 0: return [4 /*yield*/, estimateGas(signer, data, value, chainId)];
89
+ case 0: return [4 /*yield*/, estimateGas(signer, data, value, chainId, transactionType)];
88
90
  case 1:
89
91
  txData = _a.sent();
90
92
  _a.label = 2;
@@ -1 +1 @@
1
- {"version":3,"file":"executeTransaction.js","sourceRoot":"/","sources":["services/executeTransaction.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gDAAkD;AASlD,SAAsB,WAAW,CAC/B,MAAc,EACd,IAAY,EACZ,KAAa,EACb,OAAe;;;;;;oBAEf,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,mCAAmC;oBAClC,qBAAM,MAAM,CAAC,UAAU,EAAE,EAAA;;oBAA1C,cAAc,GAAG,SAAyB;oBAC1C,eAAe,GAAG,4CAA4C,CAAC;oBAC/D,EAAE,cACN,IAAI,EAAE,cAAc,EACpB,EAAE,EAAE,eAAe,EACnB,IAAI,MAAA,IACD,CAAC,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACpD,CAAC;;;;oBAKoB,qBAAM,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,EAAA;;oBAA1C,WAAW,GAAG,SAA4B;oBAChD,QAAQ,GAAG,IAAA,wBAAY,EAAC,WAAW,CAAC,CAAC;;;;oBAErC,OAAO,CAAC,IAAI,CAAC,OAAK,CAAC,CAAC;oBACpB,MAAM,IAAI,KAAK,CAAC,OAAe,CAAC,CAAC;wBAEnC,4CAAY,EAAE,KAAE,QAAQ,UAAA,KAAG;;;;CAC5B;AA1BD,kCA0BC;AAED,SAAsB,kBAAkB,CACtC,MAAc,EACd,IAAY,EACZ,KAAa,EACb,OAAe;;;;;wBAEA,qBAAM,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,EAAA;;oBAAxD,MAAM,GAAG,SAA+C;;;;oBAEzC,qBAAM,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,EAAA;;oBAAjD,UAAU,GAAG,SAAoC;oBACrC,qBAAM,UAAU,CAAC,IAAI,EAAE,EAAA;;oBAAnC,SAAS,GAAG,SAAuB;oBACzC,sBAAO,SAAS,EAAC;;;oBAEjB,OAAO,CAAC,IAAI,CAAC,OAAK,CAAC,CAAC;oBACpB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;;;;;CAElD;AAfD,gDAeC","sourcesContent":["import { Signer } from 'ethers';\nimport { getGasBuffer } from '../utils/txHelpers';\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,\n data: string,\n value: string,\n chainId: number,\n): Promise<Transaction & { gasLimit: bigint }> {\n console.log(chainId); // @todo remove chainId if obsolete\n const accountAddress = await signer.getAddress();\n const contractAddress = `0xdb8cd625873ca9d7b6529ffafe5ecdd3746708b4`; // @todo Define after deployment\n const tx = {\n from: accountAddress,\n to: contractAddress,\n data,\n ...(value && value !== '0' ? { value: value } : {}),\n };\n\n let gasLimit: bigint;\n\n try {\n const gasEstimate = await signer.estimateGas(tx);\n gasLimit = getGasBuffer(gasEstimate);\n } catch (error) {\n console.warn(error);\n throw new Error(error as string);\n }\n return { ...tx, gasLimit };\n}\n\nexport async function executeTransaction(\n signer: Signer,\n data: string,\n value: string,\n chainId: number,\n) {\n const txData = await estimateGas(signer, data, value, chainId);\n try {\n const txResponse = await signer.sendTransaction(txData);\n const txReceipt = await txResponse.wait(); // @todo Check what was reasoning behind this since this function waits until transaction is minted\n return txReceipt;\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gDAAkD;AAClD,gEAAwD;AACxD,0CAAkD;AASlD,SAAsB,WAAW,CAC/B,MAA8B,EAC9B,IAAY,EACZ,KAAa,EACb,OAAe,EACf,eAAgC;;;;;wBAET,qBAAM,MAAM,CAAC,UAAU,EAAE,EAAA;;oBAA1C,cAAc,GAAG,SAAyB;oBAC1C,eAAe,GACnB,eAAe,KAAK,wBAAe,CAAC,EAAE;wBACpC,CAAC,CAAC,IAAA,8BAAU,EAAC,OAAO,EAAE,oBAAoB,CAAC;wBAC3C,CAAC,CAAC,IAAA,8BAAU,EAAC,OAAO,EAAE,YAAY,CAAC,CAAC;oBAClC,EAAE,cACN,IAAI,EAAE,cAAc,EACpB,EAAE,EAAE,eAAe,EACnB,IAAI,MAAA,IACD,CAAC,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACpD,CAAC;;;;oBAKoB,qBAAM,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,EAAA;;oBAA1C,WAAW,GAAG,SAA4B;oBAChD,QAAQ,GAAG,IAAA,wBAAY,EAAC,WAAW,CAAC,CAAC;;;;oBAErC,OAAO,CAAC,IAAI,CAAC,OAAK,CAAC,CAAC;oBACpB,MAAM,IAAI,KAAK,CAAC,OAAe,CAAC,CAAC;wBAEnC,4CAAY,EAAE,KAAE,QAAQ,UAAA,KAAG;;;;CAC5B;AA7BD,kCA6BC;AAED,SAAsB,kBAAkB,CACtC,MAA8B,EAC9B,IAAY,EACZ,KAAa,EACb,OAAe,EACf,eAAgC;;;;;wBAEjB,qBAAM,WAAW,CAC9B,MAAM,EACN,IAAI,EACJ,KAAK,EACL,OAAO,EACP,eAAe,CAChB,EAAA;;oBANK,MAAM,GAAG,SAMd;;;;oBAEoB,qBAAM,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,EAAA;;oBAAjD,UAAU,GAAG,SAAoC;oBACrC,qBAAM,UAAU,CAAC,IAAI,EAAE,EAAA;;oBAAnC,SAAS,GAAG,SAAuB;oBACzC,sBAAO,SAAS,EAAC;;;oBAEjB,OAAO,CAAC,IAAI,CAAC,OAAK,CAAC,CAAC;oBACpB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;;;;;CAElD;AAtBD,gDAsBC","sourcesContent":["import { JsonRpcSigner, Signer } from 'ethers';\nimport { getGasBuffer } from '../utils/txHelpers';\nimport { getAddress } from '../utils/contractAddresses';\nimport { TransactionType } from '../utils/consts';\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 transactionType: TransactionType,\n): Promise<Transaction & { gasLimit: bigint }> {\n const accountAddress = await signer.getAddress();\n const contractAddress =\n transactionType === TransactionType.LP\n ? getAddress(chainId, 'passive_pool_proxy')\n : getAddress(chainId, 'core_proxy');\n const tx = {\n from: accountAddress,\n to: contractAddress,\n data,\n ...(value && value !== '0' ? { value: value } : {}),\n };\n\n let gasLimit: bigint;\n\n try {\n const gasEstimate = await signer.estimateGas(tx);\n gasLimit = getGasBuffer(gasEstimate);\n } catch (error) {\n console.warn(error);\n throw new Error(error as string);\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 transactionType: TransactionType,\n) {\n const txData = await estimateGas(\n signer,\n data,\n value,\n chainId,\n transactionType,\n );\n try {\n const txResponse = await signer.sendTransaction(txData);\n const txReceipt = await txResponse.wait(); // @todo Check what was reasoning behind this since this function waits until transaction is minted\n return txReceipt;\n } catch (error) {\n console.warn(error);\n throw new Error('Transaction Execution Error');\n }\n}\n"]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./lp"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["services/lp/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,uCAAqB","sourcesContent":["export * from './types';\nexport * from './lp';\n"]}
@@ -39,13 +39,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.removeLiquidity = exports.provideLiquidity = void 0;
40
40
  var executeTransaction_1 = require("../executeTransaction");
41
41
  var encode_1 = require("./encode");
42
+ var consts_1 = require("../../utils/consts");
42
43
  var provideLiquidity = function (params) { return __awaiter(void 0, void 0, void 0, function () {
43
44
  var _a, data, value, result;
44
45
  return __generator(this, function (_b) {
45
46
  switch (_b.label) {
46
47
  case 0:
47
48
  _a = (0, encode_1.encodeProvideLiquidityCall)(params.poolId, params.owner, params.amount, params.minShares), data = _a.calldata, value = _a.value;
48
- return [4 /*yield*/, (0, executeTransaction_1.executeTransaction)(params.signer, data, value, params.chainId)];
49
+ return [4 /*yield*/, (0, executeTransaction_1.executeTransaction)(params.signer, data, value, params.chainId, consts_1.TransactionType.LP)];
49
50
  case 1:
50
51
  result = _b.sent();
51
52
  return [2 /*return*/, result];
@@ -59,7 +60,7 @@ var removeLiquidity = function (params) { return __awaiter(void 0, void 0, void
59
60
  switch (_b.label) {
60
61
  case 0:
61
62
  _a = (0, encode_1.encodeRemoveLiquidityCall)(params.poolId, params.sharesAmount, params.minOut), data = _a.calldata, value = _a.value;
62
- return [4 /*yield*/, (0, executeTransaction_1.executeTransaction)(params.signer, data, value, params.chainId)];
63
+ return [4 /*yield*/, (0, executeTransaction_1.executeTransaction)(params.signer, data, value, params.chainId, consts_1.TransactionType.LP)];
63
64
  case 1:
64
65
  result = _b.sent();
65
66
  return [2 /*return*/, result];
@@ -1 +1 @@
1
- {"version":3,"file":"lp.js","sourceRoot":"/","sources":["services/lp/lp.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAA2D;AAC3D,mCAGkB;AAGX,IAAM,gBAAgB,GAAG,UAC9B,MAA4B;;;;;gBAGtB,KAA4B,IAAA,mCAA0B,EAC1D,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,SAAS,CACjB,EALiB,IAAI,cAAA,EAAE,KAAK,WAAA,CAK3B;gBAEa,qBAAM,IAAA,uCAAkB,EACrC,MAAM,CAAC,MAAM,EACb,IAAI,EACJ,KAAK,EACL,MAAM,CAAC,OAAO,CACf,EAAA;;gBALK,MAAM,GAAG,SAKd;gBAED,sBAAO,MAAM,EAAC;;;KACf,CAAC;AAnBW,QAAA,gBAAgB,oBAmB3B;AAEK,IAAM,eAAe,GAAG,UAC7B,MAA2B;;;;;gBAGrB,KAA4B,IAAA,kCAAyB,EACzD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,MAAM,CACd,EAJiB,IAAI,cAAA,EAAE,KAAK,WAAA,CAI3B;gBAEa,qBAAM,IAAA,uCAAkB,EACrC,MAAM,CAAC,MAAM,EACb,IAAI,EACJ,KAAK,EACL,MAAM,CAAC,OAAO,CACf,EAAA;;gBALK,MAAM,GAAG,SAKd;gBAED,sBAAO,MAAM,EAAC;;;KACf,CAAC;AAlBW,QAAA,eAAe,mBAkB1B","sourcesContent":["import { executeTransaction } from '../executeTransaction';\nimport {\n encodeProvideLiquidityCall,\n encodeRemoveLiquidityCall,\n} from './encode';\nimport { ProvideLiquidityArgs, RemoveLiquidityArgs } from './types';\n\nexport const provideLiquidity = async (\n params: ProvideLiquidityArgs,\n): Promise<unknown> => {\n // @todo update type once we agree on the structure\n const { calldata: data, value } = encodeProvideLiquidityCall(\n params.poolId,\n params.owner,\n params.amount,\n params.minShares,\n );\n\n const result = await executeTransaction(\n params.signer,\n data,\n value,\n params.chainId,\n );\n\n return result;\n};\n\nexport const removeLiquidity = async (\n params: RemoveLiquidityArgs,\n): Promise<unknown> => {\n // @todo update type once we agree on the structure\n const { calldata: data, value } = encodeRemoveLiquidityCall(\n params.poolId,\n params.sharesAmount,\n params.minOut,\n );\n\n const result = await executeTransaction(\n params.signer,\n data,\n value,\n params.chainId,\n );\n\n return result;\n};\n"]}
1
+ {"version":3,"file":"lp.js","sourceRoot":"/","sources":["services/lp/lp.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAA2D;AAC3D,mCAGkB;AAElB,6CAAqD;AAE9C,IAAM,gBAAgB,GAAG,UAC9B,MAA4B;;;;;gBAGtB,KAA4B,IAAA,mCAA0B,EAC1D,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,SAAS,CACjB,EALiB,IAAI,cAAA,EAAE,KAAK,WAAA,CAK3B;gBAEa,qBAAM,IAAA,uCAAkB,EACrC,MAAM,CAAC,MAAM,EACb,IAAI,EACJ,KAAK,EACL,MAAM,CAAC,OAAO,EACd,wBAAe,CAAC,EAAE,CACnB,EAAA;;gBANK,MAAM,GAAG,SAMd;gBAED,sBAAO,MAAM,EAAC;;;KACf,CAAC;AApBW,QAAA,gBAAgB,oBAoB3B;AAEK,IAAM,eAAe,GAAG,UAC7B,MAA2B;;;;;gBAGrB,KAA4B,IAAA,kCAAyB,EACzD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,MAAM,CACd,EAJiB,IAAI,cAAA,EAAE,KAAK,WAAA,CAI3B;gBAEa,qBAAM,IAAA,uCAAkB,EACrC,MAAM,CAAC,MAAM,EACb,IAAI,EACJ,KAAK,EACL,MAAM,CAAC,OAAO,EACd,wBAAe,CAAC,EAAE,CACnB,EAAA;;gBANK,MAAM,GAAG,SAMd;gBAED,sBAAO,MAAM,EAAC;;;KACf,CAAC;AAnBW,QAAA,eAAe,mBAmB1B","sourcesContent":["import { executeTransaction } from '../executeTransaction';\nimport {\n encodeProvideLiquidityCall,\n encodeRemoveLiquidityCall,\n} from './encode';\nimport { ProvideLiquidityArgs, RemoveLiquidityArgs } from './types';\nimport { TransactionType } from '../../utils/consts';\n\nexport const provideLiquidity = async (\n params: ProvideLiquidityArgs,\n): Promise<unknown> => {\n // @todo update type once we agree on the structure\n const { calldata: data, value } = encodeProvideLiquidityCall(\n params.poolId,\n params.owner,\n params.amount,\n params.minShares,\n );\n\n const result = await executeTransaction(\n params.signer,\n data,\n value,\n params.chainId,\n TransactionType.LP,\n );\n\n return result;\n};\n\nexport const removeLiquidity = async (\n params: RemoveLiquidityArgs,\n): Promise<unknown> => {\n // @todo update type once we agree on the structure\n const { calldata: data, value } = encodeRemoveLiquidityCall(\n params.poolId,\n params.sharesAmount,\n params.minOut,\n );\n\n const result = await executeTransaction(\n params.signer,\n data,\n value,\n params.chainId,\n TransactionType.LP,\n );\n\n return result;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"/","sources":["services/lp/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Signer } from 'ethers';\n\nexport type ProvideLiquidityArgs = {\n signer: Signer;\n chainId: number;\n poolId: number;\n owner: string;\n amount: number;\n minShares: number;\n};\n\nexport type RemoveLiquidityArgs = {\n signer: Signer;\n chainId: number;\n poolId: number;\n sharesAmount: number;\n minOut: number;\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"/","sources":["services/lp/types.ts"],"names":[],"mappings":"","sourcesContent":["import { JsonRpcSigner, Signer } from 'ethers';\n\nexport type ProvideLiquidityArgs = {\n signer: Signer | JsonRpcSigner;\n chainId: number;\n poolId: number;\n owner: string;\n amount: number;\n minShares: number;\n};\n\nexport type RemoveLiquidityArgs = {\n signer: Signer | JsonRpcSigner;\n chainId: number;\n poolId: number;\n sharesAmount: number;\n minOut: number;\n};\n"]}
@@ -39,13 +39,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.createAccount = void 0;
40
40
  var executeTransaction_1 = require("../executeTransaction");
41
41
  var encode_1 = require("./encode");
42
+ var consts_1 = require("../../utils/consts");
42
43
  var createAccount = function (params) { return __awaiter(void 0, void 0, void 0, function () {
43
44
  var _a, data, value, result;
44
45
  return __generator(this, function (_b) {
45
46
  switch (_b.label) {
46
47
  case 0:
47
48
  _a = (0, encode_1.encodeCreateAccountCall)(params.ownerAddress), data = _a.calldata, value = _a.value;
48
- return [4 /*yield*/, (0, executeTransaction_1.executeTransaction)(params.signer, data, value, params.chainId)];
49
+ return [4 /*yield*/, (0, executeTransaction_1.executeTransaction)(params.signer, data, value, params.chainId, consts_1.TransactionType.CREATE_ACCOUNT)];
49
50
  case 1:
50
51
  result = _b.sent();
51
52
  return [2 /*return*/, result];
@@ -1 +1 @@
1
- {"version":3,"file":"account.js","sourceRoot":"/","sources":["services/margin-accounts/account.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAA2D;AAC3D,mCAAmD;AAG5C,IAAM,aAAa,GAAG,UAC3B,MAAyB;;;;;gBAGnB,KAA4B,IAAA,gCAAuB,EACvD,MAAM,CAAC,YAAY,CACpB,EAFiB,IAAI,cAAA,EAAE,KAAK,WAAA,CAE3B;gBAEa,qBAAM,IAAA,uCAAkB,EACrC,MAAM,CAAC,MAAM,EACb,IAAI,EACJ,KAAK,EACL,MAAM,CAAC,OAAO,CACf,EAAA;;gBALK,MAAM,GAAG,SAKd;gBAED,sBAAO,MAAM,EAAC;;;KACf,CAAC;AAhBW,QAAA,aAAa,iBAgBxB","sourcesContent":["import { executeTransaction } from '../executeTransaction';\nimport { encodeCreateAccountCall } from './encode';\nimport { CreateAccountArgs } from './types';\n\nexport const createAccount = async (\n params: CreateAccountArgs,\n): Promise<unknown> => {\n // @todo update type once we agree on the structure\n const { calldata: data, value } = encodeCreateAccountCall(\n params.ownerAddress,\n );\n\n const result = await executeTransaction(\n params.signer,\n data,\n value,\n params.chainId,\n );\n\n return result;\n};\n"]}
1
+ {"version":3,"file":"account.js","sourceRoot":"/","sources":["services/margin-accounts/account.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAA2D;AAC3D,mCAAmD;AAEnD,6CAAqD;AAE9C,IAAM,aAAa,GAAG,UAC3B,MAAyB;;;;;gBAGnB,KAA4B,IAAA,gCAAuB,EACvD,MAAM,CAAC,YAAY,CACpB,EAFiB,IAAI,cAAA,EAAE,KAAK,WAAA,CAE3B;gBAEa,qBAAM,IAAA,uCAAkB,EACrC,MAAM,CAAC,MAAM,EACb,IAAI,EACJ,KAAK,EACL,MAAM,CAAC,OAAO,EACd,wBAAe,CAAC,cAAc,CAC/B,EAAA;;gBANK,MAAM,GAAG,SAMd;gBAED,sBAAO,MAAM,EAAC;;;KACf,CAAC;AAjBW,QAAA,aAAa,iBAiBxB","sourcesContent":["import { executeTransaction } from '../executeTransaction';\nimport { encodeCreateAccountCall } from './encode';\nimport { CreateAccountArgs } from './types';\nimport { TransactionType } from '../../utils/consts';\n\nexport const createAccount = async (\n params: CreateAccountArgs,\n): Promise<unknown> => {\n // @todo update type once we agree on the structure\n const { calldata: data, value } = encodeCreateAccountCall(\n params.ownerAddress,\n );\n\n const result = await executeTransaction(\n params.signer,\n data,\n value,\n params.chainId,\n TransactionType.CREATE_ACCOUNT,\n );\n\n return result;\n};\n"]}
@@ -39,13 +39,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.deposit = void 0;
40
40
  var encode_1 = require("./encode");
41
41
  var executeTransaction_1 = require("../executeTransaction");
42
+ var consts_1 = require("../../utils/consts");
42
43
  var deposit = function (params) { return __awaiter(void 0, void 0, void 0, function () {
43
44
  var _a, data, value, result;
44
45
  return __generator(this, function (_b) {
45
46
  switch (_b.label) {
46
47
  case 0:
47
48
  _a = (0, encode_1.encodeDeposit)(params.accountId, params.token, params.amount, params.marketId, params.exchangeId), data = _a.calldata, value = _a.value;
48
- return [4 /*yield*/, (0, executeTransaction_1.executeTransaction)(params.signer, data, value, params.chainId)];
49
+ return [4 /*yield*/, (0, executeTransaction_1.executeTransaction)(params.signer, data, value, params.chainId, consts_1.TransactionType.DEPOSIT)];
49
50
  case 1:
50
51
  result = _b.sent();
51
52
  return [2 /*return*/, result];
@@ -1 +1 @@
1
- {"version":3,"file":"deposit.js","sourceRoot":"/","sources":["services/margin-accounts/deposit.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mCAAyC;AACzC,4DAA2D;AAEpD,IAAM,OAAO,GAAG,UAAO,MAAmB;;;;;gBAEzC,KAA4B,IAAA,sBAAa,EAC7C,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,UAAU,CAClB,EANiB,IAAI,cAAA,EAAE,KAAK,WAAA,CAM3B;gBAEa,qBAAM,IAAA,uCAAkB,EACrC,MAAM,CAAC,MAAM,EACb,IAAI,EACJ,KAAK,EACL,MAAM,CAAC,OAAO,CACf,EAAA;;gBALK,MAAM,GAAG,SAKd;gBAED,sBAAO,MAAM,EAAC;;;KACf,CAAC;AAlBW,QAAA,OAAO,WAkBlB","sourcesContent":["import { DepositArgs } from './types';\nimport { encodeDeposit } from './encode';\nimport { executeTransaction } from '../executeTransaction';\n\nexport const deposit = async (params: DepositArgs): Promise<unknown> => {\n // @todo update type once we agree on the structure\n const { calldata: data, value } = encodeDeposit(\n params.accountId,\n params.token,\n params.amount,\n params.marketId,\n params.exchangeId,\n );\n\n const result = await executeTransaction(\n params.signer,\n data,\n value,\n params.chainId,\n );\n\n return result;\n};\n"]}
1
+ {"version":3,"file":"deposit.js","sourceRoot":"/","sources":["services/margin-accounts/deposit.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mCAAyC;AACzC,4DAA2D;AAC3D,6CAAqD;AAE9C,IAAM,OAAO,GAAG,UAAO,MAAmB;;;;;gBAEzC,KAA4B,IAAA,sBAAa,EAC7C,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,UAAU,CAClB,EANiB,IAAI,cAAA,EAAE,KAAK,WAAA,CAM3B;gBAEa,qBAAM,IAAA,uCAAkB,EACrC,MAAM,CAAC,MAAM,EACb,IAAI,EACJ,KAAK,EACL,MAAM,CAAC,OAAO,EACd,wBAAe,CAAC,OAAO,CACxB,EAAA;;gBANK,MAAM,GAAG,SAMd;gBAED,sBAAO,MAAM,EAAC;;;KACf,CAAC;AAnBW,QAAA,OAAO,WAmBlB","sourcesContent":["import { DepositArgs } from './types';\nimport { encodeDeposit } from './encode';\nimport { executeTransaction } from '../executeTransaction';\nimport { TransactionType } from '../../utils/consts';\n\nexport const deposit = async (params: DepositArgs): Promise<unknown> => {\n // @todo update type once we agree on the structure\n const { calldata: data, value } = encodeDeposit(\n params.accountId,\n params.token,\n params.amount,\n params.marketId,\n params.exchangeId,\n );\n\n const result = await executeTransaction(\n params.signer,\n data,\n value,\n params.chainId,\n TransactionType.DEPOSIT,\n );\n\n return result;\n};\n"]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./account"), exports);
19
+ __exportStar(require("./deposit"), exports);
20
+ __exportStar(require("./withdraw"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["services/margin-accounts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B;AAC1B,4CAA0B;AAC1B,6CAA2B","sourcesContent":["export * from './types';\nexport * from './account';\nexport * from './deposit';\nexport * from './withdraw';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"/","sources":["services/margin-accounts/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Signer } from 'ethers';\n\nexport type CreateAccountArgs = {\n signer: Signer;\n chainId: number;\n ownerAddress: string;\n};\n\nexport type DepositArgs = {\n signer: Signer;\n chainId: number;\n accountId: number;\n token: string;\n amount: bigint;\n marketId: number;\n exchangeId: number;\n};\n\nexport type WithdrawArgs = {\n signer: Signer;\n chainId: number;\n accountId: number;\n token: string;\n amount: bigint;\n marketId: number;\n exchangeId: number;\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"/","sources":["services/margin-accounts/types.ts"],"names":[],"mappings":"","sourcesContent":["import { JsonRpcSigner, Signer } from 'ethers';\n\nexport type CreateAccountArgs = {\n signer: Signer | JsonRpcSigner;\n chainId: number;\n ownerAddress: string;\n};\n\nexport type DepositArgs = {\n signer: Signer | JsonRpcSigner;\n chainId: number;\n accountId: number;\n token: string;\n amount: bigint;\n marketId: number;\n exchangeId: number;\n};\n\nexport type WithdrawArgs = {\n signer: Signer | JsonRpcSigner;\n chainId: number;\n accountId: number;\n token: string;\n amount: bigint;\n marketId: number;\n exchangeId: number;\n};\n"]}
@@ -39,13 +39,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.withdraw = void 0;
40
40
  var encode_1 = require("./encode");
41
41
  var executeTransaction_1 = require("../executeTransaction");
42
+ var consts_1 = require("../../utils/consts");
42
43
  var withdraw = function (params) { return __awaiter(void 0, void 0, void 0, function () {
43
44
  var _a, data, value, result;
44
45
  return __generator(this, function (_b) {
45
46
  switch (_b.label) {
46
47
  case 0:
47
48
  _a = (0, encode_1.encodeWithdraw)(params.accountId, params.token, params.amount, params.marketId, params.exchangeId), data = _a.calldata, value = _a.value;
48
- return [4 /*yield*/, (0, executeTransaction_1.executeTransaction)(params.signer, data, value, params.chainId)];
49
+ return [4 /*yield*/, (0, executeTransaction_1.executeTransaction)(params.signer, data, value, params.chainId, consts_1.TransactionType.WITHDRAW)];
49
50
  case 1:
50
51
  result = _b.sent();
51
52
  return [2 /*return*/, result];
@@ -1 +1 @@
1
- {"version":3,"file":"withdraw.js","sourceRoot":"/","sources":["services/margin-accounts/withdraw.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mCAA0C;AAC1C,4DAA2D;AAEpD,IAAM,QAAQ,GAAG,UAAO,MAAoB;;;;;gBAE3C,KAA4B,IAAA,uBAAc,EAC9C,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,UAAU,CAClB,EANiB,IAAI,cAAA,EAAE,KAAK,WAAA,CAM3B;gBAEa,qBAAM,IAAA,uCAAkB,EACrC,MAAM,CAAC,MAAM,EACb,IAAI,EACJ,KAAK,EACL,MAAM,CAAC,OAAO,CACf,EAAA;;gBALK,MAAM,GAAG,SAKd;gBAED,sBAAO,MAAM,EAAC;;;KACf,CAAC;AAlBW,QAAA,QAAQ,YAkBnB","sourcesContent":["import { WithdrawArgs } from './types';\nimport { encodeWithdraw } from './encode';\nimport { executeTransaction } from '../executeTransaction';\n\nexport const withdraw = async (params: WithdrawArgs): Promise<unknown> => {\n // @todo update type once we agree on the structure\n const { calldata: data, value } = encodeWithdraw(\n params.accountId,\n params.token,\n params.amount,\n params.marketId,\n params.exchangeId,\n );\n\n const result = await executeTransaction(\n params.signer,\n data,\n value,\n params.chainId,\n );\n\n return result;\n};\n"]}
1
+ {"version":3,"file":"withdraw.js","sourceRoot":"/","sources":["services/margin-accounts/withdraw.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mCAA0C;AAC1C,4DAA2D;AAC3D,6CAAqD;AAE9C,IAAM,QAAQ,GAAG,UAAO,MAAoB;;;;;gBAE3C,KAA4B,IAAA,uBAAc,EAC9C,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,UAAU,CAClB,EANiB,IAAI,cAAA,EAAE,KAAK,WAAA,CAM3B;gBAEa,qBAAM,IAAA,uCAAkB,EACrC,MAAM,CAAC,MAAM,EACb,IAAI,EACJ,KAAK,EACL,MAAM,CAAC,OAAO,EACd,wBAAe,CAAC,QAAQ,CACzB,EAAA;;gBANK,MAAM,GAAG,SAMd;gBAED,sBAAO,MAAM,EAAC;;;KACf,CAAC;AAnBW,QAAA,QAAQ,YAmBnB","sourcesContent":["import { WithdrawArgs } from './types';\nimport { encodeWithdraw } from './encode';\nimport { executeTransaction } from '../executeTransaction';\nimport { TransactionType } from '../../utils/consts';\n\nexport const withdraw = async (params: WithdrawArgs): Promise<unknown> => {\n // @todo update type once we agree on the structure\n const { calldata: data, value } = encodeWithdraw(\n params.accountId,\n params.token,\n params.amount,\n params.marketId,\n params.exchangeId,\n );\n\n const result = await executeTransaction(\n params.signer,\n data,\n value,\n params.chainId,\n TransactionType.WITHDRAW,\n );\n\n return result;\n};\n"]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./order"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["services/orders/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,0CAAwB","sourcesContent":["export * from './types';\nexport * from './order';\n"]}
@@ -39,16 +39,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.matchOrder = void 0;
40
40
  var encode_1 = require("./encode");
41
41
  var executeTransaction_1 = require("../executeTransaction");
42
+ var consts_1 = require("../../utils/consts");
43
+ var trade_1 = require("../../utils/trade");
42
44
  var matchOrder = function (params) { return __awaiter(void 0, void 0, void 0, function () {
43
- var _a, data, value, result;
45
+ var orderPriceLimit, orderBase, _a, data, value, chainId, result;
44
46
  return __generator(this, function (_b) {
45
47
  switch (_b.label) {
46
48
  case 0:
47
- _a = (0, encode_1.encodeMatchOrder)(params.accountId, params.orderBase, params.orderPriceLimit, params.counterpartyAccountIds, params.marketId, params.exchangeId), data = _a.calldata, value = _a.value;
48
- return [4 /*yield*/, (0, executeTransaction_1.executeTransaction)(params.signer, data, value, params.chainId)];
49
+ if (params.orderSize === BigInt(0)) {
50
+ throw new Error('Position size can not be 0');
51
+ }
52
+ orderPriceLimit = (0, trade_1.calculatePriceLimitForTrade)(params.market.currentPrice, params.orderSize);
53
+ orderBase = (0, trade_1.calculateOrderBaseFromOrderSize)(params.orderSize, params.market.currentPrice);
54
+ _a = (0, encode_1.encodeMatchOrder)(params.marginAccountId, orderBase, orderPriceLimit, params.market.counterpartyAccountIds, params.market.id, params.market.exchangeId), data = _a.calldata, value = _a.value;
55
+ chainId = 80001;
56
+ return [4 /*yield*/, (0, executeTransaction_1.executeTransaction)(params.signer, data, value, chainId, consts_1.TransactionType.TRADE)];
49
57
  case 1:
50
58
  result = _b.sent();
51
- return [2 /*return*/, result];
59
+ return [2 /*return*/, {
60
+ transactionHash: (result === null || result === void 0 ? void 0 : result.hash) || null,
61
+ }];
52
62
  }
53
63
  });
54
64
  }); };
@@ -1 +1 @@
1
- {"version":3,"file":"order.js","sourceRoot":"/","sources":["services/orders/order.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mCAA4C;AAC5C,4DAA2D;AAEpD,IAAM,UAAU,GAAG,UAAO,MAAsB;;;;;gBAE/C,KAA4B,IAAA,yBAAgB,EAChD,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,sBAAsB,EAC7B,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,UAAU,CAClB,EAPiB,IAAI,cAAA,EAAE,KAAK,WAAA,CAO3B;gBAEa,qBAAM,IAAA,uCAAkB,EACrC,MAAM,CAAC,MAAM,EACb,IAAI,EACJ,KAAK,EACL,MAAM,CAAC,OAAO,CACf,EAAA;;gBALK,MAAM,GAAG,SAKd;gBAED,sBAAO,MAAM,EAAC;;;KACf,CAAC;AAnBW,QAAA,UAAU,cAmBrB","sourcesContent":["import { MatchOrderArgs } from './types';\nimport { encodeMatchOrder } from './encode';\nimport { executeTransaction } from '../executeTransaction';\n\nexport const matchOrder = async (params: MatchOrderArgs): Promise<unknown> => {\n // @todo update type once we agree on the structure\n const { calldata: data, value } = encodeMatchOrder(\n params.accountId,\n params.orderBase,\n params.orderPriceLimit,\n params.counterpartyAccountIds,\n params.marketId,\n params.exchangeId,\n );\n\n const result = await executeTransaction(\n params.signer,\n data,\n value,\n params.chainId,\n );\n\n return result;\n};\n"]}
1
+ {"version":3,"file":"order.js","sourceRoot":"/","sources":["services/orders/order.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mCAA4C;AAC5C,4DAA2D;AAC3D,6CAAqD;AACrD,2CAG2B;AAEpB,IAAM,UAAU,GAAG,UACxB,MAAsB;;;;;gBAEtB,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBAChD,CAAC;gBACK,eAAe,GAAG,IAAA,mCAA2B,EACjD,MAAM,CAAC,MAAM,CAAC,YAAY,EAC1B,MAAM,CAAC,SAAS,CACjB,CAAC;gBAEI,SAAS,GAAG,IAAA,uCAA+B,EAC/C,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,MAAM,CAAC,YAAY,CAC3B,CAAC;gBAEI,KAA4B,IAAA,yBAAgB,EAChD,MAAM,CAAC,eAAe,EACtB,SAAS,EACT,eAAe,EACf,MAAM,CAAC,MAAM,CAAC,sBAAsB,EACpC,MAAM,CAAC,MAAM,CAAC,EAAE,EAChB,MAAM,CAAC,MAAM,CAAC,UAAU,CACzB,EAPiB,IAAI,cAAA,EAAE,KAAK,WAAA,CAO3B;gBAGI,OAAO,GAAG,KAAK,CAAC;gBACP,qBAAM,IAAA,uCAAkB,EACrC,MAAM,CAAC,MAAM,EACb,IAAI,EACJ,KAAK,EACL,OAAO,EACP,wBAAe,CAAC,KAAK,CACtB,EAAA;;gBANK,MAAM,GAAG,SAMd;gBAED,sBAAO;wBACL,eAAe,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,KAAI,IAAI;qBACtC,EAAC;;;KACH,CAAC;AAtCW,QAAA,UAAU,cAsCrB","sourcesContent":["import { MatchOrderArgs, MatchOrderResult } from './types';\nimport { encodeMatchOrder } from './encode';\nimport { executeTransaction } from '../executeTransaction';\nimport { TransactionType } from '../../utils/consts';\nimport {\n calculateOrderBaseFromOrderSize,\n calculatePriceLimitForTrade,\n} from '../../utils/trade';\n\nexport const matchOrder = async (\n params: MatchOrderArgs,\n): Promise<MatchOrderResult> => {\n if (params.orderSize === BigInt(0)) {\n throw new Error('Position size can not be 0');\n }\n const orderPriceLimit = calculatePriceLimitForTrade(\n params.market.currentPrice,\n params.orderSize,\n );\n\n const orderBase = calculateOrderBaseFromOrderSize(\n params.orderSize,\n params.market.currentPrice,\n );\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 // @todo update it\n const chainId = 80001;\n const result = await executeTransaction(\n params.signer,\n data,\n value,\n chainId,\n TransactionType.TRADE,\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 } from 'ethers';\n\nexport type MatchOrderArgs = {\n signer: Signer;\n chainId: number;\n accountId: number;\n orderBase: bigint;\n orderPriceLimit: bigint;\n counterpartyAccountIds: number[];\n marketId: number;\n exchangeId: number;\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"/","sources":["services/orders/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Signer, JsonRpcSigner } from 'ethers';\n\nexport type MarketArg = {\n id: number;\n exchangeId: number;\n counterpartyAccountIds: number[];\n currentPrice: number;\n};\n\nexport type MatchOrderArgs = {\n signer: Signer | JsonRpcSigner;\n marginAccountId: number;\n orderSize: bigint;\n market: MarketArg;\n};\n\nexport type MatchOrderResult = {\n transactionHash: string | null;\n};\n"]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./approve"), exports);
19
+ __exportStar(require("./getAllowance"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["services/token/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B;AAC1B,iDAA+B","sourcesContent":["export * from './types';\nexport * from './approve';\nexport * from './getAllowance';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"/","sources":["services/token/types.ts"],"names":[],"mappings":";;;AAEA,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,2CAAE,CAAA;IACF,qDAAO,CAAA;AACT,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB","sourcesContent":["import { Signer } from 'ethers';\n\nexport enum ApprovalType {\n LP,\n DEPOSIT,\n}\n\nexport type ApproveTokenArgs = {\n signer: Signer;\n chainId: number;\n token: string;\n type: ApprovalType;\n};\n\nexport type GetAllowanceArgs = {\n signer: Signer;\n chainId: number;\n token: string;\n type: ApprovalType;\n};\n\nexport type GetERC20AllowanceArgs = {\n walletAddress: string;\n tokenAddress: string;\n spenderAddress: string;\n subject: Signer;\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"/","sources":["services/token/types.ts"],"names":[],"mappings":";;;AAEA,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,2CAAE,CAAA;IACF,qDAAO,CAAA;AACT,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB","sourcesContent":["import { JsonRpcSigner, Signer } from 'ethers';\n\nexport enum ApprovalType {\n LP,\n DEPOSIT,\n}\n\nexport type ApproveTokenArgs = {\n signer: Signer | JsonRpcSigner;\n chainId: number;\n token: string;\n type: ApprovalType;\n};\n\nexport type GetAllowanceArgs = {\n signer: Signer | JsonRpcSigner;\n chainId: number;\n token: string;\n type: ApprovalType;\n};\n\nexport type GetERC20AllowanceArgs = {\n walletAddress: string;\n tokenAddress: string;\n spenderAddress: string;\n subject: Signer;\n};\n"]}
@@ -1,2 +1,5 @@
1
- export * from './utils/action';
1
+ export * from './services/lp';
2
+ export * from './services/margin-accounts';
3
+ export * from './services/orders';
4
+ export * from './services/token';
2
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
@@ -1,12 +1,13 @@
1
- import { Signer } from 'ethers';
1
+ import { JsonRpcSigner, Signer } from 'ethers';
2
+ import { TransactionType } from '../utils/consts';
2
3
  export type Transaction = {
3
4
  from: string;
4
5
  to: string;
5
6
  data: string;
6
7
  value?: string;
7
8
  };
8
- export declare function estimateGas(signer: Signer, data: string, value: string, chainId: number): Promise<Transaction & {
9
+ export declare function estimateGas(signer: Signer | JsonRpcSigner, data: string, value: string, chainId: number, transactionType: TransactionType): Promise<Transaction & {
9
10
  gasLimit: bigint;
10
11
  }>;
11
- export declare function executeTransaction(signer: Signer, data: string, value: string, chainId: number): Promise<import("ethers").TransactionReceipt | null>;
12
+ export declare function executeTransaction(signer: Signer | JsonRpcSigner, data: string, value: string, chainId: number, transactionType: TransactionType): Promise<import("ethers").TransactionReceipt | null>;
12
13
  //# sourceMappingURL=executeTransaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"executeTransaction.d.ts","sourceRoot":"/","sources":["services/executeTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,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,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB7C;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,uDAWhB"}
1
+ {"version":3,"file":"executeTransaction.d.ts","sourceRoot":"/","sources":["services/executeTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAG/C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,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,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,WAAW,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB7C;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,GAAG,aAAa,EAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,eAAe,uDAiBjC"}
@@ -0,0 +1,3 @@
1
+ export * from './types';
2
+ export * from './lp';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["services/lp/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,MAAM,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lp.d.ts","sourceRoot":"/","sources":["services/lp/lp.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEpE,eAAO,MAAM,gBAAgB,WACnB,oBAAoB,KAC3B,QAAQ,OAAO,CAiBjB,CAAC;AAEF,eAAO,MAAM,eAAe,WAClB,mBAAmB,KAC1B,QAAQ,OAAO,CAgBjB,CAAC"}
1
+ {"version":3,"file":"lp.d.ts","sourceRoot":"/","sources":["services/lp/lp.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAGpE,eAAO,MAAM,gBAAgB,WACnB,oBAAoB,KAC3B,QAAQ,OAAO,CAkBjB,CAAC;AAEF,eAAO,MAAM,eAAe,WAClB,mBAAmB,KAC1B,QAAQ,OAAO,CAiBjB,CAAC"}
@@ -1,6 +1,6 @@
1
- import { Signer } from 'ethers';
1
+ import { JsonRpcSigner, Signer } from 'ethers';
2
2
  export type ProvideLiquidityArgs = {
3
- signer: Signer;
3
+ signer: Signer | JsonRpcSigner;
4
4
  chainId: number;
5
5
  poolId: number;
6
6
  owner: string;
@@ -8,7 +8,7 @@ export type ProvideLiquidityArgs = {
8
8
  minShares: number;
9
9
  };
10
10
  export type RemoveLiquidityArgs = {
11
- signer: Signer;
11
+ signer: Signer | JsonRpcSigner;
12
12
  chainId: number;
13
13
  poolId: number;
14
14
  sharesAmount: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["services/lp/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["services/lp/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE/C,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"account.d.ts","sourceRoot":"/","sources":["services/margin-accounts/account.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,eAAO,MAAM,aAAa,WAChB,iBAAiB,KACxB,QAAQ,OAAO,CAcjB,CAAC"}
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"/","sources":["services/margin-accounts/account.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAG5C,eAAO,MAAM,aAAa,WAChB,iBAAiB,KACxB,QAAQ,OAAO,CAejB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"deposit.d.ts","sourceRoot":"/","sources":["services/margin-accounts/deposit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAItC,eAAO,MAAM,OAAO,WAAkB,WAAW,KAAG,QAAQ,OAAO,CAkBlE,CAAC"}
1
+ {"version":3,"file":"deposit.d.ts","sourceRoot":"/","sources":["services/margin-accounts/deposit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAKtC,eAAO,MAAM,OAAO,WAAkB,WAAW,KAAG,QAAQ,OAAO,CAmBlE,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './types';
2
+ export * from './account';
3
+ export * from './deposit';
4
+ export * from './withdraw';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["services/margin-accounts/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
@@ -1,11 +1,11 @@
1
- import { Signer } from 'ethers';
1
+ import { JsonRpcSigner, Signer } from 'ethers';
2
2
  export type CreateAccountArgs = {
3
- signer: Signer;
3
+ signer: Signer | JsonRpcSigner;
4
4
  chainId: number;
5
5
  ownerAddress: string;
6
6
  };
7
7
  export type DepositArgs = {
8
- signer: Signer;
8
+ signer: Signer | JsonRpcSigner;
9
9
  chainId: number;
10
10
  accountId: number;
11
11
  token: string;
@@ -14,7 +14,7 @@ export type DepositArgs = {
14
14
  exchangeId: number;
15
15
  };
16
16
  export type WithdrawArgs = {
17
- signer: Signer;
17
+ signer: Signer | JsonRpcSigner;
18
18
  chainId: number;
19
19
  accountId: number;
20
20
  token: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["services/margin-accounts/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["services/margin-accounts/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE/C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"withdraw.d.ts","sourceRoot":"/","sources":["services/margin-accounts/withdraw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAIvC,eAAO,MAAM,QAAQ,WAAkB,YAAY,KAAG,QAAQ,OAAO,CAkBpE,CAAC"}
1
+ {"version":3,"file":"withdraw.d.ts","sourceRoot":"/","sources":["services/margin-accounts/withdraw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAKvC,eAAO,MAAM,QAAQ,WAAkB,YAAY,KAAG,QAAQ,OAAO,CAmBpE,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './types';
2
+ export * from './order';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["services/orders/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
@@ -1,3 +1,3 @@
1
- import { MatchOrderArgs } from './types';
2
- export declare const matchOrder: (params: MatchOrderArgs) => Promise<unknown>;
1
+ import { MatchOrderArgs, MatchOrderResult } from './types';
2
+ export declare const matchOrder: (params: MatchOrderArgs) => Promise<MatchOrderResult>;
3
3
  //# sourceMappingURL=order.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"order.d.ts","sourceRoot":"/","sources":["services/orders/order.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIzC,eAAO,MAAM,UAAU,WAAkB,cAAc,KAAG,QAAQ,OAAO,CAmBxE,CAAC"}
1
+ {"version":3,"file":"order.d.ts","sourceRoot":"/","sources":["services/orders/order.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAS3D,eAAO,MAAM,UAAU,WACb,cAAc,KACrB,QAAQ,gBAAgB,CAoC1B,CAAC"}
@@ -1,12 +1,17 @@
1
- import { Signer } from 'ethers';
2
- export type MatchOrderArgs = {
3
- signer: Signer;
4
- chainId: number;
5
- accountId: number;
6
- orderBase: bigint;
7
- orderPriceLimit: bigint;
8
- counterpartyAccountIds: number[];
9
- marketId: number;
1
+ import { Signer, JsonRpcSigner } from 'ethers';
2
+ export type MarketArg = {
3
+ id: number;
10
4
  exchangeId: number;
5
+ counterpartyAccountIds: number[];
6
+ currentPrice: number;
7
+ };
8
+ export type MatchOrderArgs = {
9
+ signer: Signer | JsonRpcSigner;
10
+ marginAccountId: number;
11
+ orderSize: bigint;
12
+ market: MarketArg;
13
+ };
14
+ export type MatchOrderResult = {
15
+ transactionHash: string | null;
11
16
  };
12
17
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["services/orders/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,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;AAE/C,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './types';
2
+ export * from './approve';
3
+ export * from './getAllowance';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["services/token/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC"}
@@ -1,16 +1,16 @@
1
- import { Signer } from 'ethers';
1
+ import { JsonRpcSigner, Signer } from 'ethers';
2
2
  export declare enum ApprovalType {
3
3
  LP = 0,
4
4
  DEPOSIT = 1
5
5
  }
6
6
  export type ApproveTokenArgs = {
7
- signer: Signer;
7
+ signer: Signer | JsonRpcSigner;
8
8
  chainId: number;
9
9
  token: string;
10
10
  type: ApprovalType;
11
11
  };
12
12
  export type GetAllowanceArgs = {
13
- signer: Signer;
13
+ signer: Signer | JsonRpcSigner;
14
14
  chainId: number;
15
15
  token: string;
16
16
  type: ApprovalType;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["services/token/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,oBAAY,YAAY;IACtB,EAAE,IAAA;IACF,OAAO,IAAA;CACR;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["services/token/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE/C,oBAAY,YAAY;IACtB,EAAE,IAAA;IACF,OAAO,IAAA;CACR;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare enum TransactionType {
2
+ CREATE_ACCOUNT = 0,
3
+ DEPOSIT = 1,
4
+ WITHDRAW = 2,
5
+ LP = 3,
6
+ TRADE = 4
7
+ }
8
+ //# sourceMappingURL=consts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"/","sources":["utils/consts.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACzB,cAAc,IAAA;IACd,OAAO,IAAA;IACP,QAAQ,IAAA;IACR,EAAE,IAAA;IACF,KAAK,IAAA;CACN"}
@@ -0,0 +1,3 @@
1
+ export declare function calculatePriceLimitForTrade(orderPrice: number, size: bigint): bigint;
2
+ export declare function calculateOrderBaseFromOrderSize(orderSize: bigint, currentPrice: number): bigint;
3
+ //# sourceMappingURL=trade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trade.d.ts","sourceRoot":"/","sources":["utils/trade.ts"],"names":[],"mappings":"AAAA,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACX,MAAM,CAeR;AAED,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,MAAM,CAOR"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransactionType = void 0;
4
+ var TransactionType;
5
+ (function (TransactionType) {
6
+ TransactionType[TransactionType["CREATE_ACCOUNT"] = 0] = "CREATE_ACCOUNT";
7
+ TransactionType[TransactionType["DEPOSIT"] = 1] = "DEPOSIT";
8
+ TransactionType[TransactionType["WITHDRAW"] = 2] = "WITHDRAW";
9
+ TransactionType[TransactionType["LP"] = 3] = "LP";
10
+ TransactionType[TransactionType["TRADE"] = 4] = "TRADE";
11
+ })(TransactionType || (exports.TransactionType = TransactionType = {}));
12
+ //# sourceMappingURL=consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.js","sourceRoot":"/","sources":["utils/consts.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,yEAAc,CAAA;IACd,2DAAO,CAAA;IACP,6DAAQ,CAAA;IACR,iDAAE,CAAA;IACF,uDAAK,CAAA;AACP,CAAC,EANW,eAAe,+BAAf,eAAe,QAM1B","sourcesContent":["export enum TransactionType {\n CREATE_ACCOUNT,\n DEPOSIT,\n WITHDRAW,\n LP,\n TRADE,\n}\n"]}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateOrderBaseFromOrderSize = exports.calculatePriceLimitForTrade = void 0;
4
+ function calculatePriceLimitForTrade(orderPrice, size) {
5
+ // Ensure orderPrice is BigInt
6
+ var orderPriceBigInt = BigInt(orderPrice);
7
+ // Calculate 50% of the order price
8
+ var offset = orderPriceBigInt / BigInt(2);
9
+ // Determine if the size is positive or negative and adjust the price accordingly
10
+ if (size > 0) {
11
+ // Trade is long, so add
12
+ return (orderPriceBigInt + offset) * BigInt(1e18);
13
+ }
14
+ else {
15
+ // Trade is short, so subtract
16
+ return (orderPriceBigInt - offset) * BigInt(1e18);
17
+ }
18
+ }
19
+ exports.calculatePriceLimitForTrade = calculatePriceLimitForTrade;
20
+ function calculateOrderBaseFromOrderSize(orderSize, currentPrice) {
21
+ var decimalFactor = BigInt('1000000'); // 10^6
22
+ // @todo check decimal places handling
23
+ var orderBase = (orderSize * decimalFactor) / BigInt(currentPrice);
24
+ return orderBase;
25
+ }
26
+ exports.calculateOrderBaseFromOrderSize = calculateOrderBaseFromOrderSize;
27
+ //# sourceMappingURL=trade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trade.js","sourceRoot":"/","sources":["utils/trade.ts"],"names":[],"mappings":";;;AAAA,SAAgB,2BAA2B,CACzC,UAAkB,EAClB,IAAY;IAEZ,8BAA8B;IAC9B,IAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAE5C,mCAAmC;IACnC,IAAM,MAAM,GAAG,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAE5C,iFAAiF;IACjF,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,wBAAwB;QACxB,OAAO,CAAC,gBAAgB,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,8BAA8B;QAC9B,OAAO,CAAC,gBAAgB,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAlBD,kEAkBC;AAED,SAAgB,+BAA+B,CAC7C,SAAiB,EACjB,YAAoB;IAEpB,IAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;IAChD,sCAAsC;IAEtC,IAAM,SAAS,GAAG,CAAC,SAAS,GAAG,aAAa,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IAErE,OAAO,SAAS,CAAC;AACnB,CAAC;AAVD,0EAUC","sourcesContent":["export function calculatePriceLimitForTrade(\n orderPrice: number,\n size: bigint,\n): bigint {\n // Ensure orderPrice is BigInt\n const orderPriceBigInt = BigInt(orderPrice);\n\n // Calculate 50% of the order price\n const offset = orderPriceBigInt / BigInt(2);\n\n // Determine if the size is positive or negative and adjust the price accordingly\n if (size > 0) {\n // Trade is long, so add\n return (orderPriceBigInt + offset) * BigInt(1e18);\n } else {\n // Trade is short, so subtract\n return (orderPriceBigInt - offset) * BigInt(1e18);\n }\n}\n\nexport function calculateOrderBaseFromOrderSize(\n orderSize: bigint,\n currentPrice: number,\n): bigint {\n const decimalFactor = BigInt('1000000'); // 10^6\n // @todo check decimal places handling\n\n const orderBase = (orderSize * decimalFactor) / BigInt(currentPrice);\n\n return orderBase;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reyaxyz/sdk",
3
- "version": "0.1.1",
3
+ "version": "0.2.1",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -32,5 +32,5 @@
32
32
  "ethers": "6.9.0"
33
33
  },
34
34
  "packageManager": "pnpm@8.10.4",
35
- "gitHead": "1b1ef20464e203db8fc4fbf395e4218fd06119ae"
35
+ "gitHead": "c93a765b3c4e44a13d3f96237342d0508fe55a71"
36
36
  }
package/src/index.ts CHANGED
@@ -1 +1,4 @@
1
- export * from './utils/action';
1
+ export * from './services/lp';
2
+ export * from './services/margin-accounts';
3
+ export * from './services/orders';
4
+ export * from './services/token';
@@ -1,5 +1,7 @@
1
- import { Signer } from 'ethers';
1
+ import { JsonRpcSigner, Signer } from 'ethers';
2
2
  import { getGasBuffer } from '../utils/txHelpers';
3
+ import { getAddress } from '../utils/contractAddresses';
4
+ import { TransactionType } from '../utils/consts';
3
5
 
4
6
  export type Transaction = {
5
7
  from: string;
@@ -9,14 +11,17 @@ export type Transaction = {
9
11
  };
10
12
 
11
13
  export async function estimateGas(
12
- signer: Signer,
14
+ signer: Signer | JsonRpcSigner,
13
15
  data: string,
14
16
  value: string,
15
17
  chainId: number,
18
+ transactionType: TransactionType,
16
19
  ): Promise<Transaction & { gasLimit: bigint }> {
17
- console.log(chainId); // @todo remove chainId if obsolete
18
20
  const accountAddress = await signer.getAddress();
19
- const contractAddress = `0xdb8cd625873ca9d7b6529ffafe5ecdd3746708b4`; // @todo Define after deployment
21
+ const contractAddress =
22
+ transactionType === TransactionType.LP
23
+ ? getAddress(chainId, 'passive_pool_proxy')
24
+ : getAddress(chainId, 'core_proxy');
20
25
  const tx = {
21
26
  from: accountAddress,
22
27
  to: contractAddress,
@@ -37,12 +42,19 @@ export async function estimateGas(
37
42
  }
38
43
 
39
44
  export async function executeTransaction(
40
- signer: Signer,
45
+ signer: Signer | JsonRpcSigner,
41
46
  data: string,
42
47
  value: string,
43
48
  chainId: number,
49
+ transactionType: TransactionType,
44
50
  ) {
45
- const txData = await estimateGas(signer, data, value, chainId);
51
+ const txData = await estimateGas(
52
+ signer,
53
+ data,
54
+ value,
55
+ chainId,
56
+ transactionType,
57
+ );
46
58
  try {
47
59
  const txResponse = await signer.sendTransaction(txData);
48
60
  const txReceipt = await txResponse.wait(); // @todo Check what was reasoning behind this since this function waits until transaction is minted
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './lp';
@@ -4,6 +4,7 @@ import {
4
4
  encodeRemoveLiquidityCall,
5
5
  } from './encode';
6
6
  import { ProvideLiquidityArgs, RemoveLiquidityArgs } from './types';
7
+ import { TransactionType } from '../../utils/consts';
7
8
 
8
9
  export const provideLiquidity = async (
9
10
  params: ProvideLiquidityArgs,
@@ -21,6 +22,7 @@ export const provideLiquidity = async (
21
22
  data,
22
23
  value,
23
24
  params.chainId,
25
+ TransactionType.LP,
24
26
  );
25
27
 
26
28
  return result;
@@ -41,6 +43,7 @@ export const removeLiquidity = async (
41
43
  data,
42
44
  value,
43
45
  params.chainId,
46
+ TransactionType.LP,
44
47
  );
45
48
 
46
49
  return result;
@@ -1,7 +1,7 @@
1
- import { Signer } from 'ethers';
1
+ import { JsonRpcSigner, Signer } from 'ethers';
2
2
 
3
3
  export type ProvideLiquidityArgs = {
4
- signer: Signer;
4
+ signer: Signer | JsonRpcSigner;
5
5
  chainId: number;
6
6
  poolId: number;
7
7
  owner: string;
@@ -10,7 +10,7 @@ export type ProvideLiquidityArgs = {
10
10
  };
11
11
 
12
12
  export type RemoveLiquidityArgs = {
13
- signer: Signer;
13
+ signer: Signer | JsonRpcSigner;
14
14
  chainId: number;
15
15
  poolId: number;
16
16
  sharesAmount: number;
@@ -1,6 +1,7 @@
1
1
  import { executeTransaction } from '../executeTransaction';
2
2
  import { encodeCreateAccountCall } from './encode';
3
3
  import { CreateAccountArgs } from './types';
4
+ import { TransactionType } from '../../utils/consts';
4
5
 
5
6
  export const createAccount = async (
6
7
  params: CreateAccountArgs,
@@ -15,6 +16,7 @@ export const createAccount = async (
15
16
  data,
16
17
  value,
17
18
  params.chainId,
19
+ TransactionType.CREATE_ACCOUNT,
18
20
  );
19
21
 
20
22
  return result;
@@ -1,6 +1,7 @@
1
1
  import { DepositArgs } from './types';
2
2
  import { encodeDeposit } from './encode';
3
3
  import { executeTransaction } from '../executeTransaction';
4
+ import { TransactionType } from '../../utils/consts';
4
5
 
5
6
  export const deposit = async (params: DepositArgs): Promise<unknown> => {
6
7
  // @todo update type once we agree on the structure
@@ -17,6 +18,7 @@ export const deposit = async (params: DepositArgs): Promise<unknown> => {
17
18
  data,
18
19
  value,
19
20
  params.chainId,
21
+ TransactionType.DEPOSIT,
20
22
  );
21
23
 
22
24
  return result;
@@ -0,0 +1,4 @@
1
+ export * from './types';
2
+ export * from './account';
3
+ export * from './deposit';
4
+ export * from './withdraw';
@@ -1,13 +1,13 @@
1
- import { Signer } from 'ethers';
1
+ import { JsonRpcSigner, Signer } from 'ethers';
2
2
 
3
3
  export type CreateAccountArgs = {
4
- signer: Signer;
4
+ signer: Signer | JsonRpcSigner;
5
5
  chainId: number;
6
6
  ownerAddress: string;
7
7
  };
8
8
 
9
9
  export type DepositArgs = {
10
- signer: Signer;
10
+ signer: Signer | JsonRpcSigner;
11
11
  chainId: number;
12
12
  accountId: number;
13
13
  token: string;
@@ -17,7 +17,7 @@ export type DepositArgs = {
17
17
  };
18
18
 
19
19
  export type WithdrawArgs = {
20
- signer: Signer;
20
+ signer: Signer | JsonRpcSigner;
21
21
  chainId: number;
22
22
  accountId: number;
23
23
  token: string;
@@ -1,6 +1,7 @@
1
1
  import { WithdrawArgs } from './types';
2
2
  import { encodeWithdraw } from './encode';
3
3
  import { executeTransaction } from '../executeTransaction';
4
+ import { TransactionType } from '../../utils/consts';
4
5
 
5
6
  export const withdraw = async (params: WithdrawArgs): Promise<unknown> => {
6
7
  // @todo update type once we agree on the structure
@@ -17,6 +18,7 @@ export const withdraw = async (params: WithdrawArgs): Promise<unknown> => {
17
18
  data,
18
19
  value,
19
20
  params.chainId,
21
+ TransactionType.WITHDRAW,
20
22
  );
21
23
 
22
24
  return result;
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './order';
@@ -1,24 +1,48 @@
1
- import { MatchOrderArgs } from './types';
1
+ import { MatchOrderArgs, MatchOrderResult } from './types';
2
2
  import { encodeMatchOrder } from './encode';
3
3
  import { executeTransaction } from '../executeTransaction';
4
+ import { TransactionType } from '../../utils/consts';
5
+ import {
6
+ calculateOrderBaseFromOrderSize,
7
+ calculatePriceLimitForTrade,
8
+ } from '../../utils/trade';
9
+
10
+ export const matchOrder = async (
11
+ params: MatchOrderArgs,
12
+ ): Promise<MatchOrderResult> => {
13
+ if (params.orderSize === BigInt(0)) {
14
+ throw new Error('Position size can not be 0');
15
+ }
16
+ const orderPriceLimit = calculatePriceLimitForTrade(
17
+ params.market.currentPrice,
18
+ params.orderSize,
19
+ );
20
+
21
+ const orderBase = calculateOrderBaseFromOrderSize(
22
+ params.orderSize,
23
+ params.market.currentPrice,
24
+ );
4
25
 
5
- export const matchOrder = async (params: MatchOrderArgs): Promise<unknown> => {
6
- // @todo update type once we agree on the structure
7
26
  const { calldata: data, value } = encodeMatchOrder(
8
- params.accountId,
9
- params.orderBase,
10
- params.orderPriceLimit,
11
- params.counterpartyAccountIds,
12
- params.marketId,
13
- params.exchangeId,
27
+ params.marginAccountId,
28
+ orderBase,
29
+ orderPriceLimit,
30
+ params.market.counterpartyAccountIds,
31
+ params.market.id,
32
+ params.market.exchangeId,
14
33
  );
15
34
 
35
+ // @todo update it
36
+ const chainId = 80001;
16
37
  const result = await executeTransaction(
17
38
  params.signer,
18
39
  data,
19
40
  value,
20
- params.chainId,
41
+ chainId,
42
+ TransactionType.TRADE,
21
43
  );
22
44
 
23
- return result;
45
+ return {
46
+ transactionHash: result?.hash || null,
47
+ };
24
48
  };
@@ -1,12 +1,19 @@
1
- import { Signer } from 'ethers';
1
+ import { Signer, JsonRpcSigner } from 'ethers';
2
2
 
3
- export type MatchOrderArgs = {
4
- signer: Signer;
5
- chainId: number;
6
- accountId: number;
7
- orderBase: bigint;
8
- orderPriceLimit: bigint;
9
- counterpartyAccountIds: number[];
10
- marketId: number;
3
+ export type MarketArg = {
4
+ id: number;
11
5
  exchangeId: number;
6
+ counterpartyAccountIds: number[];
7
+ currentPrice: number;
8
+ };
9
+
10
+ export type MatchOrderArgs = {
11
+ signer: Signer | JsonRpcSigner;
12
+ marginAccountId: number;
13
+ orderSize: bigint;
14
+ market: MarketArg;
15
+ };
16
+
17
+ export type MatchOrderResult = {
18
+ transactionHash: string | null;
12
19
  };
@@ -0,0 +1,3 @@
1
+ export * from './types';
2
+ export * from './approve';
3
+ export * from './getAllowance';
@@ -1,4 +1,4 @@
1
- import { Signer } from 'ethers';
1
+ import { JsonRpcSigner, Signer } from 'ethers';
2
2
 
3
3
  export enum ApprovalType {
4
4
  LP,
@@ -6,14 +6,14 @@ export enum ApprovalType {
6
6
  }
7
7
 
8
8
  export type ApproveTokenArgs = {
9
- signer: Signer;
9
+ signer: Signer | JsonRpcSigner;
10
10
  chainId: number;
11
11
  token: string;
12
12
  type: ApprovalType;
13
13
  };
14
14
 
15
15
  export type GetAllowanceArgs = {
16
- signer: Signer;
16
+ signer: Signer | JsonRpcSigner;
17
17
  chainId: number;
18
18
  token: string;
19
19
  type: ApprovalType;
@@ -0,0 +1,7 @@
1
+ export enum TransactionType {
2
+ CREATE_ACCOUNT,
3
+ DEPOSIT,
4
+ WITHDRAW,
5
+ LP,
6
+ TRADE,
7
+ }
@@ -0,0 +1,31 @@
1
+ export function calculatePriceLimitForTrade(
2
+ orderPrice: number,
3
+ size: bigint,
4
+ ): bigint {
5
+ // Ensure orderPrice is BigInt
6
+ const orderPriceBigInt = BigInt(orderPrice);
7
+
8
+ // Calculate 50% of the order price
9
+ const offset = orderPriceBigInt / BigInt(2);
10
+
11
+ // Determine if the size is positive or negative and adjust the price accordingly
12
+ if (size > 0) {
13
+ // Trade is long, so add
14
+ return (orderPriceBigInt + offset) * BigInt(1e18);
15
+ } else {
16
+ // Trade is short, so subtract
17
+ return (orderPriceBigInt - offset) * BigInt(1e18);
18
+ }
19
+ }
20
+
21
+ export function calculateOrderBaseFromOrderSize(
22
+ orderSize: bigint,
23
+ currentPrice: number,
24
+ ): bigint {
25
+ const decimalFactor = BigInt('1000000'); // 10^6
26
+ // @todo check decimal places handling
27
+
28
+ const orderBase = (orderSize * decimalFactor) / BigInt(currentPrice);
29
+
30
+ return orderBase;
31
+ }