@reyaxyz/sdk 0.74.3 → 0.75.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.
- package/README.md +1 -1
- package/dist/services/isolated-order/isolatedOrder.js +21 -18
- package/dist/services/isolated-order/isolatedOrder.js.map +1 -1
- package/dist/services/isolated-order/types.js.map +1 -1
- package/dist/types/services/isolated-order/isolatedOrder.d.ts +2 -2
- package/dist/types/services/isolated-order/isolatedOrder.d.ts.map +1 -1
- package/dist/types/services/isolated-order/types.d.ts +3 -3
- package/dist/types/services/isolated-order/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/services/isolated-order/isolatedOrder.ts +15 -17
- package/src/services/isolated-order/types.ts +7 -3
package/README.md
CHANGED
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
|
|
7
7
|
| Statements | Branches | Functions | Lines |
|
|
8
8
|
| --------------------------- | ----------------------- | ------------------------- | ----------------- |
|
|
9
|
-
|  |  |  |  |
|
|
10
10
|
|
|
@@ -36,13 +36,11 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.
|
|
40
|
-
var common_1 = require("@reyaxyz/common");
|
|
39
|
+
exports.isolatedOrder = void 0;
|
|
41
40
|
var margin_accounts_1 = require("../margin-accounts");
|
|
42
41
|
var orders_1 = require("../orders");
|
|
43
|
-
var
|
|
44
|
-
var createAccountResult,
|
|
45
|
-
var _a;
|
|
42
|
+
var isolatedOrder = function (params) { return __awaiter(void 0, void 0, void 0, function () {
|
|
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
|
-
|
|
56
|
+
_i = 0, _a = params.editCollateralActions;
|
|
57
|
+
_b.label = 2;
|
|
59
58
|
case 2:
|
|
60
|
-
|
|
61
|
-
|
|
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:
|
|
68
|
-
tokenAddress:
|
|
66
|
+
amount: action.collateralDelta,
|
|
67
|
+
tokenAddress: action.collateralAddress,
|
|
69
68
|
})];
|
|
70
69
|
case 3:
|
|
71
70
|
_b.sent();
|
|
72
|
-
|
|
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,
|
|
@@ -84,5 +87,5 @@ var executeIsolatedOrder = function (params) { return __awaiter(void 0, void 0,
|
|
|
84
87
|
}
|
|
85
88
|
});
|
|
86
89
|
}); };
|
|
87
|
-
exports.
|
|
90
|
+
exports.isolatedOrder = isolatedOrder;
|
|
88
91
|
//# sourceMappingURL=isolatedOrder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isolatedOrder.js","sourceRoot":"/","sources":["services/isolated-order/isolatedOrder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,
|
|
1
|
+
{"version":3,"file":"isolatedOrder.js","sourceRoot":"/","sources":["services/isolated-order/isolatedOrder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,sDAG4B;AAC5B,oCAAuC;AAEhC,IAAM,aAAa,GAAG,UAC3B,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,aAAa,iBA8CxB","sourcesContent":["import { IsolatedOrderParams, IsolatedOrderResult } from './types';\nimport {\n createAccount,\n transferMarginBetweenAccounts,\n} from '../margin-accounts';\nimport { matchOrder } from '../orders';\n\nexport const isolatedOrder = async (\n params: IsolatedOrderParams,\n): Promise<IsolatedOrderResult> => {\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 {
|
|
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 IsolatedOrderResult = {\n transactionHash: string | null;\n};\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { IsolatedOrderParams,
|
|
2
|
-
export declare const
|
|
1
|
+
import { IsolatedOrderParams, IsolatedOrderResult } from './types';
|
|
2
|
+
export declare const isolatedOrder: (params: IsolatedOrderParams) => Promise<IsolatedOrderResult>;
|
|
3
3
|
//# sourceMappingURL=isolatedOrder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isolatedOrder.d.ts","sourceRoot":"/","sources":["services/isolated-order/isolatedOrder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"isolatedOrder.d.ts","sourceRoot":"/","sources":["services/isolated-order/isolatedOrder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAOnE,eAAO,MAAM,aAAa,WAChB,mBAAmB,KAC1B,QAAQ,mBAAmB,CA4C7B,CAAC"}
|
|
@@ -1,15 +1,15 @@
|
|
|
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
|
-
|
|
8
|
+
editCollateralActions: EditCollateralAction[];
|
|
9
9
|
snappedAmountInBase: number;
|
|
10
10
|
market: MarketParams;
|
|
11
11
|
};
|
|
12
|
-
export type
|
|
12
|
+
export type IsolatedOrderResult = {
|
|
13
13
|
transactionHash: string | null;
|
|
14
14
|
};
|
|
15
15
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -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,
|
|
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,mBAAmB,GAAG;IAChC,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.
|
|
3
|
+
"version": "0.75.1",
|
|
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.
|
|
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": "
|
|
37
|
+
"gitHead": "6969c9c33a917d7fa23efb89e578662c7953a49b"
|
|
38
38
|
}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { IsolatedOrderParams,
|
|
2
|
-
import { getTokenInfoByName } from '@reyaxyz/common';
|
|
1
|
+
import { IsolatedOrderParams, IsolatedOrderResult } from './types';
|
|
3
2
|
import {
|
|
4
3
|
createAccount,
|
|
5
4
|
transferMarginBetweenAccounts,
|
|
6
5
|
} from '../margin-accounts';
|
|
7
6
|
import { matchOrder } from '../orders';
|
|
8
7
|
|
|
9
|
-
export const
|
|
8
|
+
export const isolatedOrder = async (
|
|
10
9
|
params: IsolatedOrderParams,
|
|
11
|
-
): Promise<
|
|
10
|
+
): Promise<IsolatedOrderResult> => {
|
|
12
11
|
// todo: p2 consider performing all steps in api and only call one api function from here?
|
|
13
12
|
|
|
14
13
|
// step 1: create new account
|
|
@@ -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:
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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,16 +1,20 @@
|
|
|
1
1
|
import { Signer, JsonRpcSigner } from 'ethers';
|
|
2
|
-
import {
|
|
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
|
-
|
|
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
|
};
|
|
13
17
|
|
|
14
|
-
export type
|
|
18
|
+
export type IsolatedOrderResult = {
|
|
15
19
|
transactionHash: string | null;
|
|
16
20
|
};
|