@reyaxyz/common 0.274.0 → 0.274.2

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-18.15%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-13.1%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-8.53%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-19.48%25-red.svg?style=flat) |
9
+ | ![Statements](https://img.shields.io/badge/statements-18.1%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-13.2%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-8.57%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-19.41%25-red.svg?style=flat) |
10
10
 
@@ -15,7 +15,8 @@ var CommandType;
15
15
  CommandType[CommandType["DUTCH_LIQUIDATION"] = 2] = "DUTCH_LIQUIDATION";
16
16
  CommandType[CommandType["MATCH_ORDER"] = 3] = "MATCH_ORDER";
17
17
  CommandType[CommandType["TRANSFER_MARGIN_ACCOUNT"] = 4] = "TRANSFER_MARGIN_ACCOUNT";
18
- CommandType[CommandType["MANAGE_POOL_STAKE"] = 5] = "MANAGE_POOL_STAKE";
18
+ CommandType[CommandType["CAMELOT_SWAP"] = 5] = "CAMELOT_SWAP";
19
+ CommandType[CommandType["MANAGE_POOL_STAKE"] = 6] = "MANAGE_POOL_STAKE";
19
20
  })(CommandType || (exports.CommandType = CommandType = {}));
20
21
  var ABI_DEFINITION = (_a = {},
21
22
  _a[CommandType.DEPOSIT] = ['address', 'uint256'],
@@ -23,6 +24,9 @@ var ABI_DEFINITION = (_a = {},
23
24
  _a[CommandType.MATCH_ORDER] = ['uint128[]', 'bytes'],
24
25
  _a[CommandType.DUTCH_LIQUIDATION] = ['tuple(uint128,address,uint128[],bytes[])'],
25
26
  _a[CommandType.TRANSFER_MARGIN_ACCOUNT] = ['tuple(uint128,address,uint256)'],
27
+ _a[CommandType.CAMELOT_SWAP] = [
28
+ 'tuple(uint256,uint256,address[],address[],address[])',
29
+ ],
26
30
  _a[CommandType.MANAGE_POOL_STAKE] = ['uint8', 'bytes'],
27
31
  _a);
28
32
  function createCommand(type, parameters, marketId, exchangeId) {
@@ -1 +1 @@
1
- {"version":3,"file":"routerCommands.js","sourceRoot":"/","sources":["transactions/routerCommands.ts"],"names":[],"mappings":";;;;AAAA,iCAAkC;AAGlC;;;;GAIG;AACH,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,mDAAO,CAAA;IACP,qDAAQ,CAAA;IACR,uEAAiB,CAAA;IACjB,2DAAW,CAAA;IACX,mFAAuB,CAAA;IACvB,uEAAiB,CAAA;AACnB,CAAC,EAPW,WAAW,2BAAX,WAAW,QAOtB;AAED,IAAM,cAAc;IAClB,GAAC,WAAW,CAAC,OAAO,IAAG,CAAC,SAAS,EAAE,SAAS,CAAC;IAC7C,GAAC,WAAW,CAAC,QAAQ,IAAG,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9C,GAAC,WAAW,CAAC,WAAW,IAAG,CAAC,WAAW,EAAE,OAAO,CAAC;IACjD,GAAC,WAAW,CAAC,iBAAiB,IAAG,CAAC,0CAA0C,CAAC;IAC7E,GAAC,WAAW,CAAC,uBAAuB,IAAG,CAAC,gCAAgC,CAAC;IACzE,GAAC,WAAW,CAAC,iBAAiB,IAAG,CAAC,OAAO,EAAE,OAAO,CAAC;OACpD,CAAC;AASF,SAAgB,aAAa,CAC3B,IAAiB,EACjB,UAAqB,EACrB,QAAgB,EAChB,UAAkB;IAElB,IAAM,YAAY,GAAG,iBAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,CACpD,cAAc,CAAC,IAAI,CAAC,EACpB,UAAU,CACX,CAAC;IACF,OAAO,EAAE,IAAI,MAAA,EAAE,YAAY,cAAA,EAAE,QAAQ,UAAA,EAAE,UAAU,YAAA,EAAE,CAAC;AACtD,CAAC;AAXD,sCAWC;AAED,SAAgB,UAAU,CACxB,IAAiB,EACjB,UAAqB,EACrB,QAAgB,EAChB,UAAkB;IAElB,IAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACtE,OAAO;QACL,OAAO,EAAE;YACP,WAAW,EAAE,OAAO,CAAC,IAAI;YACzB,MAAM,EAAE,OAAO,CAAC,YAAY;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B;KACF,CAAC;AACJ,CAAC;AAfD,gCAeC","sourcesContent":["import { AbiCoder } from 'ethers';\nimport { SingleAction } from './action';\n\n/**\n * CommandTypes\n * @description Flags that modify a command's execution\n * @enum {number}\n */\nexport enum CommandType {\n DEPOSIT,\n WITHDRAW,\n DUTCH_LIQUIDATION,\n MATCH_ORDER,\n TRANSFER_MARGIN_ACCOUNT,\n MANAGE_POOL_STAKE,\n}\n\nconst ABI_DEFINITION: { [key in CommandType]: string[] } = {\n [CommandType.DEPOSIT]: ['address', 'uint256'],\n [CommandType.WITHDRAW]: ['address', 'uint256'],\n [CommandType.MATCH_ORDER]: ['uint128[]', 'bytes'],\n [CommandType.DUTCH_LIQUIDATION]: ['tuple(uint128,address,uint128[],bytes[])'],\n [CommandType.TRANSFER_MARGIN_ACCOUNT]: ['tuple(uint128,address,uint256)'],\n [CommandType.MANAGE_POOL_STAKE]: ['uint8', 'bytes'],\n};\n\nexport type RouterCommand = {\n type: CommandType;\n encodedInput: string;\n marketId: number;\n exchangeId: number;\n};\n\nexport function createCommand(\n type: CommandType,\n parameters: unknown[],\n marketId: number,\n exchangeId: number,\n): RouterCommand {\n const encodedInput = AbiCoder.defaultAbiCoder().encode(\n ABI_DEFINITION[type],\n parameters,\n );\n return { type, encodedInput, marketId, exchangeId };\n}\n\nexport function getCommand(\n type: CommandType,\n parameters: unknown[],\n marketId: number,\n exchangeId: number,\n): SingleAction {\n const command = createCommand(type, parameters, marketId, exchangeId);\n return {\n command: {\n commandType: command.type,\n inputs: command.encodedInput,\n marketId: command.marketId,\n exchangeId: command.exchangeId,\n },\n };\n}\n"]}
1
+ {"version":3,"file":"routerCommands.js","sourceRoot":"/","sources":["transactions/routerCommands.ts"],"names":[],"mappings":";;;;AAAA,iCAAkC;AAGlC;;;;GAIG;AACH,IAAY,WAQX;AARD,WAAY,WAAW;IACrB,mDAAO,CAAA;IACP,qDAAQ,CAAA;IACR,uEAAiB,CAAA;IACjB,2DAAW,CAAA;IACX,mFAAuB,CAAA;IACvB,6DAAY,CAAA;IACZ,uEAAiB,CAAA;AACnB,CAAC,EARW,WAAW,2BAAX,WAAW,QAQtB;AAED,IAAM,cAAc;IAClB,GAAC,WAAW,CAAC,OAAO,IAAG,CAAC,SAAS,EAAE,SAAS,CAAC;IAC7C,GAAC,WAAW,CAAC,QAAQ,IAAG,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9C,GAAC,WAAW,CAAC,WAAW,IAAG,CAAC,WAAW,EAAE,OAAO,CAAC;IACjD,GAAC,WAAW,CAAC,iBAAiB,IAAG,CAAC,0CAA0C,CAAC;IAC7E,GAAC,WAAW,CAAC,uBAAuB,IAAG,CAAC,gCAAgC,CAAC;IACzE,GAAC,WAAW,CAAC,YAAY,IAAG;QAC1B,sDAAsD;KACvD;IACD,GAAC,WAAW,CAAC,iBAAiB,IAAG,CAAC,OAAO,EAAE,OAAO,CAAC;OACpD,CAAC;AASF,SAAgB,aAAa,CAC3B,IAAiB,EACjB,UAAqB,EACrB,QAAgB,EAChB,UAAkB;IAElB,IAAM,YAAY,GAAG,iBAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,CACpD,cAAc,CAAC,IAAI,CAAC,EACpB,UAAU,CACX,CAAC;IACF,OAAO,EAAE,IAAI,MAAA,EAAE,YAAY,cAAA,EAAE,QAAQ,UAAA,EAAE,UAAU,YAAA,EAAE,CAAC;AACtD,CAAC;AAXD,sCAWC;AAED,SAAgB,UAAU,CACxB,IAAiB,EACjB,UAAqB,EACrB,QAAgB,EAChB,UAAkB;IAElB,IAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACtE,OAAO;QACL,OAAO,EAAE;YACP,WAAW,EAAE,OAAO,CAAC,IAAI;YACzB,MAAM,EAAE,OAAO,CAAC,YAAY;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B;KACF,CAAC;AACJ,CAAC;AAfD,gCAeC","sourcesContent":["import { AbiCoder } from 'ethers';\nimport { SingleAction } from './action';\n\n/**\n * CommandTypes\n * @description Flags that modify a command's execution\n * @enum {number}\n */\nexport enum CommandType {\n DEPOSIT,\n WITHDRAW,\n DUTCH_LIQUIDATION,\n MATCH_ORDER,\n TRANSFER_MARGIN_ACCOUNT,\n CAMELOT_SWAP,\n MANAGE_POOL_STAKE,\n}\n\nconst ABI_DEFINITION: { [key in CommandType]: string[] } = {\n [CommandType.DEPOSIT]: ['address', 'uint256'],\n [CommandType.WITHDRAW]: ['address', 'uint256'],\n [CommandType.MATCH_ORDER]: ['uint128[]', 'bytes'],\n [CommandType.DUTCH_LIQUIDATION]: ['tuple(uint128,address,uint128[],bytes[])'],\n [CommandType.TRANSFER_MARGIN_ACCOUNT]: ['tuple(uint128,address,uint256)'],\n [CommandType.CAMELOT_SWAP]: [\n 'tuple(uint256,uint256,address[],address[],address[])',\n ],\n [CommandType.MANAGE_POOL_STAKE]: ['uint8', 'bytes'],\n};\n\nexport type RouterCommand = {\n type: CommandType;\n encodedInput: string;\n marketId: number;\n exchangeId: number;\n};\n\nexport function createCommand(\n type: CommandType,\n parameters: unknown[],\n marketId: number,\n exchangeId: number,\n): RouterCommand {\n const encodedInput = AbiCoder.defaultAbiCoder().encode(\n ABI_DEFINITION[type],\n parameters,\n );\n return { type, encodedInput, marketId, exchangeId };\n}\n\nexport function getCommand(\n type: CommandType,\n parameters: unknown[],\n marketId: number,\n exchangeId: number,\n): SingleAction {\n const command = createCommand(type, parameters, marketId, exchangeId);\n return {\n command: {\n commandType: command.type,\n inputs: command.encodedInput,\n marketId: command.marketId,\n exchangeId: command.exchangeId,\n },\n };\n}\n"]}
@@ -10,7 +10,8 @@ export declare enum CommandType {
10
10
  DUTCH_LIQUIDATION = 2,
11
11
  MATCH_ORDER = 3,
12
12
  TRANSFER_MARGIN_ACCOUNT = 4,
13
- MANAGE_POOL_STAKE = 5
13
+ CAMELOT_SWAP = 5,
14
+ MANAGE_POOL_STAKE = 6
14
15
  }
15
16
  export type RouterCommand = {
16
17
  type: CommandType;
@@ -1 +1 @@
1
- {"version":3,"file":"routerCommands.d.ts","sourceRoot":"/","sources":["transactions/routerCommands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;;;GAIG;AACH,oBAAY,WAAW;IACrB,OAAO,IAAA;IACP,QAAQ,IAAA;IACR,iBAAiB,IAAA;IACjB,WAAW,IAAA;IACX,uBAAuB,IAAA;IACvB,iBAAiB,IAAA;CAClB;AAWD,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,aAAa,CAC3B,IAAI,EAAE,WAAW,EACjB,UAAU,EAAE,OAAO,EAAE,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,aAAa,CAMf;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,WAAW,EACjB,UAAU,EAAE,OAAO,EAAE,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,YAAY,CAUd"}
1
+ {"version":3,"file":"routerCommands.d.ts","sourceRoot":"/","sources":["transactions/routerCommands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;;;GAIG;AACH,oBAAY,WAAW;IACrB,OAAO,IAAA;IACP,QAAQ,IAAA;IACR,iBAAiB,IAAA;IACjB,WAAW,IAAA;IACX,uBAAuB,IAAA;IACvB,YAAY,IAAA;IACZ,iBAAiB,IAAA;CAClB;AAcD,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,aAAa,CAC3B,IAAI,EAAE,WAAW,EACjB,UAAU,EAAE,OAAO,EAAE,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,aAAa,CAMf;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,WAAW,EACjB,UAAU,EAAE,OAAO,EAAE,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,YAAY,CAUd"}
@@ -48,7 +48,7 @@ export declare const calculateMaxOrderSize: ({ currIMR, currNodeBalance, currNot
48
48
  oraclePrice: number;
49
49
  poolPrice: number;
50
50
  }) => number;
51
- export declare const calculateIMR: ({ accountLeverages, marketLeverages, marketPrices, positions, }: {
51
+ export declare const calculateIMR: ({ marketLeverages, marketPrices, positions, }: {
52
52
  accountLeverages: Map<AccountId, number>;
53
53
  marketLeverages: Map<MarketId, number>;
54
54
  marketPrices: Map<MarketId, number>;
@@ -1 +1 @@
1
- {"version":3,"file":"calculate.d.ts","sourceRoot":"/","sources":["utils/calculate.ts"],"names":[],"mappings":"AAIA,KAAK,QAAQ,GAAG,MAAM,CAAC;AACvB,KAAK,SAAS,GAAG,MAAM,CAAC;AACxB,KAAK,OAAO,GAAG,MAAM,CAAC;AAEtB,eAAO,MAAM,oBAAoB;iBAKlB,MAAM;;gBAEP,MAAM;YACiC,CAAC;AAEtD,eAAO,MAAM,gCAAgC,cAChC,MAAM,QACX,MAAM,eACC,MAAM,eACN,MAAM,SACZ,MAAM,WAE8D,CAAC;AAE9E,eAAO,MAAM,iBAAiB;aAInB,MAAM;mBACA,MAAM;YACgB,CAAC;AAExC,eAAO,MAAM,eAAe;iBAOb,MAAM;iBACN,MAAM;iBACN,MAAM;eACR,MAAM;mBACF,MAAM;YAIR,CAAC;AAEhB,eAAO,MAAM,kCAAkC;SAOxC,MAAM;oBACK,MAAM;aACb,OAAO;cACN,MAAM;iBACH,MAAM;YAMlB,CAAC;AAEJ,eAAO,MAAM,iBAAiB;mBAIb,MAAM;gBACT,MAAM;YAC6B,CAAC;AAElD,eAAO,MAAM,uBAAuB;aAMzB,MAAM;qBACE,MAAM;cACb,MAAM;mBACD,MAAM;YAIX,CAAC;AAEb,eAAO,MAAM,qBAAqB;aAavB,MAAM;qBACE,MAAM;kBACT,MAAM;iBACP,MAAM;uBACA,OAAO;aACjB,MAAM;kBACD,OAAO;cACX,MAAM;iBACH,MAAM;iBACN,MAAM;eACR,MAAM;YAqBlB,CAAC;AAEF,eAAO,MAAM,YAAY;sBAML,IAAI,SAAS,EAAE,MAAM,CAAC;qBACvB,IAAI,QAAQ,EAAE,MAAM,CAAC;kBACxB,IAAI,QAAQ,EAAE,MAAM,CAAC;eACxB,IAAI,QAAQ,EAAE,MAAM,CAAC;YAcjC,CAAC;AAEF,eAAO,MAAM,YAAY;;kBAQT,IAAI,QAAQ,EAAE,MAAM,CAAC;eACxB,IAAI,QAAQ,EAAE,MAAM,CAAC;iBACnB,IAAI,QAAQ,EAAE,MAAM,CAAC;;YAkB7B,CAAC;AAIR,eAAO,MAAM,oBAAoB;SAK1B,MAAM;kBACG,MAAM;eACT,MAAM;YAYlB,CAAC;AAEF,eAAO,MAAM,oBAAoB;qBAQd,IAAI,OAAO,EAAE,MAAM,CAAC;iBACxB,IAAI,OAAO,EAAE,MAAM,CAAC;sBACf,IAChB,QAAQ,EACR;QACE,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CACF;qBACgB,IACf,QAAQ,EACR;QACE,kBAAkB,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CACF;eACU;QACT,cAAc,EAAE,MAAM,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;KACrB,EAAE;;YA6DJ,CAAC"}
1
+ {"version":3,"file":"calculate.d.ts","sourceRoot":"/","sources":["utils/calculate.ts"],"names":[],"mappings":"AAIA,KAAK,QAAQ,GAAG,MAAM,CAAC;AACvB,KAAK,SAAS,GAAG,MAAM,CAAC;AACxB,KAAK,OAAO,GAAG,MAAM,CAAC;AAEtB,eAAO,MAAM,oBAAoB;iBAKlB,MAAM;;gBAEP,MAAM;YACiC,CAAC;AAEtD,eAAO,MAAM,gCAAgC,cAChC,MAAM,QACX,MAAM,eACC,MAAM,eACN,MAAM,SACZ,MAAM,WAE8D,CAAC;AAE9E,eAAO,MAAM,iBAAiB;aAInB,MAAM;mBACA,MAAM;YACgB,CAAC;AAExC,eAAO,MAAM,eAAe;iBAOb,MAAM;iBACN,MAAM;iBACN,MAAM;eACR,MAAM;mBACF,MAAM;YAIR,CAAC;AAEhB,eAAO,MAAM,kCAAkC;SAOxC,MAAM;oBACK,MAAM;aACb,OAAO;cACN,MAAM;iBACH,MAAM;YAMlB,CAAC;AAEJ,eAAO,MAAM,iBAAiB;mBAIb,MAAM;gBACT,MAAM;YAC6B,CAAC;AAElD,eAAO,MAAM,uBAAuB;aAMzB,MAAM;qBACE,MAAM;cACb,MAAM;mBACD,MAAM;YAIX,CAAC;AAEb,eAAO,MAAM,qBAAqB;aAavB,MAAM;qBACE,MAAM;kBACT,MAAM;iBACP,MAAM;uBACA,OAAO;aACjB,MAAM;kBACD,OAAO;cACX,MAAM;iBACH,MAAM;iBACN,MAAM;eACR,MAAM;YAqBlB,CAAC;AAEF,eAAO,MAAM,YAAY;sBAKL,IAAI,SAAS,EAAE,MAAM,CAAC;qBACvB,IAAI,QAAQ,EAAE,MAAM,CAAC;kBACxB,IAAI,QAAQ,EAAE,MAAM,CAAC;eACxB,IAAI,QAAQ,EAAE,MAAM,CAAC;YAajC,CAAC;AAEF,eAAO,MAAM,YAAY;;kBAQT,IAAI,QAAQ,EAAE,MAAM,CAAC;eACxB,IAAI,QAAQ,EAAE,MAAM,CAAC;iBACnB,IAAI,QAAQ,EAAE,MAAM,CAAC;;YAkB7B,CAAC;AAIR,eAAO,MAAM,oBAAoB;SAK1B,MAAM;kBACG,MAAM;eACT,MAAM;YAYlB,CAAC;AAEF,eAAO,MAAM,oBAAoB;qBAQd,IAAI,OAAO,EAAE,MAAM,CAAC;iBACxB,IAAI,OAAO,EAAE,MAAM,CAAC;sBACf,IAChB,QAAQ,EACR;QACE,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CACF;qBACgB,IACf,QAAQ,EACR;QACE,kBAAkB,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CACF;eACU;QACT,cAAc,EAAE,MAAM,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;KACrB,EAAE;;YA6DJ,CAAC"}
@@ -1,8 +1,7 @@
1
- import { ConditionalOrderType, ConditionalOrderTypeName, Rank, RankTrading, AssetPair } from '../types';
1
+ import { AssetPair, ConditionalOrderType, ConditionalOrderTypeName, Rank, RankTrading } from '../types';
2
2
  export declare const MAX_UINT128: number;
3
3
  export declare const API_TIMEOUT: number;
4
4
  export declare const ONE_DAY_IN_SECONDS: number;
5
- export declare const getCurrentCandleRedisKey: (assetPairId: AssetPair) => string;
6
5
  export declare const CHANNEL_NAME: "redis-pub-sub";
7
6
  export declare const WHITELISTED_WALLETS: string[];
8
7
  export declare const RANKS: Record<number, Rank>;
@@ -13,7 +12,7 @@ export declare const TRADING_LOTTERY_BOOST = 10;
13
12
  export declare const VOLUME_TIER_MAP: Record<number, number>;
14
13
  export declare const SPECIAL_TIER_THRESHOLD = 100;
15
14
  export declare const marketAssetPairIdMapper: Record<string, string>;
16
- export declare const marketIdToAssetPairMapper: Record<string, string>;
15
+ export declare const marketIdToAssetPairMapper: Record<string, AssetPair>;
17
16
  export declare const getAllMarketIds: () => string[];
18
17
  export declare const SOCKET_BRIDGE_IN_MSG_GAS_LIMIT: bigint;
19
18
  export declare const SOCKET_EMPTY_PAYLOAD_SIZE = 160;
@@ -1 +1 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"/","sources":["utils/consts.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,IAAI,EACJ,WAAW,EACX,SAAS,EACV,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,WAAW,QAAe,CAAC;AACxC,eAAO,MAAM,WAAW,EAAE,MAAa,CAAC;AAExC,eAAO,MAAM,kBAAkB,EAAE,MAAqB,CAAC;AAEvD,eAAO,MAAM,wBAAwB,gBAAiB,SAAS,WAC7B,CAAC;AAKnC,eAAO,MAAM,YAAY,iBAA2B,CAAC;AAErD,eAAO,MAAM,mBAAmB,UAkB/B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAwDtC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAiBrD,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAC5C,oBAAoB,EACpB,wBAAwB,CAKzB,CAAC;AAEF,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQlD,CAAC;AAEF,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA+D1D,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAEgB,CAAC;AAE9E,eAAO,MAAM,eAAe,gBAA6C,CAAC;AAC1E,eAAO,MAAM,8BAA8B,QAAqB,CAAC;AACjE,eAAO,MAAM,yBAAyB,MAAM,CAAC"}
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"/","sources":["utils/consts.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,wBAAwB,EACxB,IAAI,EACJ,WAAW,EACZ,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,WAAW,QAAe,CAAC;AACxC,eAAO,MAAM,WAAW,EAAE,MAAa,CAAC;AAExC,eAAO,MAAM,kBAAkB,EAAE,MAAqB,CAAC;AAEvD,eAAO,MAAM,YAAY,iBAA2B,CAAC;AAErD,eAAO,MAAM,mBAAmB,UAkB/B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAwDtC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAiBrD,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAC5C,oBAAoB,EACpB,wBAAwB,CAKzB,CAAC;AAEF,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQlD,CAAC;AAEF,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA+D1D,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAEa,CAAC;AAE9E,eAAO,MAAM,eAAe,gBAA6C,CAAC;AAC1E,eAAO,MAAM,8BAA8B,QAAqB,CAAC;AACjE,eAAO,MAAM,yBAAyB,MAAM,CAAC"}
@@ -62,11 +62,11 @@ var calculateMaxOrderSize = function (_a) {
62
62
  };
63
63
  exports.calculateMaxOrderSize = calculateMaxOrderSize;
64
64
  var calculateIMR = function (_a) {
65
- var accountLeverages = _a.accountLeverages, marketLeverages = _a.marketLeverages, marketPrices = _a.marketPrices, positions = _a.positions;
65
+ var marketLeverages = _a.marketLeverages, marketPrices = _a.marketPrices, positions = _a.positions;
66
66
  return Array.from(positions.entries()).reduce(function (sum, _a) {
67
67
  var _b;
68
68
  var marketId = _a[0], positionSize = _a[1];
69
- var leverage = accountLeverages.get(marketId) || marketLeverages.get(marketId);
69
+ var leverage = marketLeverages.get(marketId);
70
70
  return leverage
71
71
  ? sum +
72
72
  (Math.abs(positionSize) * ((_b = marketPrices.get(marketId)) !== null && _b !== void 0 ? _b : 0)) /
@@ -1 +1 @@
1
- {"version":3,"file":"calculate.js","sourceRoot":"/","sources":["utils/calculate.ts"],"names":[],"mappings":"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","sourcesContent":["import { mergeMap } from './struct';\n\nconst POOL_IMR = 9.1;\n\ntype MarketId = string;\ntype AccountId = string;\ntype Address = string;\n\nexport const calculateMaxExposure = ({\n poolBalance,\n riskFactor,\n poolIMR = POOL_IMR,\n}: {\n poolBalance: number;\n poolIMR?: number;\n riskFactor: number;\n}) => poolBalance / (poolIMR * Math.sqrt(riskFactor));\n\nexport const calculateEstimatedExecutionPrice = (\n poolPrice: number,\n size: number,\n oraclePrice: number,\n maxExposure: number,\n depth: number,\n) =>\n Math.max(0, poolPrice * (1 + (size * oraclePrice) / (depth * maxExposure)));\n\nexport const calculateTradeFee = ({\n feeRate,\n tradeNotional,\n}: {\n feeRate: number;\n tradeNotional: number;\n}) => feeRate * Math.abs(tradeNotional);\n\nexport const calculateSpread = ({\n depthFactor,\n maxExposure,\n oraclePrice,\n poolPrice,\n tradeNotional,\n}: {\n depthFactor: number;\n maxExposure: number;\n oraclePrice: number;\n poolPrice: number;\n tradeNotional: number;\n}) =>\n (poolPrice / oraclePrice) *\n (1 + tradeNotional / (depthFactor * maxExposure) - 1) *\n tradeNotional;\n\nexport const calculateEstimatedLiquidationPrice = ({\n LMR,\n accountBalance,\n isShort,\n notional,\n oraclePrice,\n}: {\n LMR: number;\n accountBalance: number;\n isShort: boolean;\n notional: number;\n oraclePrice: number;\n}) =>\n Math.max(\n 0,\n oraclePrice *\n (1 - ((accountBalance - LMR) / notional) * (isShort ? -1 : 1)),\n );\n\nexport const calculateLeverage = ({\n imrMultiplier,\n riskFactor,\n}: {\n imrMultiplier: number;\n riskFactor: number;\n}) => 1 / (imrMultiplier * Math.sqrt(riskFactor));\n\nexport const calculateRequiredMargin = ({\n currIMR,\n currentNotional,\n leverage,\n tradeNotional,\n}: {\n currIMR: number;\n currentNotional: number;\n leverage: number;\n tradeNotional: number;\n}) =>\n currIMR +\n (Math.abs(currentNotional + tradeNotional) - Math.abs(currentNotional)) /\n leverage;\n\nexport const calculateMaxOrderSize = ({\n currIMR,\n currNodeBalance,\n currNotional,\n depthFactor,\n extendingPosition,\n feeRate,\n isShortTrade,\n leverage,\n maxExposure,\n oraclePrice,\n poolPrice,\n}: {\n currIMR: number;\n currNodeBalance: number;\n currNotional: number;\n depthFactor: number;\n extendingPosition: boolean;\n feeRate: number;\n isShortTrade: boolean;\n leverage: number;\n maxExposure: number;\n oraclePrice: number;\n poolPrice: number;\n}) => {\n const a = poolPrice / oraclePrice;\n const c = 1 / (depthFactor * maxExposure);\n const R = a - 1 - feeRate * (isShortTrade ? -1 : 1);\n const SN = currNotional < 0 ? -1 : 1;\n const Q = R - (SN / leverage) * (extendingPosition ? 1 : -1);\n return Math.abs(\n (-1 * Q +\n Math.sqrt(\n Math.pow(Q, 2) -\n 4 *\n a *\n c *\n (currNodeBalance -\n currIMR +\n (extendingPosition ? 0 : ((2 * SN) / leverage) * currNotional)),\n ) *\n (isShortTrade ? 1 : -1)) /\n (2 * a * c),\n );\n};\n\nexport const calculateIMR = ({\n accountLeverages,\n marketLeverages,\n marketPrices,\n positions,\n}: {\n accountLeverages: Map<AccountId, number>;\n marketLeverages: Map<MarketId, number>;\n marketPrices: Map<MarketId, number>;\n positions: Map<MarketId, number>;\n}) => {\n return Array.from(positions.entries()).reduce(\n (sum, [marketId, positionSize]) => {\n const leverage =\n accountLeverages.get(marketId) || marketLeverages.get(marketId);\n return leverage\n ? sum +\n (Math.abs(positionSize) * (marketPrices.get(marketId) ?? 0)) /\n leverage\n : sum;\n },\n 0,\n );\n};\n\nexport const calculateLMR = ({\n marketPrices,\n positions,\n riskFactors,\n marketId,\n tradeSize,\n}: {\n marketId?: string;\n marketPrices: Map<MarketId, number>;\n positions: Map<MarketId, number>;\n riskFactors: Map<MarketId, number>;\n tradeSize?: number;\n}) =>\n Array.from(\n (marketId && tradeSize\n ? mergeMap(positions, [\n [marketId, (positions.get(marketId) ?? 0) + tradeSize],\n ])\n : positions\n ).entries(),\n ).reduce((sum, [marketId, positionSize]) => {\n const riskFactor = riskFactors.get(marketId);\n return riskFactor\n ? sum +\n Math.abs(positionSize) *\n (marketPrices.get(marketId) ?? 0) *\n Math.sqrt(riskFactor)\n : sum;\n }, 0);\n\n// if account balance is below LMR position is liquidable\n\nexport const calculateMarginRatio = ({\n LMR,\n totalBalance,\n tradeCost,\n}: {\n LMR: number;\n totalBalance: number;\n tradeCost: number;\n}) => {\n if (LMR === 0) {\n return 0;\n }\n if (tradeCost > totalBalance) {\n return 1;\n }\n if (totalBalance === tradeCost) {\n return Infinity;\n }\n return Math.min(1, LMR / (totalBalance - tradeCost));\n};\n\nexport const calculateTotalMargin = ({\n marketsTrackers,\n accountBalances,\n assetPrices,\n marketsTokenInfo,\n positions,\n rUSDAddress,\n}: {\n accountBalances: Map<Address, number>;\n assetPrices: Map<Address, number>;\n marketsTokenInfo: Map<\n MarketId,\n {\n quoteTokenId: string;\n underlyingAssetId: string;\n }\n >;\n marketsTrackers: Map<\n MarketId,\n {\n longADLUnwindPrice: number;\n longBaseMultiplier: number;\n longFundingValue: number;\n shortADLUnwindPrice: number;\n shortBaseMultiplier: number;\n shortFundingValue: number;\n }\n >;\n positions: {\n adlUnwindPrice: number;\n base: number;\n baseMultiplier: number;\n fundingValue: number;\n lastPrice: number;\n marketId: string;\n realizedPnl: number;\n }[];\n rUSDAddress?: string;\n}) => {\n const pnl = new Map<Address, number>();\n const rUSDPrice = (rUSDAddress && assetPrices.get(rUSDAddress)) ?? 1;\n positions.forEach((position) => {\n const marketTracker = marketsTrackers?.get(position.marketId);\n const tokenInfo = marketsTokenInfo.get(position.marketId);\n if (!tokenInfo) return;\n let fundingCashFlow = 0;\n let adlCashFlow = 0;\n\n if (marketTracker) {\n // fundingCashFlow\n const marketTrackerFundingValue =\n position.base < 0\n ? marketTracker.shortFundingValue\n : marketTracker.longFundingValue;\n const trackerDelta = marketTrackerFundingValue - position.fundingValue;\n fundingCashFlow =\n (trackerDelta / position.baseMultiplier) * -1 * position.base;\n\n // adlCashFlow\n const adlUnwindPrice =\n ((position.base < 0\n ? marketTracker.shortADLUnwindPrice\n : marketTracker.longADLUnwindPrice) -\n position.adlUnwindPrice) /\n position.baseMultiplier;\n const baseMultiplier =\n (position.base < 0\n ? marketTracker.shortBaseMultiplier\n : marketTracker.longBaseMultiplier) / position.baseMultiplier;\n const lastPriceCoefficient = 1 - baseMultiplier;\n const initialPrice = lastPriceCoefficient * position.lastPrice;\n adlCashFlow = (adlUnwindPrice - initialPrice) * position.base;\n }\n\n const unrealizedPnl =\n ((assetPrices.get(tokenInfo.quoteTokenId) ?? 0) - position.lastPrice) *\n position.base;\n\n pnl.set(\n tokenInfo.underlyingAssetId,\n (pnl.get(tokenInfo.underlyingAssetId) ?? 0) +\n position.realizedPnl +\n fundingCashFlow +\n adlCashFlow +\n unrealizedPnl,\n );\n });\n\n return Array.from(accountBalances.entries()).reduce(\n (sum, [address, balance]) =>\n sum +\n (balance + (pnl.get(address) ?? 0)) *\n (address === rUSDAddress\n ? 1\n : (assetPrices.get(address) ?? 0) / (rUSDPrice || 1)),\n 0,\n );\n};\n"]}
1
+ {"version":3,"file":"calculate.js","sourceRoot":"/","sources":["utils/calculate.ts"],"names":[],"mappings":"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","sourcesContent":["import { mergeMap } from './struct';\n\nconst POOL_IMR = 9.1;\n\ntype MarketId = string;\ntype AccountId = string;\ntype Address = string;\n\nexport const calculateMaxExposure = ({\n poolBalance,\n riskFactor,\n poolIMR = POOL_IMR,\n}: {\n poolBalance: number;\n poolIMR?: number;\n riskFactor: number;\n}) => poolBalance / (poolIMR * Math.sqrt(riskFactor));\n\nexport const calculateEstimatedExecutionPrice = (\n poolPrice: number,\n size: number,\n oraclePrice: number,\n maxExposure: number,\n depth: number,\n) =>\n Math.max(0, poolPrice * (1 + (size * oraclePrice) / (depth * maxExposure)));\n\nexport const calculateTradeFee = ({\n feeRate,\n tradeNotional,\n}: {\n feeRate: number;\n tradeNotional: number;\n}) => feeRate * Math.abs(tradeNotional);\n\nexport const calculateSpread = ({\n depthFactor,\n maxExposure,\n oraclePrice,\n poolPrice,\n tradeNotional,\n}: {\n depthFactor: number;\n maxExposure: number;\n oraclePrice: number;\n poolPrice: number;\n tradeNotional: number;\n}) =>\n (poolPrice / oraclePrice) *\n (1 + tradeNotional / (depthFactor * maxExposure) - 1) *\n tradeNotional;\n\nexport const calculateEstimatedLiquidationPrice = ({\n LMR,\n accountBalance,\n isShort,\n notional,\n oraclePrice,\n}: {\n LMR: number;\n accountBalance: number;\n isShort: boolean;\n notional: number;\n oraclePrice: number;\n}) =>\n Math.max(\n 0,\n oraclePrice *\n (1 - ((accountBalance - LMR) / notional) * (isShort ? -1 : 1)),\n );\n\nexport const calculateLeverage = ({\n imrMultiplier,\n riskFactor,\n}: {\n imrMultiplier: number;\n riskFactor: number;\n}) => 1 / (imrMultiplier * Math.sqrt(riskFactor));\n\nexport const calculateRequiredMargin = ({\n currIMR,\n currentNotional,\n leverage,\n tradeNotional,\n}: {\n currIMR: number;\n currentNotional: number;\n leverage: number;\n tradeNotional: number;\n}) =>\n currIMR +\n (Math.abs(currentNotional + tradeNotional) - Math.abs(currentNotional)) /\n leverage;\n\nexport const calculateMaxOrderSize = ({\n currIMR,\n currNodeBalance,\n currNotional,\n depthFactor,\n extendingPosition,\n feeRate,\n isShortTrade,\n leverage,\n maxExposure,\n oraclePrice,\n poolPrice,\n}: {\n currIMR: number;\n currNodeBalance: number;\n currNotional: number;\n depthFactor: number;\n extendingPosition: boolean;\n feeRate: number;\n isShortTrade: boolean;\n leverage: number;\n maxExposure: number;\n oraclePrice: number;\n poolPrice: number;\n}) => {\n const a = poolPrice / oraclePrice;\n const c = 1 / (depthFactor * maxExposure);\n const R = a - 1 - feeRate * (isShortTrade ? -1 : 1);\n const SN = currNotional < 0 ? -1 : 1;\n const Q = R - (SN / leverage) * (extendingPosition ? 1 : -1);\n return Math.abs(\n (-1 * Q +\n Math.sqrt(\n Math.pow(Q, 2) -\n 4 *\n a *\n c *\n (currNodeBalance -\n currIMR +\n (extendingPosition ? 0 : ((2 * SN) / leverage) * currNotional)),\n ) *\n (isShortTrade ? 1 : -1)) /\n (2 * a * c),\n );\n};\n\nexport const calculateIMR = ({\n marketLeverages,\n marketPrices,\n positions,\n}: {\n accountLeverages: Map<AccountId, number>;\n marketLeverages: Map<MarketId, number>;\n marketPrices: Map<MarketId, number>;\n positions: Map<MarketId, number>;\n}) => {\n return Array.from(positions.entries()).reduce(\n (sum, [marketId, positionSize]) => {\n const leverage = marketLeverages.get(marketId);\n return leverage\n ? sum +\n (Math.abs(positionSize) * (marketPrices.get(marketId) ?? 0)) /\n leverage\n : sum;\n },\n 0,\n );\n};\n\nexport const calculateLMR = ({\n marketPrices,\n positions,\n riskFactors,\n marketId,\n tradeSize,\n}: {\n marketId?: string;\n marketPrices: Map<MarketId, number>;\n positions: Map<MarketId, number>;\n riskFactors: Map<MarketId, number>;\n tradeSize?: number;\n}) =>\n Array.from(\n (marketId && tradeSize\n ? mergeMap(positions, [\n [marketId, (positions.get(marketId) ?? 0) + tradeSize],\n ])\n : positions\n ).entries(),\n ).reduce((sum, [marketId, positionSize]) => {\n const riskFactor = riskFactors.get(marketId);\n return riskFactor\n ? sum +\n Math.abs(positionSize) *\n (marketPrices.get(marketId) ?? 0) *\n Math.sqrt(riskFactor)\n : sum;\n }, 0);\n\n// if account balance is below LMR position is liquidable\n\nexport const calculateMarginRatio = ({\n LMR,\n totalBalance,\n tradeCost,\n}: {\n LMR: number;\n totalBalance: number;\n tradeCost: number;\n}) => {\n if (LMR === 0) {\n return 0;\n }\n if (tradeCost > totalBalance) {\n return 1;\n }\n if (totalBalance === tradeCost) {\n return Infinity;\n }\n return Math.min(1, LMR / (totalBalance - tradeCost));\n};\n\nexport const calculateTotalMargin = ({\n marketsTrackers,\n accountBalances,\n assetPrices,\n marketsTokenInfo,\n positions,\n rUSDAddress,\n}: {\n accountBalances: Map<Address, number>;\n assetPrices: Map<Address, number>;\n marketsTokenInfo: Map<\n MarketId,\n {\n quoteTokenId: string;\n underlyingAssetId: string;\n }\n >;\n marketsTrackers: Map<\n MarketId,\n {\n longADLUnwindPrice: number;\n longBaseMultiplier: number;\n longFundingValue: number;\n shortADLUnwindPrice: number;\n shortBaseMultiplier: number;\n shortFundingValue: number;\n }\n >;\n positions: {\n adlUnwindPrice: number;\n base: number;\n baseMultiplier: number;\n fundingValue: number;\n lastPrice: number;\n marketId: string;\n realizedPnl: number;\n }[];\n rUSDAddress?: string;\n}) => {\n const pnl = new Map<Address, number>();\n const rUSDPrice = (rUSDAddress && assetPrices.get(rUSDAddress)) ?? 1;\n positions.forEach((position) => {\n const marketTracker = marketsTrackers?.get(position.marketId);\n const tokenInfo = marketsTokenInfo.get(position.marketId);\n if (!tokenInfo) return;\n let fundingCashFlow = 0;\n let adlCashFlow = 0;\n\n if (marketTracker) {\n // fundingCashFlow\n const marketTrackerFundingValue =\n position.base < 0\n ? marketTracker.shortFundingValue\n : marketTracker.longFundingValue;\n const trackerDelta = marketTrackerFundingValue - position.fundingValue;\n fundingCashFlow =\n (trackerDelta / position.baseMultiplier) * -1 * position.base;\n\n // adlCashFlow\n const adlUnwindPrice =\n ((position.base < 0\n ? marketTracker.shortADLUnwindPrice\n : marketTracker.longADLUnwindPrice) -\n position.adlUnwindPrice) /\n position.baseMultiplier;\n const baseMultiplier =\n (position.base < 0\n ? marketTracker.shortBaseMultiplier\n : marketTracker.longBaseMultiplier) / position.baseMultiplier;\n const lastPriceCoefficient = 1 - baseMultiplier;\n const initialPrice = lastPriceCoefficient * position.lastPrice;\n adlCashFlow = (adlUnwindPrice - initialPrice) * position.base;\n }\n\n const unrealizedPnl =\n ((assetPrices.get(tokenInfo.quoteTokenId) ?? 0) - position.lastPrice) *\n position.base;\n\n pnl.set(\n tokenInfo.underlyingAssetId,\n (pnl.get(tokenInfo.underlyingAssetId) ?? 0) +\n position.realizedPnl +\n fundingCashFlow +\n adlCashFlow +\n unrealizedPnl,\n );\n });\n\n return Array.from(accountBalances.entries()).reduce(\n (sum, [address, balance]) =>\n sum +\n (balance + (pnl.get(address) ?? 0)) *\n (address === rUSDAddress\n ? 1\n : (assetPrices.get(address) ?? 0) / (rUSDPrice || 1)),\n 0,\n );\n};\n"]}
@@ -12,17 +12,11 @@ var __assign = (this && this.__assign) || function () {
12
12
  };
13
13
  var _a;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.SOCKET_EMPTY_PAYLOAD_SIZE = exports.SOCKET_BRIDGE_IN_MSG_GAS_LIMIT = exports.getAllMarketIds = exports.marketIdToAssetPairMapper = exports.marketAssetPairIdMapper = exports.SPECIAL_TIER_THRESHOLD = exports.VOLUME_TIER_MAP = exports.TRADING_LOTTERY_BOOST = exports.INSTANT_TRADING_RATE_XP = exports.conditionalOrderTypeNames = exports.RANKS_TRADING = exports.RANKS = exports.WHITELISTED_WALLETS = exports.CHANNEL_NAME = exports.getCurrentCandleRedisKey = exports.ONE_DAY_IN_SECONDS = exports.API_TIMEOUT = exports.MAX_UINT128 = void 0;
15
+ exports.SOCKET_EMPTY_PAYLOAD_SIZE = exports.SOCKET_BRIDGE_IN_MSG_GAS_LIMIT = exports.getAllMarketIds = exports.marketIdToAssetPairMapper = exports.marketAssetPairIdMapper = exports.SPECIAL_TIER_THRESHOLD = exports.VOLUME_TIER_MAP = exports.TRADING_LOTTERY_BOOST = exports.INSTANT_TRADING_RATE_XP = exports.conditionalOrderTypeNames = exports.RANKS_TRADING = exports.RANKS = exports.WHITELISTED_WALLETS = exports.CHANNEL_NAME = exports.ONE_DAY_IN_SECONDS = exports.API_TIMEOUT = exports.MAX_UINT128 = void 0;
16
16
  var types_1 = require("../types");
17
17
  exports.MAX_UINT128 = Math.pow(2, 128) - 1;
18
18
  exports.API_TIMEOUT = 2500;
19
19
  exports.ONE_DAY_IN_SECONDS = 60 * 60 * 24;
20
- var getCurrentCandleRedisKey = function (assetPairId) {
21
- return "candles:".concat(assetPairId, ":current");
22
- };
23
- exports.getCurrentCandleRedisKey = getCurrentCandleRedisKey;
24
- // Redis PubSub Channels
25
- // TODO: bring the rest in here as well
26
20
  exports.CHANNEL_NAME = 'redis-pub-sub';
27
21
  exports.WHITELISTED_WALLETS = [
28
22
  '0xE116e2c0c2B0e7cd88060F06e2b2D7981Ef897ef',
@@ -1 +1 @@
1
- {"version":3,"file":"consts.js","sourceRoot":"/","sources":["utils/consts.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ConditionalOrderType,\n ConditionalOrderTypeName,\n Rank,\n RankTrading,\n AssetPair,\n} from '../types';\n\nexport const MAX_UINT128 = 2 ** 128 - 1;\nexport const API_TIMEOUT: number = 2500;\n\nexport const ONE_DAY_IN_SECONDS: number = 60 * 60 * 24;\n\nexport const getCurrentCandleRedisKey = (assetPairId: AssetPair) =>\n `candles:${assetPairId}:current`;\n\n// Redis PubSub Channels\n\n// TODO: bring the rest in here as well\nexport const CHANNEL_NAME = 'redis-pub-sub' as const;\n\nexport const WHITELISTED_WALLETS = [\n '0xE116e2c0c2B0e7cd88060F06e2b2D7981Ef897ef',\n '0xb9db1789e8998eEDB6a53348Fe57Dcd080405cD4',\n '0x9A47F123916fC4745aCC6868D88450DC6056d335',\n '0x8d24B1663E80B4d1aB85e6B710Cd9178e475fd60',\n '0x1A0E5AbE817FDC9C000176183FA54e4B86940a83',\n '0x2b38d2d4FEcf085Eb7552607b5A5D631180015D6',\n '0xFcC63268172cDcf1Ae6D9dC572a10d0De7303C92',\n '0xDa0aA49cA0ca58939b76BaeCDcbfDb04b40CF6e8',\n '0xe33340635435BCA1E7686af89971D23525b2d8F8',\n '0xF8F6B70a36f4398f0853a311dC6699Aba8333Cc1', // internal dev account for testing\n '0x564aa5a2e98bdfcb876e8bcce129c18b6f052a0d',\n '0xaE173a960084903b1d278Ff9E3A81DeD82275556',\n '0x7aa47a9737395ae9e98E8b25aC97ee04b205dC22',\n '0xfd4295c1a0b07e6b706f0ab83dc9eb461b7f17b3', // input from simon\n '0x2fa11ef008c4b585ccf0a76861794ac7ae5a3a67', // brokoli\n '0x423063ed854736ae151B79032e4275AB57245173',\n '0xb89b383C26c2514907b6De5B6df96b2d97f425eC',\n];\n\nexport const RANKS: Record<number, Rank> = {\n 0: {\n rankNumber: 0,\n rankName: '',\n rankLetter: '',\n },\n 1: {\n rankNumber: 1,\n rankName: 'Alpha',\n rankLetter: 'α',\n },\n 2: {\n rankNumber: 2,\n rankName: 'Beta',\n rankLetter: 'β',\n },\n 3: {\n rankNumber: 3,\n rankName: 'Gamma',\n rankLetter: 'γ',\n },\n 4: {\n rankNumber: 4,\n rankName: 'Delta',\n rankLetter: 'δ',\n },\n 5: {\n rankNumber: 5,\n rankName: 'Epsilon',\n rankLetter: 'ε',\n },\n 6: {\n rankNumber: 6,\n rankName: 'Zeta',\n rankLetter: 'ζ',\n },\n 7: {\n rankNumber: 7,\n rankName: 'Eta',\n rankLetter: 'η',\n },\n 8: {\n rankNumber: 8,\n rankName: 'Theta',\n rankLetter: 'θ',\n },\n 9: {\n rankNumber: 9,\n rankName: 'Iota',\n rankLetter: 'ι',\n },\n 10: {\n rankNumber: 10,\n rankName: 'Kappa',\n rankLetter: 'κ',\n },\n};\n\nexport const RANKS_TRADING: Record<number, RankTrading> = {\n 0: {\n rankNumber: 0,\n rankName: '',\n },\n 1: {\n rankNumber: 1,\n rankName: 'Heracles',\n },\n 2: {\n rankNumber: 2,\n rankName: 'Perseus',\n },\n 3: {\n rankNumber: 3,\n rankName: 'Achilles',\n },\n};\n\nexport const conditionalOrderTypeNames: Record<\n ConditionalOrderType,\n ConditionalOrderTypeName\n> = {\n [ConditionalOrderType.STOP_LOSS]: 'Stop Loss',\n [ConditionalOrderType.TAKE_PROFIT]: 'Take Profit',\n [ConditionalOrderType.LIMIT_ORDER]: 'Limit Order',\n};\n\nexport const INSTANT_TRADING_RATE_XP = 2;\nexport const TRADING_LOTTERY_BOOST = 10;\n\nexport const VOLUME_TIER_MAP: Record<number, number> = {\n 0: 0, // Tier 0: $0 volume\n 1: 100_000, // Tier 1: $100,000 volume\n 2: 1_000_000, // Tier 2: $1,000,000 volume\n 3: 10_000_000, // Tier 3: $10,000,000 volume\n 4: 100_000_000, // Tier 4: $100,000,000 volume\n 5: 500_000_000, // Tier 5: $500,000,000 volume\n 6: 1_000_000_000, // Tier 6: $1,000,000,000 volume\n};\n\nexport const SPECIAL_TIER_THRESHOLD = 100;\n\nexport const marketAssetPairIdMapper: Record<string, string> = {\n ETHUSDMARK: '1',\n BTCUSDMARK: '2',\n SOLUSDMARK: '3',\n ARBUSDMARK: '4',\n OPUSDMARK: '5',\n AVAXUSDMARK: '6',\n MKRUSDMARK: '7',\n LINKUSDMARK: '8',\n AAVEUSDMARK: '9',\n CRVUSDMARK: '10',\n UNIUSDMARK: '11',\n SUIUSDMARK: '12',\n TIAUSDMARK: '13',\n SEIUSDMARK: '14',\n ZROUSDMARK: '15',\n XRPUSDMARK: '16',\n WIFUSDMARK: '17',\n '1000PEPEUSDMARK': '18',\n POPCATUSDMARK: '19',\n DOGEUSDMARK: '20',\n '1000SHIBUSDMARK': '21',\n '1000BONKUSDMARK': '22',\n APTUSDMARK: '23',\n BNBUSDMARK: '24',\n JTOUSDMARK: '25',\n ADAUSDMARK: '26',\n LDOUSDMARK: '27',\n POLUSDMARK: '28',\n NEARUSDMARK: '29',\n FTMUSD: '30',\n ENAUSDMARK: '31',\n EIGENUSDMARK: '32',\n PENDLEUSDMARK: '33',\n GOATUSDMARK: '34',\n GRASSUSDMARK: '35',\n '1000NEIROUSDMARK': '36',\n DOTUSDMARK: '37',\n LTCUSDMARK: '38',\n PYTHUSDMARK: '39',\n JUPUSDMARK: '40',\n PENGUUSDMARK: '41',\n TRUMPUSDMARK: '42',\n HYPEUSDMARK: '43',\n VIRTUALUSDMARK: '44',\n AI16ZUSDMARK: '45',\n AIXBTUSDMARK: '46',\n SUSDMARK: '47',\n FARTCOINUSDMARK: '48',\n GRIFFAINUSDMARK: '49',\n WLDUSDMARK: '50',\n ATOMUSDMARK: '51',\n APEUSDMARK: '52',\n TONUSDMARK: '53',\n ONDOUSDMARK: '54',\n TRXUSDMARK: '55',\n INJUSDMARK: '56',\n MOVEUSDMARK: '57',\n BERAUSDMARK: '58',\n LAYERUSDMARK: '59',\n TAOUSDMARK: '60',\n IPUSDMARK: '61',\n MEUSDMARK: '62',\n};\n\nexport const marketIdToAssetPairMapper: Record<string, string> = Object.keys(\n marketAssetPairIdMapper,\n).reduce((acc, key) => ({ ...acc, [marketAssetPairIdMapper[key]]: key }), {});\n\nexport const getAllMarketIds = () => Object.keys(marketAssetPairIdMapper);\nexport const SOCKET_BRIDGE_IN_MSG_GAS_LIMIT = BigInt('20000000');\nexport const SOCKET_EMPTY_PAYLOAD_SIZE = 160;\n"]}
1
+ {"version":3,"file":"consts.js","sourceRoot":"/","sources":["utils/consts.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AssetPair,\n ConditionalOrderType,\n ConditionalOrderTypeName,\n Rank,\n RankTrading,\n} from '../types';\n\nexport const MAX_UINT128 = 2 ** 128 - 1;\nexport const API_TIMEOUT: number = 2500;\n\nexport const ONE_DAY_IN_SECONDS: number = 60 * 60 * 24;\n\nexport const CHANNEL_NAME = 'redis-pub-sub' as const;\n\nexport const WHITELISTED_WALLETS = [\n '0xE116e2c0c2B0e7cd88060F06e2b2D7981Ef897ef',\n '0xb9db1789e8998eEDB6a53348Fe57Dcd080405cD4',\n '0x9A47F123916fC4745aCC6868D88450DC6056d335',\n '0x8d24B1663E80B4d1aB85e6B710Cd9178e475fd60',\n '0x1A0E5AbE817FDC9C000176183FA54e4B86940a83',\n '0x2b38d2d4FEcf085Eb7552607b5A5D631180015D6',\n '0xFcC63268172cDcf1Ae6D9dC572a10d0De7303C92',\n '0xDa0aA49cA0ca58939b76BaeCDcbfDb04b40CF6e8',\n '0xe33340635435BCA1E7686af89971D23525b2d8F8',\n '0xF8F6B70a36f4398f0853a311dC6699Aba8333Cc1', // internal dev account for testing\n '0x564aa5a2e98bdfcb876e8bcce129c18b6f052a0d',\n '0xaE173a960084903b1d278Ff9E3A81DeD82275556',\n '0x7aa47a9737395ae9e98E8b25aC97ee04b205dC22',\n '0xfd4295c1a0b07e6b706f0ab83dc9eb461b7f17b3', // input from simon\n '0x2fa11ef008c4b585ccf0a76861794ac7ae5a3a67', // brokoli\n '0x423063ed854736ae151B79032e4275AB57245173',\n '0xb89b383C26c2514907b6De5B6df96b2d97f425eC',\n];\n\nexport const RANKS: Record<number, Rank> = {\n 0: {\n rankNumber: 0,\n rankName: '',\n rankLetter: '',\n },\n 1: {\n rankNumber: 1,\n rankName: 'Alpha',\n rankLetter: 'α',\n },\n 2: {\n rankNumber: 2,\n rankName: 'Beta',\n rankLetter: 'β',\n },\n 3: {\n rankNumber: 3,\n rankName: 'Gamma',\n rankLetter: 'γ',\n },\n 4: {\n rankNumber: 4,\n rankName: 'Delta',\n rankLetter: 'δ',\n },\n 5: {\n rankNumber: 5,\n rankName: 'Epsilon',\n rankLetter: 'ε',\n },\n 6: {\n rankNumber: 6,\n rankName: 'Zeta',\n rankLetter: 'ζ',\n },\n 7: {\n rankNumber: 7,\n rankName: 'Eta',\n rankLetter: 'η',\n },\n 8: {\n rankNumber: 8,\n rankName: 'Theta',\n rankLetter: 'θ',\n },\n 9: {\n rankNumber: 9,\n rankName: 'Iota',\n rankLetter: 'ι',\n },\n 10: {\n rankNumber: 10,\n rankName: 'Kappa',\n rankLetter: 'κ',\n },\n};\n\nexport const RANKS_TRADING: Record<number, RankTrading> = {\n 0: {\n rankNumber: 0,\n rankName: '',\n },\n 1: {\n rankNumber: 1,\n rankName: 'Heracles',\n },\n 2: {\n rankNumber: 2,\n rankName: 'Perseus',\n },\n 3: {\n rankNumber: 3,\n rankName: 'Achilles',\n },\n};\n\nexport const conditionalOrderTypeNames: Record<\n ConditionalOrderType,\n ConditionalOrderTypeName\n> = {\n [ConditionalOrderType.STOP_LOSS]: 'Stop Loss',\n [ConditionalOrderType.TAKE_PROFIT]: 'Take Profit',\n [ConditionalOrderType.LIMIT_ORDER]: 'Limit Order',\n};\n\nexport const INSTANT_TRADING_RATE_XP = 2;\nexport const TRADING_LOTTERY_BOOST = 10;\n\nexport const VOLUME_TIER_MAP: Record<number, number> = {\n 0: 0, // Tier 0: $0 volume\n 1: 100_000, // Tier 1: $100,000 volume\n 2: 1_000_000, // Tier 2: $1,000,000 volume\n 3: 10_000_000, // Tier 3: $10,000,000 volume\n 4: 100_000_000, // Tier 4: $100,000,000 volume\n 5: 500_000_000, // Tier 5: $500,000,000 volume\n 6: 1_000_000_000, // Tier 6: $1,000,000,000 volume\n};\n\nexport const SPECIAL_TIER_THRESHOLD = 100;\n\nexport const marketAssetPairIdMapper: Record<string, string> = {\n ETHUSDMARK: '1',\n BTCUSDMARK: '2',\n SOLUSDMARK: '3',\n ARBUSDMARK: '4',\n OPUSDMARK: '5',\n AVAXUSDMARK: '6',\n MKRUSDMARK: '7',\n LINKUSDMARK: '8',\n AAVEUSDMARK: '9',\n CRVUSDMARK: '10',\n UNIUSDMARK: '11',\n SUIUSDMARK: '12',\n TIAUSDMARK: '13',\n SEIUSDMARK: '14',\n ZROUSDMARK: '15',\n XRPUSDMARK: '16',\n WIFUSDMARK: '17',\n '1000PEPEUSDMARK': '18',\n POPCATUSDMARK: '19',\n DOGEUSDMARK: '20',\n '1000SHIBUSDMARK': '21',\n '1000BONKUSDMARK': '22',\n APTUSDMARK: '23',\n BNBUSDMARK: '24',\n JTOUSDMARK: '25',\n ADAUSDMARK: '26',\n LDOUSDMARK: '27',\n POLUSDMARK: '28',\n NEARUSDMARK: '29',\n FTMUSD: '30',\n ENAUSDMARK: '31',\n EIGENUSDMARK: '32',\n PENDLEUSDMARK: '33',\n GOATUSDMARK: '34',\n GRASSUSDMARK: '35',\n '1000NEIROUSDMARK': '36',\n DOTUSDMARK: '37',\n LTCUSDMARK: '38',\n PYTHUSDMARK: '39',\n JUPUSDMARK: '40',\n PENGUUSDMARK: '41',\n TRUMPUSDMARK: '42',\n HYPEUSDMARK: '43',\n VIRTUALUSDMARK: '44',\n AI16ZUSDMARK: '45',\n AIXBTUSDMARK: '46',\n SUSDMARK: '47',\n FARTCOINUSDMARK: '48',\n GRIFFAINUSDMARK: '49',\n WLDUSDMARK: '50',\n ATOMUSDMARK: '51',\n APEUSDMARK: '52',\n TONUSDMARK: '53',\n ONDOUSDMARK: '54',\n TRXUSDMARK: '55',\n INJUSDMARK: '56',\n MOVEUSDMARK: '57',\n BERAUSDMARK: '58',\n LAYERUSDMARK: '59',\n TAOUSDMARK: '60',\n IPUSDMARK: '61',\n MEUSDMARK: '62',\n};\n\nexport const marketIdToAssetPairMapper: Record<string, AssetPair> = Object.keys(\n marketAssetPairIdMapper,\n).reduce((acc, key) => ({ ...acc, [marketAssetPairIdMapper[key]]: key }), {});\n\nexport const getAllMarketIds = () => Object.keys(marketAssetPairIdMapper);\nexport const SOCKET_BRIDGE_IN_MSG_GAS_LIMIT = BigInt('20000000');\nexport const SOCKET_EMPTY_PAYLOAD_SIZE = 160;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reyaxyz/common",
3
- "version": "0.274.0",
3
+ "version": "0.274.2",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -44,5 +44,5 @@
44
44
  "generate:coverage-badges": "npx istanbul-badges-readme --silent"
45
45
  },
46
46
  "packageManager": "pnpm@8.3.1",
47
- "gitHead": "c2e61538874dfd68561522b5115c482e61804906"
47
+ "gitHead": "ee0392ec93f67030e29f22174c47d338824cc4eb"
48
48
  }
@@ -12,6 +12,7 @@ export enum CommandType {
12
12
  DUTCH_LIQUIDATION,
13
13
  MATCH_ORDER,
14
14
  TRANSFER_MARGIN_ACCOUNT,
15
+ CAMELOT_SWAP,
15
16
  MANAGE_POOL_STAKE,
16
17
  }
17
18
 
@@ -21,6 +22,9 @@ const ABI_DEFINITION: { [key in CommandType]: string[] } = {
21
22
  [CommandType.MATCH_ORDER]: ['uint128[]', 'bytes'],
22
23
  [CommandType.DUTCH_LIQUIDATION]: ['tuple(uint128,address,uint128[],bytes[])'],
23
24
  [CommandType.TRANSFER_MARGIN_ACCOUNT]: ['tuple(uint128,address,uint256)'],
25
+ [CommandType.CAMELOT_SWAP]: [
26
+ 'tuple(uint256,uint256,address[],address[],address[])',
27
+ ],
24
28
  [CommandType.MANAGE_POOL_STAKE]: ['uint8', 'bytes'],
25
29
  };
26
30
 
@@ -139,7 +139,6 @@ export const calculateMaxOrderSize = ({
139
139
  };
140
140
 
141
141
  export const calculateIMR = ({
142
- accountLeverages,
143
142
  marketLeverages,
144
143
  marketPrices,
145
144
  positions,
@@ -151,8 +150,7 @@ export const calculateIMR = ({
151
150
  }) => {
152
151
  return Array.from(positions.entries()).reduce(
153
152
  (sum, [marketId, positionSize]) => {
154
- const leverage =
155
- accountLeverages.get(marketId) || marketLeverages.get(marketId);
153
+ const leverage = marketLeverages.get(marketId);
156
154
  return leverage
157
155
  ? sum +
158
156
  (Math.abs(positionSize) * (marketPrices.get(marketId) ?? 0)) /
@@ -1,9 +1,9 @@
1
1
  import {
2
+ AssetPair,
2
3
  ConditionalOrderType,
3
4
  ConditionalOrderTypeName,
4
5
  Rank,
5
6
  RankTrading,
6
- AssetPair,
7
7
  } from '../types';
8
8
 
9
9
  export const MAX_UINT128 = 2 ** 128 - 1;
@@ -11,12 +11,6 @@ export const API_TIMEOUT: number = 2500;
11
11
 
12
12
  export const ONE_DAY_IN_SECONDS: number = 60 * 60 * 24;
13
13
 
14
- export const getCurrentCandleRedisKey = (assetPairId: AssetPair) =>
15
- `candles:${assetPairId}:current`;
16
-
17
- // Redis PubSub Channels
18
-
19
- // TODO: bring the rest in here as well
20
14
  export const CHANNEL_NAME = 'redis-pub-sub' as const;
21
15
 
22
16
  export const WHITELISTED_WALLETS = [
@@ -205,7 +199,7 @@ export const marketAssetPairIdMapper: Record<string, string> = {
205
199
  MEUSDMARK: '62',
206
200
  };
207
201
 
208
- export const marketIdToAssetPairMapper: Record<string, string> = Object.keys(
202
+ export const marketIdToAssetPairMapper: Record<string, AssetPair> = Object.keys(
209
203
  marketAssetPairIdMapper,
210
204
  ).reduce((acc, key) => ({ ...acc, [marketAssetPairIdMapper[key]]: key }), {});
211
205