@reyaxyz/sdk 0.74.3 → 0.75.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.
package/README.md CHANGED
@@ -6,5 +6,5 @@
6
6
 
7
7
  | Statements | Branches | Functions | Lines |
8
8
  | --------------------------- | ----------------------- | ------------------------- | ----------------- |
9
- | ![Statements](https://img.shields.io/badge/statements-12.17%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-9.09%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-12%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-11.52%25-red.svg?style=flat) |
9
+ | ![Statements](https://img.shields.io/badge/statements-12.2%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-9.09%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-12%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-11.54%25-red.svg?style=flat) |
10
10
 
@@ -37,12 +37,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.executeIsolatedOrder = void 0;
40
- var common_1 = require("@reyaxyz/common");
41
40
  var margin_accounts_1 = require("../margin-accounts");
42
41
  var orders_1 = require("../orders");
43
42
  var executeIsolatedOrder = function (params) { return __awaiter(void 0, void 0, void 0, function () {
44
- var createAccountResult, network, chainId, matchOrderResult;
45
- var _a;
43
+ var createAccountResult, _i, _a, action, matchOrderResult;
46
44
  return __generator(this, function (_b) {
47
45
  switch (_b.label) {
48
46
  case 0: return [4 /*yield*/, (0, margin_accounts_1.createAccount)({
@@ -55,28 +53,33 @@ var executeIsolatedOrder = function (params) { return __awaiter(void 0, void 0,
55
53
  if (!createAccountResult.accountId) {
56
54
  throw new Error('New Account Id not available to execute isolated trade');
57
55
  }
58
- return [4 /*yield*/, ((_a = params.signer.provider) === null || _a === void 0 ? void 0 : _a.getNetwork())];
56
+ _i = 0, _a = params.editCollateralActions;
57
+ _b.label = 2;
59
58
  case 2:
60
- network = _b.sent();
61
- chainId = Number(network === null || network === void 0 ? void 0 : network.chainId);
59
+ if (!(_i < _a.length)) return [3 /*break*/, 5];
60
+ action = _a[_i];
62
61
  return [4 /*yield*/, (0, margin_accounts_1.transferMarginBetweenAccounts)({
63
62
  signer: params.signer,
64
63
  owner: params.owner,
65
64
  fromMarginAccountId: params.fromMarginAccountId,
66
65
  toMarginAccountId: createAccountResult.accountId,
67
- amount: params.requiredMargin,
68
- tokenAddress: (0, common_1.getTokenInfoByName)('RUSD', chainId).address,
66
+ amount: action.collateralDelta,
67
+ tokenAddress: action.collateralAddress,
69
68
  })];
70
69
  case 3:
71
70
  _b.sent();
72
- return [4 /*yield*/, (0, orders_1.matchOrder)({
73
- signer: params.signer,
74
- owner: params.owner,
75
- marginAccountId: createAccountResult.accountId,
76
- snappedAmountInBase: params.snappedAmountInBase,
77
- market: params.market,
78
- })];
71
+ _b.label = 4;
79
72
  case 4:
73
+ _i++;
74
+ return [3 /*break*/, 2];
75
+ case 5: return [4 /*yield*/, (0, orders_1.matchOrder)({
76
+ signer: params.signer,
77
+ owner: params.owner,
78
+ marginAccountId: createAccountResult.accountId,
79
+ snappedAmountInBase: params.snappedAmountInBase,
80
+ market: params.market,
81
+ })];
82
+ case 6:
80
83
  matchOrderResult = _b.sent();
81
84
  return [2 /*return*/, {
82
85
  transactionHash: (matchOrderResult === null || matchOrderResult === void 0 ? void 0 : matchOrderResult.transactionHash) || null,
@@ -1 +1 @@
1
- {"version":3,"file":"isolatedOrder.js","sourceRoot":"/","sources":["services/isolated-order/isolatedOrder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,0CAAqD;AACrD,sDAG4B;AAC5B,oCAAuC;AAEhC,IAAM,oBAAoB,GAAG,UAClC,MAA2B;;;;;oBAQC,qBAAM,IAAA,+BAAa,EAAC;oBAC9C,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;oBAClC,IAAI,EAAE,wBAAwB;iBAC/B,CAAC,EAAA;;gBAJI,mBAAmB,GAAG,SAI1B;gBAEF,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC;oBACnC,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;gBAC5E,CAAC;gBAKe,qBAAM,CAAA,MAAA,MAAM,CAAC,MAAM,CAAC,QAAQ,0CAAE,UAAU,EAAE,CAAA,EAAA;;gBAApD,OAAO,GAAG,SAA0C;gBACpD,OAAO,GAAG,MAAM,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC,CAAC;gBAEzC,qBAAM,IAAA,+CAA6B,EAAC;wBAClC,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;wBAC/C,iBAAiB,EAAE,mBAAmB,CAAC,SAAS;wBAChD,MAAM,EAAE,MAAM,CAAC,cAAc;wBAC7B,YAAY,EAAE,IAAA,2BAAkB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC,OAAO;qBAC1D,CAAC,EAAA;;gBAPF,SAOE,CAAC;gBAIsB,qBAAM,IAAA,mBAAU,EAAC;wBACxC,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,eAAe,EAAE,mBAAmB,CAAC,SAAS;wBAC9C,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;wBAC/C,MAAM,EAAE,MAAM,CAAC,MAAM;qBACtB,CAAC,EAAA;;gBANI,gBAAgB,GAAG,SAMvB;gBAEF,sBAAO;wBACL,eAAe,EAAE,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,eAAe,KAAI,IAAI;qBAC3D,EAAC;;;KACH,CAAC;AA/CW,QAAA,oBAAoB,wBA+C/B","sourcesContent":["import { IsolatedOrderParams, IsolatedOrderResults } from './types';\nimport { getTokenInfoByName } from '@reyaxyz/common';\nimport {\n createAccount,\n transferMarginBetweenAccounts,\n} from '../margin-accounts';\nimport { matchOrder } from '../orders';\n\nexport const executeIsolatedOrder = async (\n params: IsolatedOrderParams,\n): Promise<IsolatedOrderResults> => {\n // todo: p2 consider performing all steps in api and only call one api function from here?\n\n // step 1: create new account\n\n // todo: p2: consider having a function that creates an account and auto-generates a name in one go, use it t&cs also\n // todo: p2: error handling & logging\n const createAccountResult = await createAccount({\n signer: params.signer,\n ownerAddress: params.owner.address,\n name: 'Isolated Trade Account',\n });\n\n if (!createAccountResult.accountId) {\n throw new Error('New Account Id not available to execute isolated trade');\n }\n\n // step 2: transfer margin from source to destination account\n // todo: p1: generalise to handle multiple transfer commands\n\n const network = await params.signer.provider?.getNetwork();\n const chainId = Number(network?.chainId);\n\n await transferMarginBetweenAccounts({\n signer: params.signer,\n owner: params.owner,\n fromMarginAccountId: params.fromMarginAccountId,\n toMarginAccountId: createAccountResult.accountId,\n amount: params.requiredMargin,\n tokenAddress: getTokenInfoByName('RUSD', chainId).address,\n });\n\n // step 3: execute trade\n\n const matchOrderResult = await matchOrder({\n signer: params.signer,\n owner: params.owner,\n marginAccountId: createAccountResult.accountId,\n snappedAmountInBase: params.snappedAmountInBase,\n market: params.market,\n });\n\n return {\n transactionHash: matchOrderResult?.transactionHash || null,\n };\n};\n"]}
1
+ {"version":3,"file":"isolatedOrder.js","sourceRoot":"/","sources":["services/isolated-order/isolatedOrder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,sDAG4B;AAC5B,oCAAuC;AAEhC,IAAM,oBAAoB,GAAG,UAClC,MAA2B;;;;oBAQC,qBAAM,IAAA,+BAAa,EAAC;oBAC9C,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;oBAClC,IAAI,EAAE,wBAAwB;iBAC/B,CAAC,EAAA;;gBAJI,mBAAmB,GAAG,SAI1B;gBAEF,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC;oBACnC,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;gBAC5E,CAAC;sBAKgD,EAA5B,KAAA,MAAM,CAAC,qBAAqB;;;qBAA5B,CAAA,cAA4B,CAAA;gBAAtC,MAAM;gBACf,qBAAM,IAAA,+CAA6B,EAAC;wBAClC,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;wBAC/C,iBAAiB,EAAE,mBAAmB,CAAC,SAAS;wBAChD,MAAM,EAAE,MAAM,CAAC,eAAe;wBAC9B,YAAY,EAAE,MAAM,CAAC,iBAAiB;qBACvC,CAAC,EAAA;;gBAPF,SAOE,CAAC;;;gBARgB,IAA4B,CAAA;;oBAaxB,qBAAM,IAAA,mBAAU,EAAC;oBACxC,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,eAAe,EAAE,mBAAmB,CAAC,SAAS;oBAC9C,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;oBAC/C,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAC,EAAA;;gBANI,gBAAgB,GAAG,SAMvB;gBAEF,sBAAO;wBACL,eAAe,EAAE,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,eAAe,KAAI,IAAI;qBAC3D,EAAC;;;KACH,CAAC;AA9CW,QAAA,oBAAoB,wBA8C/B","sourcesContent":["import { IsolatedOrderParams, IsolatedOrderResults } from './types';\nimport {\n createAccount,\n transferMarginBetweenAccounts,\n} from '../margin-accounts';\nimport { matchOrder } from '../orders';\n\nexport const executeIsolatedOrder = async (\n params: IsolatedOrderParams,\n): Promise<IsolatedOrderResults> => {\n // todo: p2 consider performing all steps in api and only call one api function from here?\n\n // step 1: create new account\n\n // todo: p2: consider having a function that creates an account and auto-generates a name in one go, use it t&cs also\n // todo: p2: error handling & logging\n const createAccountResult = await createAccount({\n signer: params.signer,\n ownerAddress: params.owner.address,\n name: 'Isolated Trade Account',\n });\n\n if (!createAccountResult.accountId) {\n throw new Error('New Account Id not available to execute isolated trade');\n }\n\n // step 2: transfer margin from source to destination account\n // todo: p1: pack transfers into a single tx with multiple transfer commands\n\n for (const action of params.editCollateralActions) {\n await transferMarginBetweenAccounts({\n signer: params.signer,\n owner: params.owner,\n fromMarginAccountId: params.fromMarginAccountId,\n toMarginAccountId: createAccountResult.accountId,\n amount: action.collateralDelta,\n tokenAddress: action.collateralAddress,\n });\n }\n\n // step 3: execute trade\n\n const matchOrderResult = await matchOrder({\n signer: params.signer,\n owner: params.owner,\n marginAccountId: createAccountResult.accountId,\n snappedAmountInBase: params.snappedAmountInBase,\n market: params.market,\n });\n\n return {\n transactionHash: matchOrderResult?.transactionHash || null,\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"/","sources":["services/isolated-order/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Signer, JsonRpcSigner } from 'ethers';\nimport { MarginAccountEntity, OwnerMetadataEntity } from '@reyaxyz/common';\nimport { MarketParams } from '../orders';\n\nexport type IsolatedOrderParams = {\n signer: Signer | JsonRpcSigner;\n owner: Pick<OwnerMetadataEntity, 'coreSigNonce' | 'address'>;\n fromMarginAccountId: MarginAccountEntity['id'];\n requiredMargin: number; // todo: p2: use type from simulation in api-sdk via common dep\n snappedAmountInBase: number; // todo: p2: use type from simulation in api-sdk via common dep\n market: MarketParams;\n};\n\nexport type IsolatedOrderResults = {\n transactionHash: string | null;\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"/","sources":["services/isolated-order/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Signer, JsonRpcSigner } from 'ethers';\nimport {\n EditCollateralAction,\n MarginAccountEntity,\n OwnerMetadataEntity,\n} from '@reyaxyz/common';\nimport { MarketParams } from '../orders';\n\nexport type IsolatedOrderParams = {\n signer: Signer | JsonRpcSigner;\n owner: Pick<OwnerMetadataEntity, 'coreSigNonce' | 'address'>;\n fromMarginAccountId: MarginAccountEntity['id'];\n editCollateralActions: EditCollateralAction[];\n snappedAmountInBase: number; // todo: p2: use type from simulation in api-sdk via common dep\n market: MarketParams;\n};\n\nexport type IsolatedOrderResults = {\n transactionHash: string | null;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"isolatedOrder.d.ts","sourceRoot":"/","sources":["services/isolated-order/isolatedOrder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAQpE,eAAO,MAAM,oBAAoB,WACvB,mBAAmB,KAC1B,QAAQ,oBAAoB,CA6C9B,CAAC"}
1
+ {"version":3,"file":"isolatedOrder.d.ts","sourceRoot":"/","sources":["services/isolated-order/isolatedOrder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAOpE,eAAO,MAAM,oBAAoB,WACvB,mBAAmB,KAC1B,QAAQ,oBAAoB,CA4C9B,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import { Signer, JsonRpcSigner } from 'ethers';
2
- import { MarginAccountEntity, OwnerMetadataEntity } from '@reyaxyz/common';
2
+ import { EditCollateralAction, MarginAccountEntity, OwnerMetadataEntity } from '@reyaxyz/common';
3
3
  import { MarketParams } from '../orders';
4
4
  export type IsolatedOrderParams = {
5
5
  signer: Signer | JsonRpcSigner;
6
6
  owner: Pick<OwnerMetadataEntity, 'coreSigNonce' | 'address'>;
7
7
  fromMarginAccountId: MarginAccountEntity['id'];
8
- requiredMargin: number;
8
+ editCollateralActions: EditCollateralAction[];
9
9
  snappedAmountInBase: number;
10
10
  market: MarketParams;
11
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["services/isolated-order/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,cAAc,GAAG,SAAS,CAAC,CAAC;IAC7D,mBAAmB,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["services/isolated-order/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,cAAc,GAAG,SAAS,CAAC,CAAC;IAC7D,mBAAmB,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC/C,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;IAC9C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reyaxyz/sdk",
3
- "version": "0.74.3",
3
+ "version": "0.75.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -29,10 +29,10 @@
29
29
  "generate:coverage-badges": "npx istanbul-badges-readme --silent"
30
30
  },
31
31
  "dependencies": {
32
- "@reyaxyz/common": "0.83.0",
32
+ "@reyaxyz/common": "0.84.0",
33
33
  "bignumber.js": "^9.1.2",
34
34
  "ethers": "6.9.0"
35
35
  },
36
36
  "packageManager": "pnpm@8.3.1",
37
- "gitHead": "bd9a678dec3513b069fde4ac7d25fdbbba1fa92a"
37
+ "gitHead": "29a00168492dd0fd9b0fea958196b6eae689543c"
38
38
  }
@@ -1,5 +1,4 @@
1
1
  import { IsolatedOrderParams, IsolatedOrderResults } from './types';
2
- import { getTokenInfoByName } from '@reyaxyz/common';
3
2
  import {
4
3
  createAccount,
5
4
  transferMarginBetweenAccounts,
@@ -26,19 +25,18 @@ export const executeIsolatedOrder = async (
26
25
  }
27
26
 
28
27
  // step 2: transfer margin from source to destination account
29
- // todo: p1: generalise to handle multiple transfer commands
30
-
31
- const network = await params.signer.provider?.getNetwork();
32
- const chainId = Number(network?.chainId);
33
-
34
- await transferMarginBetweenAccounts({
35
- signer: params.signer,
36
- owner: params.owner,
37
- fromMarginAccountId: params.fromMarginAccountId,
38
- toMarginAccountId: createAccountResult.accountId,
39
- amount: params.requiredMargin,
40
- tokenAddress: getTokenInfoByName('RUSD', chainId).address,
41
- });
28
+ // todo: p1: pack transfers into a single tx with multiple transfer commands
29
+
30
+ for (const action of params.editCollateralActions) {
31
+ await transferMarginBetweenAccounts({
32
+ signer: params.signer,
33
+ owner: params.owner,
34
+ fromMarginAccountId: params.fromMarginAccountId,
35
+ toMarginAccountId: createAccountResult.accountId,
36
+ amount: action.collateralDelta,
37
+ tokenAddress: action.collateralAddress,
38
+ });
39
+ }
42
40
 
43
41
  // step 3: execute trade
44
42
 
@@ -1,12 +1,16 @@
1
1
  import { Signer, JsonRpcSigner } from 'ethers';
2
- import { MarginAccountEntity, OwnerMetadataEntity } from '@reyaxyz/common';
2
+ import {
3
+ EditCollateralAction,
4
+ MarginAccountEntity,
5
+ OwnerMetadataEntity,
6
+ } from '@reyaxyz/common';
3
7
  import { MarketParams } from '../orders';
4
8
 
5
9
  export type IsolatedOrderParams = {
6
10
  signer: Signer | JsonRpcSigner;
7
11
  owner: Pick<OwnerMetadataEntity, 'coreSigNonce' | 'address'>;
8
12
  fromMarginAccountId: MarginAccountEntity['id'];
9
- requiredMargin: number; // todo: p2: use type from simulation in api-sdk via common dep
13
+ editCollateralActions: EditCollateralAction[];
10
14
  snappedAmountInBase: number; // todo: p2: use type from simulation in api-sdk via common dep
11
15
  market: MarketParams;
12
16
  };