@drift-labs/common 1.0.25 → 1.0.26

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.
@@ -24,53 +24,35 @@ const getOrderLabelFromOrderDetails = (orderDetails) => {
24
24
  return 'Market (Triggered)';
25
25
  }
26
26
  const isTriggerAbove = (0, utils_1.matchEnum)(orderDetails.triggerCondition, sdk_1.OrderTriggerCondition.ABOVE);
27
- const isExistingPositionShort = (0, utils_1.matchEnum)(orderDetails.existingPositionDirection, sdk_1.PositionDirection.SHORT);
28
27
  const isOrderDirectionShort = (0, utils_1.matchEnum)(orderDetails.direction, sdk_1.PositionDirection.SHORT);
29
28
  if (isTriggerAbove) {
30
- return isExistingPositionShort
31
- ? isOrderDirectionShort
32
- ? 'Trigger Market' // trigger above, existing position short, order direction short
33
- : orders_1.UI_ORDER_TYPES.stopMarket.label // trigger above, existing position short, order direction long
34
- : isOrderDirectionShort
35
- ? orders_1.UI_ORDER_TYPES.takeProfitMarket.label // trigger above, existing position long, order direction short
36
- : 'Trigger Market'; // trigger above, existing position long, order direction long
29
+ return isOrderDirectionShort
30
+ ? orders_1.UI_ORDER_TYPES.takeProfitMarket.label
31
+ : orders_1.UI_ORDER_TYPES.stopMarket.label;
37
32
  }
38
33
  else {
39
- return isExistingPositionShort
40
- ? isOrderDirectionShort
41
- ? 'Trigger Market' // trigger below, existing position short, order direction short
42
- : orders_1.UI_ORDER_TYPES.takeProfitMarket.label // trigger below, existing position short, order direction long
43
- : isOrderDirectionShort
44
- ? orders_1.UI_ORDER_TYPES.stopMarket.label // trigger below, existing position long, order direction short
45
- : 'Trigger Market'; // trigger below, existing position long, order direction long
34
+ return isOrderDirectionShort
35
+ ? orders_1.UI_ORDER_TYPES.stopMarket.label
36
+ : orders_1.UI_ORDER_TYPES.takeProfitMarket.label;
46
37
  }
47
38
  }
48
39
  if ((0, utils_1.matchEnum)(orderDetails.orderType, sdk_1.OrderType.TRIGGER_LIMIT)) {
49
40
  const isTriggered = (0, utils_1.matchEnum)(orderDetails.triggerCondition, sdk_1.OrderTriggerCondition.TRIGGERED_ABOVE) ||
50
41
  (0, utils_1.matchEnum)(orderDetails.triggerCondition, sdk_1.OrderTriggerCondition.TRIGGERED_BELOW);
51
42
  const isTriggerAbove = (0, utils_1.matchEnum)(orderDetails.triggerCondition, sdk_1.OrderTriggerCondition.ABOVE);
52
- const isExistingPositionLong = (0, utils_1.matchEnum)(orderDetails.existingPositionDirection, sdk_1.PositionDirection.LONG);
53
- const isOrderDirectionLong = (0, utils_1.matchEnum)(orderDetails.direction, sdk_1.PositionDirection.LONG);
43
+ const isOrderDirectionShort = (0, utils_1.matchEnum)(orderDetails.direction, sdk_1.PositionDirection.SHORT);
54
44
  if (isTriggered) {
55
45
  return 'Limit (Triggered)';
56
46
  }
57
47
  if (isTriggerAbove) {
58
- return isExistingPositionLong
59
- ? isOrderDirectionLong
60
- ? 'Trigger Limit' // trigger above, existing position long, order direction long
61
- : orders_1.UI_ORDER_TYPES.takeProfitLimit.label // trigger above, existing position long, order direction short
62
- : isExistingPositionLong
63
- ? orders_1.UI_ORDER_TYPES.stopLimit.label // trigger above, existing position short, order direction long
64
- : 'Trigger Limit'; // trigger above, existing position short, order direction short
48
+ return isOrderDirectionShort
49
+ ? orders_1.UI_ORDER_TYPES.takeProfitLimit.label
50
+ : orders_1.UI_ORDER_TYPES.stopLimit.label;
65
51
  }
66
52
  else {
67
- return isExistingPositionLong
68
- ? isOrderDirectionLong
69
- ? 'Trigger Limit' // trigger below, existing position long, order direction long
70
- : orders_1.UI_ORDER_TYPES.stopLimit.label // trigger below, existing position long, order direction short
71
- : isExistingPositionLong
72
- ? orders_1.UI_ORDER_TYPES.takeProfitLimit.label // trigger below, existing position short, order direction long
73
- : 'Trigger Limit'; // trigger below, existing position short, order direction short
53
+ return isOrderDirectionShort
54
+ ? orders_1.UI_ORDER_TYPES.stopLimit.label
55
+ : orders_1.UI_ORDER_TYPES.takeProfitLimit.label;
74
56
  }
75
57
  }
76
58
  return '-';
@@ -1 +1 @@
1
- {"version":3,"file":"order.js","sourceRoot":"","sources":["../../src/common-ui-utils/order.ts"],"names":[],"mappings":";;;AAAA,yCAcyB;AACzB,gDAU6B;AAE7B,oCAAiD;AAEjD,8CAA0D;AAC1D,qCAAwC;AAExC,MAAM,6BAA6B,GAAG,CACrC,YAOC,EACA,EAAE;;IACH,IAAI,IAAA,iBAAS,EAAC,YAAY,CAAC,SAAS,EAAE,eAAS,CAAC,MAAM,CAAC;QACtD,OAAO,uBAAc,CAAC,MAAM,CAAC,KAAK,CAAC;IAEpC,IAAI,IAAA,iBAAS,EAAC,YAAY,CAAC,SAAS,EAAE,eAAS,CAAC,KAAK,CAAC;QACrD,OAAO,GACN,YAAY,CAAC,iBAAiB;YAC9B,CAAC,CAAA,MAAA,YAAY,CAAC,iBAAiB,0CAAE,MAAM,EAAE,CAAA;YACxC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,EACJ,GAAG,uBAAc,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAEjC,IAAI,IAAA,iBAAS,EAAC,YAAY,CAAC,SAAS,EAAE,eAAS,CAAC,MAAM,CAAC;QACtD,OAAO,uBAAc,CAAC,MAAM,CAAC,KAAK,CAAC;IAEpC,IAAI,IAAA,iBAAS,EAAC,YAAY,CAAC,SAAS,EAAE,eAAS,CAAC,cAAc,CAAC,EAAE,CAAC;QACjE,MAAM,WAAW,GAChB,IAAA,iBAAS,EACR,YAAY,CAAC,gBAAgB,EAC7B,2BAAqB,CAAC,eAAe,CACrC;YACD,IAAA,iBAAS,EACR,YAAY,CAAC,gBAAgB,EAC7B,2BAAqB,CAAC,eAAe,CACrC,CAAC;QACH,IAAI,WAAW,EAAE,CAAC;YACjB,OAAO,oBAAoB,CAAC;QAC7B,CAAC;QAED,MAAM,cAAc,GAAG,IAAA,iBAAS,EAC/B,YAAY,CAAC,gBAAgB,EAC7B,2BAAqB,CAAC,KAAK,CAC3B,CAAC;QACF,MAAM,uBAAuB,GAAG,IAAA,iBAAS,EACxC,YAAY,CAAC,yBAAyB,EACtC,uBAAiB,CAAC,KAAK,CACvB,CAAC;QACF,MAAM,qBAAqB,GAAG,IAAA,iBAAS,EACtC,YAAY,CAAC,SAAS,EACtB,uBAAiB,CAAC,KAAK,CACvB,CAAC;QAEF,IAAI,cAAc,EAAE,CAAC;YACpB,OAAO,uBAAuB;gBAC7B,CAAC,CAAC,qBAAqB;oBACtB,CAAC,CAAC,gBAAgB,CAAC,gEAAgE;oBACnF,CAAC,CAAC,uBAAc,CAAC,UAAU,CAAC,KAAK,CAAC,+DAA+D;gBAClG,CAAC,CAAC,qBAAqB;oBACvB,CAAC,CAAC,uBAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,+DAA+D;oBACvG,CAAC,CAAC,gBAAgB,CAAC,CAAC,8DAA8D;QACpF,CAAC;aAAM,CAAC;YACP,OAAO,uBAAuB;gBAC7B,CAAC,CAAC,qBAAqB;oBACtB,CAAC,CAAC,gBAAgB,CAAC,gEAAgE;oBACnF,CAAC,CAAC,uBAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,+DAA+D;gBACxG,CAAC,CAAC,qBAAqB;oBACvB,CAAC,CAAC,uBAAc,CAAC,UAAU,CAAC,KAAK,CAAC,+DAA+D;oBACjG,CAAC,CAAC,gBAAgB,CAAC,CAAC,8DAA8D;QACpF,CAAC;IACF,CAAC;IAED,IAAI,IAAA,iBAAS,EAAC,YAAY,CAAC,SAAS,EAAE,eAAS,CAAC,aAAa,CAAC,EAAE,CAAC;QAChE,MAAM,WAAW,GAChB,IAAA,iBAAS,EACR,YAAY,CAAC,gBAAgB,EAC7B,2BAAqB,CAAC,eAAe,CACrC;YACD,IAAA,iBAAS,EACR,YAAY,CAAC,gBAAgB,EAC7B,2BAAqB,CAAC,eAAe,CACrC,CAAC;QAEH,MAAM,cAAc,GAAG,IAAA,iBAAS,EAC/B,YAAY,CAAC,gBAAgB,EAC7B,2BAAqB,CAAC,KAAK,CAC3B,CAAC;QACF,MAAM,sBAAsB,GAAG,IAAA,iBAAS,EACvC,YAAY,CAAC,yBAAyB,EACtC,uBAAiB,CAAC,IAAI,CACtB,CAAC;QACF,MAAM,oBAAoB,GAAG,IAAA,iBAAS,EACrC,YAAY,CAAC,SAAS,EACtB,uBAAiB,CAAC,IAAI,CACtB,CAAC;QAEF,IAAI,WAAW,EAAE,CAAC;YACjB,OAAO,mBAAmB,CAAC;QAC5B,CAAC;QAED,IAAI,cAAc,EAAE,CAAC;YACpB,OAAO,sBAAsB;gBAC5B,CAAC,CAAC,oBAAoB;oBACrB,CAAC,CAAC,eAAe,CAAC,8DAA8D;oBAChF,CAAC,CAAC,uBAAc,CAAC,eAAe,CAAC,KAAK,CAAC,+DAA+D;gBACvG,CAAC,CAAC,sBAAsB;oBACxB,CAAC,CAAC,uBAAc,CAAC,SAAS,CAAC,KAAK,CAAC,+DAA+D;oBAChG,CAAC,CAAC,eAAe,CAAC,CAAC,gEAAgE;QACrF,CAAC;aAAM,CAAC;YACP,OAAO,sBAAsB;gBAC5B,CAAC,CAAC,oBAAoB;oBACrB,CAAC,CAAC,eAAe,CAAC,8DAA8D;oBAChF,CAAC,CAAC,uBAAc,CAAC,SAAS,CAAC,KAAK,CAAC,+DAA+D;gBACjG,CAAC,CAAC,sBAAsB;oBACxB,CAAC,CAAC,uBAAc,CAAC,eAAe,CAAC,KAAK,CAAC,+DAA+D;oBACtG,CAAC,CAAC,eAAe,CAAC,CAAC,gEAAgE;QACrF,CAAC;IACF,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,6BAA6B,GAAG,CACrC,KAA0B,EAC1B,WAAmB,EACV,EAAE;IACX,IACC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACtC,CAAC,KAAK,CAAC,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE;QAChC,CAAC,WAAW;SACZ,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,EAAE,CAAA,EACpB,CAAC;QACF,OAAO,KAAK,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACjD,CAAC,CAAC;AAEF,SAAS,cAAc,CAAC,aAA4B;IACnD,OAAO,CACN,aAAa,CAAC,iBAAiB;QAC9B,4BAAoB,CAAC,iBAAiB;QACvC,aAAa,CAAC,eAAe,KAAK,4BAAoB,CAAC,eAAe;QACtE,aAAa,CAAC,eAAe,KAAK,4BAAoB,CAAC,eAAe,CACtE,CAAC;AACH,CAAC;AAED,MAAM,8BAA8B,GAAG,CACtC,SAAoB,EACpB,gBAAuC,EACvC,SAA4B,EAC5B,YAAgC,EAC/B,EAAE;IACH,MAAM,MAAM,GAAG,kBAAU,CAAC,KAAK,CAAC,SAAS,EAAE,uBAAiB,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,YAAY,GACjB,IAAA,iBAAS,EAAC,gBAAgB,EAAE,2BAAqB,CAAC,KAAK,CAAC;QACxD,IAAA,iBAAS,EAAC,gBAAgB,EAAE,2BAAqB,CAAC,eAAe,CAAC,CAAC;IAEpE,MAAM,YAAY,GACjB,IAAA,iBAAS,EAAC,gBAAgB,EAAE,2BAAqB,CAAC,KAAK,CAAC;QACxD,IAAA,iBAAS,EAAC,gBAAgB,EAAE,2BAAqB,CAAC,eAAe,CAAC,CAAC;IAEpE,6DAA6D;IAC7D,2DAA2D;IAC3D,6DAA6D;IAC7D,2DAA2D;IAE3D,IAAI,IAAA,iBAAS,EAAC,SAAS,EAAE,eAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,OAAO,iCAAwB,CAAC;IACjC,CAAC;SAAM,IAAI,IAAA,iBAAS,EAAC,SAAS,EAAE,eAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,UAAI,CAAC,EAAE,CAAC;YAC5C,OAAO,uCAA8B,CAAC;QACvC,CAAC;aAAM,CAAC;YACP,OAAO,gCAAuB,CAAC;QAChC,CAAC;IACF,CAAC;SAAM,IAAI,IAAA,iBAAS,EAAC,SAAS,EAAE,eAAS,CAAC,cAAc,CAAC,EAAE,CAAC;QAC3D,IAAI,MAAM,EAAE,CAAC;YACZ,IAAI,YAAY,EAAE,CAAC;gBAClB,OAAO,sCAA6B,CAAC;YACtC,CAAC;iBAAM,IAAI,YAAY,EAAE,CAAC;gBACzB,OAAO,6CAAoC,CAAC;YAC7C,CAAC;QACF,CAAC;aAAM,CAAC;YACP,IAAI,YAAY,EAAE,CAAC;gBAClB,OAAO,6CAAoC,CAAC;YAC7C,CAAC;iBAAM,IAAI,YAAY,EAAE,CAAC;gBACzB,OAAO,sCAA6B,CAAC;YACtC,CAAC;QACF,CAAC;IACF,CAAC;SAAM,IAAI,IAAA,iBAAS,EAAC,SAAS,EAAE,eAAS,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1D,IAAI,MAAM,EAAE,CAAC;YACZ,IAAI,YAAY,EAAE,CAAC;gBAClB,OAAO,qCAA4B,CAAC;YACrC,CAAC;iBAAM,IAAI,YAAY,EAAE,CAAC;gBACzB,OAAO,4CAAmC,CAAC;YAC5C,CAAC;QACF,CAAC;aAAM,CAAC;YACP,IAAI,YAAY,EAAE,CAAC;gBAClB,OAAO,4CAAmC,CAAC;YAC5C,CAAC;iBAAM,IAAI,YAAY,EAAE,CAAC;gBACzB,OAAO,qCAA4B,CAAC;YACrC,CAAC;QACF,CAAC;IACF,CAAC;SAAM,IAAI,IAAA,iBAAS,EAAC,SAAS,EAAE,eAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,OAAO,wCAA+B,CAAC;IACxC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,SAAS,sBAAsB,CAC9B,SAAa,EACb,KAAS,EACT,YAA0B;IAE1B,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,0BAAoB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEnE,MAAM,UAAU,GAAG,IAAA,oBAAc,EAAC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC,CAAC,IAAI,QAAE,CAAC,GAAG,CAAC;QACb,CAAC,CAAC,IAAI,QAAE,CAAC,EAAE,CAAC,CAAC;IAEd,MAAM,QAAQ,GAAG,WAAW;SAC1B,GAAG,CAAC,UAAU,CAAC;SACf,GAAG,CAAC,0BAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAEtC,MAAM,OAAO,GAAG,QAAE,CAAC,GAAG,CAAC,QAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,QAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,QAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEjE,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC;AAOD;;GAEG;AACH,SAAS,0BAA0B,CAClC,WAAmB,EACnB,WAAwB,EACxB,WAAiB,EACjB,iBAAyB,EACzB,mBAEC;IAED,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;QAC3B,gEAAgE;QAChE,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,0BAA0B,GAAG,MAAM,CAAC,gBAAgB,EAAE,GAC7D,mBAAmB,IAAI,EAAE,CAAC;IAE3B,IAAI,0BAA0B,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,EACL,eAAe,EAAE,2BAA2B,EAC5C,WAAW,EAAE,kBAAkB,GAC/B,GAAG,qBAAY,CAAC,uBAAuB,CACvC,gBAAU,CAAC,IAAI,EACf,WAAW,EACX,WAAW,CACX,CAAC;IAEF,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,iDAAiD;IACjD,IAAI,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,IAAI,iBAAiB,GAAG,kBAAkB,EAAE,CAAC;QAC5C,OAAO,wBAAkB,CAAC,sBAAsB,CAAC;IAClD,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC;AAEY,QAAA,kBAAkB,GAAG;IACjC,6BAA6B;IAC7B,6BAA6B;IAC7B,cAAc;IACd,8BAA8B;IAC9B,sBAAsB;IACtB,0BAA0B;CAC1B,CAAC","sourcesContent":["import {\n\tOrderType,\n\tOrderTriggerCondition,\n\tPositionDirection,\n\tBigNum,\n\tZERO,\n\tContractTier,\n\tBN,\n\tPERCENTAGE_PRECISION,\n\tisOneOfVariant,\n\tMarketType,\n\tDriftClient,\n\tUser,\n\tOrderParamsBitFlag,\n} from '@drift-labs/sdk';\nimport {\n\tLIMIT_ORDER_TYPE_CONFIG,\n\tMARKET_ORDER_TYPE_CONFIG,\n\tORACLE_LIMIT_ORDER_TYPE_CONFIG,\n\tORACLE_MARKET_ORDER_TYPE_CONFIG,\n\tSTOP_LIMIT_ORDER_TYPE_CONFIG,\n\tSTOP_MARKET_ORDER_TYPE_CONFIG,\n\tTAKE_PROFIT_LIMIT_ORDER_TYPE_CONFIG,\n\tTAKE_PROFIT_MARKET_ORDER_TYPE_CONFIG,\n\tUI_ORDER_TYPES,\n} from '../constants/orders';\nimport { UISerializableOrder } from '../serializableTypes';\nimport { ENUM_UTILS, matchEnum } from '../utils';\nimport { AuctionParams } from '../types';\nimport { EMPTY_AUCTION_PARAMS } from '../constants/trade';\nimport { MARKET_UTILS } from './market';\n\nconst getOrderLabelFromOrderDetails = (\n\torderDetails: Pick<\n\t\tUISerializableOrder,\n\t\t| 'orderType'\n\t\t| 'oraclePriceOffset'\n\t\t| 'direction'\n\t\t| 'triggerCondition'\n\t\t| 'existingPositionDirection'\n\t>\n) => {\n\tif (matchEnum(orderDetails.orderType, OrderType.MARKET))\n\t\treturn UI_ORDER_TYPES.market.label;\n\n\tif (matchEnum(orderDetails.orderType, OrderType.LIMIT))\n\t\treturn `${\n\t\t\torderDetails.oraclePriceOffset &&\n\t\t\t!orderDetails.oraclePriceOffset?.eqZero()\n\t\t\t\t? 'Oracle '\n\t\t\t\t: ''\n\t\t}${UI_ORDER_TYPES.limit.label}`;\n\n\tif (matchEnum(orderDetails.orderType, OrderType.ORACLE))\n\t\treturn UI_ORDER_TYPES.oracle.label;\n\n\tif (matchEnum(orderDetails.orderType, OrderType.TRIGGER_MARKET)) {\n\t\tconst isTriggered =\n\t\t\tmatchEnum(\n\t\t\t\torderDetails.triggerCondition,\n\t\t\t\tOrderTriggerCondition.TRIGGERED_ABOVE\n\t\t\t) ||\n\t\t\tmatchEnum(\n\t\t\t\torderDetails.triggerCondition,\n\t\t\t\tOrderTriggerCondition.TRIGGERED_BELOW\n\t\t\t);\n\t\tif (isTriggered) {\n\t\t\treturn 'Market (Triggered)';\n\t\t}\n\n\t\tconst isTriggerAbove = matchEnum(\n\t\t\torderDetails.triggerCondition,\n\t\t\tOrderTriggerCondition.ABOVE\n\t\t);\n\t\tconst isExistingPositionShort = matchEnum(\n\t\t\torderDetails.existingPositionDirection,\n\t\t\tPositionDirection.SHORT\n\t\t);\n\t\tconst isOrderDirectionShort = matchEnum(\n\t\t\torderDetails.direction,\n\t\t\tPositionDirection.SHORT\n\t\t);\n\n\t\tif (isTriggerAbove) {\n\t\t\treturn isExistingPositionShort\n\t\t\t\t? isOrderDirectionShort\n\t\t\t\t\t? 'Trigger Market' // trigger above, existing position short, order direction short\n\t\t\t\t\t: UI_ORDER_TYPES.stopMarket.label // trigger above, existing position short, order direction long\n\t\t\t\t: isOrderDirectionShort\n\t\t\t\t? UI_ORDER_TYPES.takeProfitMarket.label // trigger above, existing position long, order direction short\n\t\t\t\t: 'Trigger Market'; // trigger above, existing position long, order direction long\n\t\t} else {\n\t\t\treturn isExistingPositionShort\n\t\t\t\t? isOrderDirectionShort\n\t\t\t\t\t? 'Trigger Market' // trigger below, existing position short, order direction short\n\t\t\t\t\t: UI_ORDER_TYPES.takeProfitMarket.label // trigger below, existing position short, order direction long\n\t\t\t\t: isOrderDirectionShort\n\t\t\t\t? UI_ORDER_TYPES.stopMarket.label // trigger below, existing position long, order direction short\n\t\t\t\t: 'Trigger Market'; // trigger below, existing position long, order direction long\n\t\t}\n\t}\n\n\tif (matchEnum(orderDetails.orderType, OrderType.TRIGGER_LIMIT)) {\n\t\tconst isTriggered =\n\t\t\tmatchEnum(\n\t\t\t\torderDetails.triggerCondition,\n\t\t\t\tOrderTriggerCondition.TRIGGERED_ABOVE\n\t\t\t) ||\n\t\t\tmatchEnum(\n\t\t\t\torderDetails.triggerCondition,\n\t\t\t\tOrderTriggerCondition.TRIGGERED_BELOW\n\t\t\t);\n\n\t\tconst isTriggerAbove = matchEnum(\n\t\t\torderDetails.triggerCondition,\n\t\t\tOrderTriggerCondition.ABOVE\n\t\t);\n\t\tconst isExistingPositionLong = matchEnum(\n\t\t\torderDetails.existingPositionDirection,\n\t\t\tPositionDirection.LONG\n\t\t);\n\t\tconst isOrderDirectionLong = matchEnum(\n\t\t\torderDetails.direction,\n\t\t\tPositionDirection.LONG\n\t\t);\n\n\t\tif (isTriggered) {\n\t\t\treturn 'Limit (Triggered)';\n\t\t}\n\n\t\tif (isTriggerAbove) {\n\t\t\treturn isExistingPositionLong\n\t\t\t\t? isOrderDirectionLong\n\t\t\t\t\t? 'Trigger Limit' // trigger above, existing position long, order direction long\n\t\t\t\t\t: UI_ORDER_TYPES.takeProfitLimit.label // trigger above, existing position long, order direction short\n\t\t\t\t: isExistingPositionLong\n\t\t\t\t? UI_ORDER_TYPES.stopLimit.label // trigger above, existing position short, order direction long\n\t\t\t\t: 'Trigger Limit'; // trigger above, existing position short, order direction short\n\t\t} else {\n\t\t\treturn isExistingPositionLong\n\t\t\t\t? isOrderDirectionLong\n\t\t\t\t\t? 'Trigger Limit' // trigger below, existing position long, order direction long\n\t\t\t\t\t: UI_ORDER_TYPES.stopLimit.label // trigger below, existing position long, order direction short\n\t\t\t\t: isExistingPositionLong\n\t\t\t\t? UI_ORDER_TYPES.takeProfitLimit.label // trigger below, existing position short, order direction long\n\t\t\t\t: 'Trigger Limit'; // trigger below, existing position short, order direction short\n\t\t}\n\t}\n\n\treturn '-';\n};\n\nconst getLimitPriceFromOracleOffset = (\n\torder: UISerializableOrder,\n\toraclePrice: BigNum\n): BigNum => {\n\tif (\n\t\t(order.price && !order.price.eqZero()) ||\n\t\t!order.oraclePriceOffset ||\n\t\torder.oraclePriceOffset.eqZero() ||\n\t\t!oraclePrice ||\n\t\toraclePrice?.eqZero()\n\t) {\n\t\treturn order.price;\n\t}\n\treturn oraclePrice.add(order.oraclePriceOffset);\n};\n\nfunction isAuctionEmpty(auctionParams: AuctionParams) {\n\treturn (\n\t\tauctionParams.auctionStartPrice ===\n\t\t\tEMPTY_AUCTION_PARAMS.auctionStartPrice &&\n\t\tauctionParams.auctionEndPrice === EMPTY_AUCTION_PARAMS.auctionEndPrice &&\n\t\tauctionParams.auctionDuration === EMPTY_AUCTION_PARAMS.auctionDuration\n\t);\n}\n\nconst getUIOrderTypeFromSdkOrderType = (\n\torderType: OrderType,\n\ttriggerCondition: OrderTriggerCondition,\n\tdirection: PositionDirection,\n\toracleOffset: BigNum | undefined\n) => {\n\tconst isLong = ENUM_UTILS.match(direction, PositionDirection.LONG);\n\tconst triggerAbove =\n\t\tmatchEnum(triggerCondition, OrderTriggerCondition.ABOVE) ||\n\t\tmatchEnum(triggerCondition, OrderTriggerCondition.TRIGGERED_ABOVE);\n\n\tconst triggerBelow =\n\t\tmatchEnum(triggerCondition, OrderTriggerCondition.BELOW) ||\n\t\tmatchEnum(triggerCondition, OrderTriggerCondition.TRIGGERED_BELOW);\n\n\t// Buy side + trigger below: take profit for a short position\n\t// Buy side + trigger above: stop loss for a short position\n\t// Sell side + trigger above: take profit for a long position\n\t// Sell side + trigger below: stop loss for a long position\n\n\tif (matchEnum(orderType, OrderType.MARKET)) {\n\t\treturn MARKET_ORDER_TYPE_CONFIG;\n\t} else if (matchEnum(orderType, OrderType.LIMIT)) {\n\t\tif (oracleOffset && !oracleOffset.eq(ZERO)) {\n\t\t\treturn ORACLE_LIMIT_ORDER_TYPE_CONFIG;\n\t\t} else {\n\t\t\treturn LIMIT_ORDER_TYPE_CONFIG;\n\t\t}\n\t} else if (matchEnum(orderType, OrderType.TRIGGER_MARKET)) {\n\t\tif (isLong) {\n\t\t\tif (triggerAbove) {\n\t\t\t\treturn STOP_MARKET_ORDER_TYPE_CONFIG;\n\t\t\t} else if (triggerBelow) {\n\t\t\t\treturn TAKE_PROFIT_MARKET_ORDER_TYPE_CONFIG;\n\t\t\t}\n\t\t} else {\n\t\t\tif (triggerAbove) {\n\t\t\t\treturn TAKE_PROFIT_MARKET_ORDER_TYPE_CONFIG;\n\t\t\t} else if (triggerBelow) {\n\t\t\t\treturn STOP_MARKET_ORDER_TYPE_CONFIG;\n\t\t\t}\n\t\t}\n\t} else if (matchEnum(orderType, OrderType.TRIGGER_LIMIT)) {\n\t\tif (isLong) {\n\t\t\tif (triggerAbove) {\n\t\t\t\treturn STOP_LIMIT_ORDER_TYPE_CONFIG;\n\t\t\t} else if (triggerBelow) {\n\t\t\t\treturn TAKE_PROFIT_LIMIT_ORDER_TYPE_CONFIG;\n\t\t\t}\n\t\t} else {\n\t\t\tif (triggerAbove) {\n\t\t\t\treturn TAKE_PROFIT_LIMIT_ORDER_TYPE_CONFIG;\n\t\t\t} else if (triggerBelow) {\n\t\t\t\treturn STOP_LIMIT_ORDER_TYPE_CONFIG;\n\t\t\t}\n\t\t}\n\t} else if (matchEnum(orderType, OrderType.ORACLE)) {\n\t\treturn ORACLE_MARKET_ORDER_TYPE_CONFIG;\n\t}\n\tthrow new Error('Invalid order type');\n};\n\nfunction getPerpAuctionDuration(\n\tpriceDiff: BN,\n\tprice: BN,\n\tcontractTier: ContractTier\n): number {\n\tconst percentDiff = priceDiff.mul(PERCENTAGE_PRECISION).div(price);\n\n\tconst slotsPerBp = isOneOfVariant(contractTier, ['a', 'b'])\n\t\t? new BN(100)\n\t\t: new BN(60);\n\n\tconst rawSlots = percentDiff\n\t\t.mul(slotsPerBp)\n\t\t.div(PERCENTAGE_PRECISION.divn(100));\n\n\tconst clamped = BN.min(BN.max(rawSlots, new BN(5)), new BN(180));\n\n\treturn clamped.toNumber();\n}\n\nexport type HighLeverageOptions = {\n\tnumOfOpenHighLeverageSpots?: number; // if not provided, the method will assume that there is spots open\n\tenterHighLeverageModeBufferPct?: number;\n};\n\n/**\n * Mainly checks if the user will be entering high leverage mode through this order.\n */\nfunction getPerpOrderParamsBitFlags(\n\tmarketIndex: number,\n\tdriftClient: DriftClient,\n\tuserAccount: User,\n\tattemptedLeverage: number,\n\thighLeverageOptions?: {\n\t\tnumOfOpenHighLeverageSpots?: number; // if not provided, the method will assume that there is spots open\n\t}\n): number | undefined {\n\tif (attemptedLeverage < 5) {\n\t\t// there is no high leverage mode leverage that is higher than 4\n\t\treturn undefined;\n\t}\n\n\tconst { numOfOpenHighLeverageSpots = Number.MAX_SAFE_INTEGER } =\n\t\thighLeverageOptions || {};\n\n\tif (numOfOpenHighLeverageSpots <= 0) {\n\t\treturn undefined;\n\t}\n\n\tconst {\n\t\thasHighLeverage: isMarketAHighLeverageMarket,\n\t\tmaxLeverage: regularMaxLeverage,\n\t} = MARKET_UTILS.getMaxLeverageForMarket(\n\t\tMarketType.PERP,\n\t\tmarketIndex,\n\t\tdriftClient\n\t);\n\n\tif (!isMarketAHighLeverageMarket) {\n\t\treturn undefined;\n\t}\n\n\t// Check if user is already in high leverage mode\n\tif (userAccount.isHighLeverageMode('Initial')) {\n\t\treturn undefined;\n\t}\n\n\tif (attemptedLeverage > regularMaxLeverage) {\n\t\treturn OrderParamsBitFlag.UpdateHighLeverageMode;\n\t}\n\n\treturn undefined;\n}\n\nexport const ORDER_COMMON_UTILS = {\n\tgetOrderLabelFromOrderDetails,\n\tgetLimitPriceFromOracleOffset,\n\tisAuctionEmpty,\n\tgetUIOrderTypeFromSdkOrderType,\n\tgetPerpAuctionDuration,\n\tgetPerpOrderParamsBitFlags,\n};\n"]}
1
+ {"version":3,"file":"order.js","sourceRoot":"","sources":["../../src/common-ui-utils/order.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tOrderType,\n\tOrderTriggerCondition,\n\tPositionDirection,\n\tBigNum,\n\tZERO,\n\tContractTier,\n\tBN,\n\tPERCENTAGE_PRECISION,\n\tisOneOfVariant,\n\tMarketType,\n\tDriftClient,\n\tUser,\n\tOrderParamsBitFlag,\n} from '@drift-labs/sdk';\nimport {\n\tLIMIT_ORDER_TYPE_CONFIG,\n\tMARKET_ORDER_TYPE_CONFIG,\n\tORACLE_LIMIT_ORDER_TYPE_CONFIG,\n\tORACLE_MARKET_ORDER_TYPE_CONFIG,\n\tSTOP_LIMIT_ORDER_TYPE_CONFIG,\n\tSTOP_MARKET_ORDER_TYPE_CONFIG,\n\tTAKE_PROFIT_LIMIT_ORDER_TYPE_CONFIG,\n\tTAKE_PROFIT_MARKET_ORDER_TYPE_CONFIG,\n\tUI_ORDER_TYPES,\n} from '../constants/orders';\nimport { UISerializableOrder } from '../serializableTypes';\nimport { ENUM_UTILS, matchEnum } from '../utils';\nimport { AuctionParams } from '../types';\nimport { EMPTY_AUCTION_PARAMS } from '../constants/trade';\nimport { MARKET_UTILS } from './market';\n\nconst getOrderLabelFromOrderDetails = (\n\torderDetails: Pick<\n\t\tUISerializableOrder,\n\t\t| 'orderType'\n\t\t| 'oraclePriceOffset'\n\t\t| 'direction'\n\t\t| 'triggerCondition'\n\t\t| 'existingPositionDirection'\n\t>\n) => {\n\tif (matchEnum(orderDetails.orderType, OrderType.MARKET))\n\t\treturn UI_ORDER_TYPES.market.label;\n\n\tif (matchEnum(orderDetails.orderType, OrderType.LIMIT))\n\t\treturn `${\n\t\t\torderDetails.oraclePriceOffset &&\n\t\t\t!orderDetails.oraclePriceOffset?.eqZero()\n\t\t\t\t? 'Oracle '\n\t\t\t\t: ''\n\t\t}${UI_ORDER_TYPES.limit.label}`;\n\n\tif (matchEnum(orderDetails.orderType, OrderType.ORACLE))\n\t\treturn UI_ORDER_TYPES.oracle.label;\n\n\tif (matchEnum(orderDetails.orderType, OrderType.TRIGGER_MARKET)) {\n\t\tconst isTriggered =\n\t\t\tmatchEnum(\n\t\t\t\torderDetails.triggerCondition,\n\t\t\t\tOrderTriggerCondition.TRIGGERED_ABOVE\n\t\t\t) ||\n\t\t\tmatchEnum(\n\t\t\t\torderDetails.triggerCondition,\n\t\t\t\tOrderTriggerCondition.TRIGGERED_BELOW\n\t\t\t);\n\t\tif (isTriggered) {\n\t\t\treturn 'Market (Triggered)';\n\t\t}\n\n\t\tconst isTriggerAbove = matchEnum(\n\t\t\torderDetails.triggerCondition,\n\t\t\tOrderTriggerCondition.ABOVE\n\t\t);\n\t\tconst isOrderDirectionShort = matchEnum(\n\t\t\torderDetails.direction,\n\t\t\tPositionDirection.SHORT\n\t\t);\n\n\t\tif (isTriggerAbove) {\n\t\t\treturn isOrderDirectionShort\n\t\t\t\t? UI_ORDER_TYPES.takeProfitMarket.label\n\t\t\t\t: UI_ORDER_TYPES.stopMarket.label;\n\t\t} else {\n\t\t\treturn isOrderDirectionShort\n\t\t\t\t? UI_ORDER_TYPES.stopMarket.label\n\t\t\t\t: UI_ORDER_TYPES.takeProfitMarket.label;\n\t\t}\n\t}\n\n\tif (matchEnum(orderDetails.orderType, OrderType.TRIGGER_LIMIT)) {\n\t\tconst isTriggered =\n\t\t\tmatchEnum(\n\t\t\t\torderDetails.triggerCondition,\n\t\t\t\tOrderTriggerCondition.TRIGGERED_ABOVE\n\t\t\t) ||\n\t\t\tmatchEnum(\n\t\t\t\torderDetails.triggerCondition,\n\t\t\t\tOrderTriggerCondition.TRIGGERED_BELOW\n\t\t\t);\n\n\t\tconst isTriggerAbove = matchEnum(\n\t\t\torderDetails.triggerCondition,\n\t\t\tOrderTriggerCondition.ABOVE\n\t\t);\n\t\tconst isOrderDirectionShort = matchEnum(\n\t\t\torderDetails.direction,\n\t\t\tPositionDirection.SHORT\n\t\t);\n\n\t\tif (isTriggered) {\n\t\t\treturn 'Limit (Triggered)';\n\t\t}\n\n\t\tif (isTriggerAbove) {\n\t\t\treturn isOrderDirectionShort\n\t\t\t\t? UI_ORDER_TYPES.takeProfitLimit.label\n\t\t\t\t: UI_ORDER_TYPES.stopLimit.label;\n\t\t} else {\n\t\t\treturn isOrderDirectionShort\n\t\t\t\t? UI_ORDER_TYPES.stopLimit.label\n\t\t\t\t: UI_ORDER_TYPES.takeProfitLimit.label;\n\t\t}\n\t}\n\n\treturn '-';\n};\n\nconst getLimitPriceFromOracleOffset = (\n\torder: UISerializableOrder,\n\toraclePrice: BigNum\n): BigNum => {\n\tif (\n\t\t(order.price && !order.price.eqZero()) ||\n\t\t!order.oraclePriceOffset ||\n\t\torder.oraclePriceOffset.eqZero() ||\n\t\t!oraclePrice ||\n\t\toraclePrice?.eqZero()\n\t) {\n\t\treturn order.price;\n\t}\n\treturn oraclePrice.add(order.oraclePriceOffset);\n};\n\nfunction isAuctionEmpty(auctionParams: AuctionParams) {\n\treturn (\n\t\tauctionParams.auctionStartPrice ===\n\t\t\tEMPTY_AUCTION_PARAMS.auctionStartPrice &&\n\t\tauctionParams.auctionEndPrice === EMPTY_AUCTION_PARAMS.auctionEndPrice &&\n\t\tauctionParams.auctionDuration === EMPTY_AUCTION_PARAMS.auctionDuration\n\t);\n}\n\nconst getUIOrderTypeFromSdkOrderType = (\n\torderType: OrderType,\n\ttriggerCondition: OrderTriggerCondition,\n\tdirection: PositionDirection,\n\toracleOffset: BigNum | undefined\n) => {\n\tconst isLong = ENUM_UTILS.match(direction, PositionDirection.LONG);\n\tconst triggerAbove =\n\t\tmatchEnum(triggerCondition, OrderTriggerCondition.ABOVE) ||\n\t\tmatchEnum(triggerCondition, OrderTriggerCondition.TRIGGERED_ABOVE);\n\n\tconst triggerBelow =\n\t\tmatchEnum(triggerCondition, OrderTriggerCondition.BELOW) ||\n\t\tmatchEnum(triggerCondition, OrderTriggerCondition.TRIGGERED_BELOW);\n\n\t// Buy side + trigger below: take profit for a short position\n\t// Buy side + trigger above: stop loss for a short position\n\t// Sell side + trigger above: take profit for a long position\n\t// Sell side + trigger below: stop loss for a long position\n\n\tif (matchEnum(orderType, OrderType.MARKET)) {\n\t\treturn MARKET_ORDER_TYPE_CONFIG;\n\t} else if (matchEnum(orderType, OrderType.LIMIT)) {\n\t\tif (oracleOffset && !oracleOffset.eq(ZERO)) {\n\t\t\treturn ORACLE_LIMIT_ORDER_TYPE_CONFIG;\n\t\t} else {\n\t\t\treturn LIMIT_ORDER_TYPE_CONFIG;\n\t\t}\n\t} else if (matchEnum(orderType, OrderType.TRIGGER_MARKET)) {\n\t\tif (isLong) {\n\t\t\tif (triggerAbove) {\n\t\t\t\treturn STOP_MARKET_ORDER_TYPE_CONFIG;\n\t\t\t} else if (triggerBelow) {\n\t\t\t\treturn TAKE_PROFIT_MARKET_ORDER_TYPE_CONFIG;\n\t\t\t}\n\t\t} else {\n\t\t\tif (triggerAbove) {\n\t\t\t\treturn TAKE_PROFIT_MARKET_ORDER_TYPE_CONFIG;\n\t\t\t} else if (triggerBelow) {\n\t\t\t\treturn STOP_MARKET_ORDER_TYPE_CONFIG;\n\t\t\t}\n\t\t}\n\t} else if (matchEnum(orderType, OrderType.TRIGGER_LIMIT)) {\n\t\tif (isLong) {\n\t\t\tif (triggerAbove) {\n\t\t\t\treturn STOP_LIMIT_ORDER_TYPE_CONFIG;\n\t\t\t} else if (triggerBelow) {\n\t\t\t\treturn TAKE_PROFIT_LIMIT_ORDER_TYPE_CONFIG;\n\t\t\t}\n\t\t} else {\n\t\t\tif (triggerAbove) {\n\t\t\t\treturn TAKE_PROFIT_LIMIT_ORDER_TYPE_CONFIG;\n\t\t\t} else if (triggerBelow) {\n\t\t\t\treturn STOP_LIMIT_ORDER_TYPE_CONFIG;\n\t\t\t}\n\t\t}\n\t} else if (matchEnum(orderType, OrderType.ORACLE)) {\n\t\treturn ORACLE_MARKET_ORDER_TYPE_CONFIG;\n\t}\n\tthrow new Error('Invalid order type');\n};\n\nfunction getPerpAuctionDuration(\n\tpriceDiff: BN,\n\tprice: BN,\n\tcontractTier: ContractTier\n): number {\n\tconst percentDiff = priceDiff.mul(PERCENTAGE_PRECISION).div(price);\n\n\tconst slotsPerBp = isOneOfVariant(contractTier, ['a', 'b'])\n\t\t? new BN(100)\n\t\t: new BN(60);\n\n\tconst rawSlots = percentDiff\n\t\t.mul(slotsPerBp)\n\t\t.div(PERCENTAGE_PRECISION.divn(100));\n\n\tconst clamped = BN.min(BN.max(rawSlots, new BN(5)), new BN(180));\n\n\treturn clamped.toNumber();\n}\n\nexport type HighLeverageOptions = {\n\tnumOfOpenHighLeverageSpots?: number; // if not provided, the method will assume that there is spots open\n\tenterHighLeverageModeBufferPct?: number;\n};\n\n/**\n * Mainly checks if the user will be entering high leverage mode through this order.\n */\nfunction getPerpOrderParamsBitFlags(\n\tmarketIndex: number,\n\tdriftClient: DriftClient,\n\tuserAccount: User,\n\tattemptedLeverage: number,\n\thighLeverageOptions?: {\n\t\tnumOfOpenHighLeverageSpots?: number; // if not provided, the method will assume that there is spots open\n\t}\n): number | undefined {\n\tif (attemptedLeverage < 5) {\n\t\t// there is no high leverage mode leverage that is higher than 4\n\t\treturn undefined;\n\t}\n\n\tconst { numOfOpenHighLeverageSpots = Number.MAX_SAFE_INTEGER } =\n\t\thighLeverageOptions || {};\n\n\tif (numOfOpenHighLeverageSpots <= 0) {\n\t\treturn undefined;\n\t}\n\n\tconst {\n\t\thasHighLeverage: isMarketAHighLeverageMarket,\n\t\tmaxLeverage: regularMaxLeverage,\n\t} = MARKET_UTILS.getMaxLeverageForMarket(\n\t\tMarketType.PERP,\n\t\tmarketIndex,\n\t\tdriftClient\n\t);\n\n\tif (!isMarketAHighLeverageMarket) {\n\t\treturn undefined;\n\t}\n\n\t// Check if user is already in high leverage mode\n\tif (userAccount.isHighLeverageMode('Initial')) {\n\t\treturn undefined;\n\t}\n\n\tif (attemptedLeverage > regularMaxLeverage) {\n\t\treturn OrderParamsBitFlag.UpdateHighLeverageMode;\n\t}\n\n\treturn undefined;\n}\n\nexport const ORDER_COMMON_UTILS = {\n\tgetOrderLabelFromOrderDetails,\n\tgetLimitPriceFromOracleOffset,\n\tisAuctionEmpty,\n\tgetUIOrderTypeFromSdkOrderType,\n\tgetPerpAuctionDuration,\n\tgetPerpOrderParamsBitFlags,\n};\n"]}
@@ -32,14 +32,14 @@ exports.STOP_LIMIT_ORDER_TYPE_CONFIG = {
32
32
  };
33
33
  // Take Profit Market order type
34
34
  exports.TAKE_PROFIT_MARKET_ORDER_TYPE_CONFIG = {
35
- label: 'Take Profit',
35
+ label: 'TP Market',
36
36
  value: 'takeProfitMarket',
37
37
  orderType: sdk_1.OrderType.TRIGGER_MARKET,
38
38
  description: 'A Take Profit Order is an order to close the position of a given asset if its Oracle Price reaches the specified Trigger Price. If this happens, the position is closed at Market Price.',
39
39
  };
40
40
  // Take Profit Limit order type
41
41
  exports.TAKE_PROFIT_LIMIT_ORDER_TYPE_CONFIG = {
42
- label: 'Take Profit Limit',
42
+ label: 'TP Limit',
43
43
  value: 'takeProfitLimit',
44
44
  orderType: sdk_1.OrderType.TRIGGER_LIMIT,
45
45
  description: 'A Take Profit Limit Order will only execute where the Oracle Price of a given asset reaches the Trigger Price. If this happens, a Limit Order at the specified Limit Price will be placed.',
@@ -1 +1 @@
1
- {"version":3,"file":"orders.js","sourceRoot":"","sources":["../../src/constants/orders.ts"],"names":[],"mappings":";;;AAAA,yCAA4C;AAG5C,oBAAoB;AACP,QAAA,wBAAwB,GAAqB;IACzD,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,SAAS,EAAE,eAAS,CAAC,MAAM;IAC3B,WAAW,EACV,yIAAyI;CAC1I,CAAC;AAEF,mBAAmB;AACN,QAAA,uBAAuB,GAAqB;IACxD,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,eAAS,CAAC,KAAK;IAC1B,WAAW,EACV,wJAAwJ;CACzJ,CAAC;AAEF,yBAAyB;AACZ,QAAA,6BAA6B,GAAqB;IAC9D,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,YAAY;IACnB,SAAS,EAAE,eAAS,CAAC,cAAc;IACnC,WAAW,EACV,4KAA4K;CAC7K,CAAC;AAEF,wBAAwB;AACX,QAAA,4BAA4B,GAAqB;IAC7D,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,WAAW;IAClB,SAAS,EAAE,eAAS,CAAC,aAAa;IAClC,WAAW,EACV,iLAAiL;CAClL,CAAC;AAEF,gCAAgC;AACnB,QAAA,oCAAoC,GAAqB;IACrE,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,kBAAkB;IACzB,SAAS,EAAE,eAAS,CAAC,cAAc;IACnC,WAAW,EACV,0LAA0L;CAC3L,CAAC;AAEF,+BAA+B;AAClB,QAAA,mCAAmC,GAAqB;IACpE,KAAK,EAAE,mBAAmB;IAC1B,KAAK,EAAE,iBAAiB;IACxB,SAAS,EAAE,eAAS,CAAC,aAAa;IAClC,WAAW,EACV,4LAA4L;CAC7L,CAAC;AAEF,2BAA2B;AACd,QAAA,+BAA+B,GAAqB;IAChE,KAAK,EAAE,eAAe;IACtB,KAAK,EAAE,QAAQ;IACf,SAAS,EAAE,eAAS,CAAC,MAAM;CAC3B,CAAC;AAEF,0BAA0B;AACb,QAAA,8BAA8B,GAAqB;IAC/D,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,aAAa;IACpB,SAAS,EAAE,eAAS,CAAC,KAAK;IAC1B,WAAW,EACV,iNAAiN;CAClN,CAAC;AAEF,2BAA2B;AACd,QAAA,+BAA+B,GAAqB;IAChE,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,cAAc;IACrB,SAAS,EAAE,eAAS,CAAC,KAAK;IAC1B,WAAW,EACV,uNAAuN;CACxN,CAAC;AAEW,QAAA,cAAc,GAAsB;IAChD,MAAM,EAAE,gCAAwB;IAChC,KAAK,EAAE,+BAAuB;IAC9B,UAAU,EAAE,qCAA6B;IACzC,SAAS,EAAE,oCAA4B;IACvC,gBAAgB,EAAE,4CAAoC;IACtD,eAAe,EAAE,2CAAmC;IACpD,MAAM,EAAE,uCAA+B;IACvC,WAAW,EAAE,sCAA8B;IAC3C,YAAY,EAAE,uCAA+B;CAC7C,CAAC;AAEW,QAAA,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAc,CAAC,CAAC","sourcesContent":["import { OrderType } from '@drift-labs/sdk';\nimport { UIOrderTypeLookup, UIOrderTypeValue } from '../types';\n\n// Market order type\nexport const MARKET_ORDER_TYPE_CONFIG: UIOrderTypeValue = {\n\tlabel: 'Market',\n\tvalue: 'market',\n\torderType: OrderType.MARKET,\n\tdescription:\n\t\t'A Market Order is an order to buy or sell an asset immediately at the current Market Price. Users can set a maximum slippage tolerance.',\n};\n\n// Limit order type\nexport const LIMIT_ORDER_TYPE_CONFIG: UIOrderTypeValue = {\n\tlabel: 'Limit',\n\tvalue: 'limit',\n\torderType: OrderType.LIMIT,\n\tdescription:\n\t\t'A Limit Order is an order to buy or sell a given asset at a specified price. Limit Orders are triggered once Oracle Price reaches the specified price.',\n};\n\n// Stop Market order type\nexport const STOP_MARKET_ORDER_TYPE_CONFIG: UIOrderTypeValue = {\n\tlabel: 'Stop Market',\n\tvalue: 'stopMarket',\n\torderType: OrderType.TRIGGER_MARKET,\n\tdescription:\n\t\t'A Stop Market Order is an order to close the position of a given asset if its specified Trigger Price is reached. If this happens, the position is closed at Market Price.',\n};\n\n// Stop Limit order type\nexport const STOP_LIMIT_ORDER_TYPE_CONFIG: UIOrderTypeValue = {\n\tlabel: 'Stop Limit',\n\tvalue: 'stopLimit',\n\torderType: OrderType.TRIGGER_LIMIT,\n\tdescription:\n\t\t'A Stop Limit Order will only execute where the specified Trigger Price of a given asset is reached. If this happens, a Limit Order at the specified Limit Price will be placed.',\n};\n\n// Take Profit Market order type\nexport const TAKE_PROFIT_MARKET_ORDER_TYPE_CONFIG: UIOrderTypeValue = {\n\tlabel: 'Take Profit',\n\tvalue: 'takeProfitMarket',\n\torderType: OrderType.TRIGGER_MARKET,\n\tdescription:\n\t\t'A Take Profit Order is an order to close the position of a given asset if its Oracle Price reaches the specified Trigger Price. If this happens, the position is closed at Market Price.',\n};\n\n// Take Profit Limit order type\nexport const TAKE_PROFIT_LIMIT_ORDER_TYPE_CONFIG: UIOrderTypeValue = {\n\tlabel: 'Take Profit Limit',\n\tvalue: 'takeProfitLimit',\n\torderType: OrderType.TRIGGER_LIMIT,\n\tdescription:\n\t\t'A Take Profit Limit Order will only execute where the Oracle Price of a given asset reaches the Trigger Price. If this happens, a Limit Order at the specified Limit Price will be placed.',\n};\n\n// Oracle Market order type\nexport const ORACLE_MARKET_ORDER_TYPE_CONFIG: UIOrderTypeValue = {\n\tlabel: 'Oracle Market',\n\tvalue: 'oracle',\n\torderType: OrderType.ORACLE,\n};\n\n// Oracle Limit order type\nexport const ORACLE_LIMIT_ORDER_TYPE_CONFIG: UIOrderTypeValue = {\n\tlabel: 'Oracle Limit',\n\tvalue: 'oracleLimit',\n\torderType: OrderType.LIMIT,\n\tdescription:\n\t\t'An Oracle Limit Order allows you to specify an offset rather than limit price to execute your order. The offset represents the price above/below the current Oracle Price you want to be filled at. Learn more.',\n};\n\n// Scaled Orders order type\nexport const SCALED_ORDERS_ORDER_TYPE_CONFIG: UIOrderTypeValue = {\n\tlabel: 'Scale',\n\tvalue: 'scaledOrders',\n\torderType: OrderType.LIMIT,\n\tdescription:\n\t\t'A scaled order automatically generates multiple limit orders within a specified price range. It splits the order amount into several suborders and places them separately without significantly impacting the market.',\n};\n\nexport const UI_ORDER_TYPES: UIOrderTypeLookup = {\n\tmarket: MARKET_ORDER_TYPE_CONFIG,\n\tlimit: LIMIT_ORDER_TYPE_CONFIG,\n\tstopMarket: STOP_MARKET_ORDER_TYPE_CONFIG,\n\tstopLimit: STOP_LIMIT_ORDER_TYPE_CONFIG,\n\ttakeProfitMarket: TAKE_PROFIT_MARKET_ORDER_TYPE_CONFIG,\n\ttakeProfitLimit: TAKE_PROFIT_LIMIT_ORDER_TYPE_CONFIG,\n\toracle: ORACLE_MARKET_ORDER_TYPE_CONFIG,\n\toracleLimit: ORACLE_LIMIT_ORDER_TYPE_CONFIG,\n\tscaledOrders: SCALED_ORDERS_ORDER_TYPE_CONFIG,\n};\n\nexport const UI_ORDER_TYPES_LIST = Object.values(UI_ORDER_TYPES);\n"]}
1
+ {"version":3,"file":"orders.js","sourceRoot":"","sources":["../../src/constants/orders.ts"],"names":[],"mappings":";;;AAAA,yCAA4C;AAG5C,oBAAoB;AACP,QAAA,wBAAwB,GAAqB;IACzD,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,SAAS,EAAE,eAAS,CAAC,MAAM;IAC3B,WAAW,EACV,yIAAyI;CAC1I,CAAC;AAEF,mBAAmB;AACN,QAAA,uBAAuB,GAAqB;IACxD,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,eAAS,CAAC,KAAK;IAC1B,WAAW,EACV,wJAAwJ;CACzJ,CAAC;AAEF,yBAAyB;AACZ,QAAA,6BAA6B,GAAqB;IAC9D,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,YAAY;IACnB,SAAS,EAAE,eAAS,CAAC,cAAc;IACnC,WAAW,EACV,4KAA4K;CAC7K,CAAC;AAEF,wBAAwB;AACX,QAAA,4BAA4B,GAAqB;IAC7D,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,WAAW;IAClB,SAAS,EAAE,eAAS,CAAC,aAAa;IAClC,WAAW,EACV,iLAAiL;CAClL,CAAC;AAEF,gCAAgC;AACnB,QAAA,oCAAoC,GAAqB;IACrE,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,kBAAkB;IACzB,SAAS,EAAE,eAAS,CAAC,cAAc;IACnC,WAAW,EACV,0LAA0L;CAC3L,CAAC;AAEF,+BAA+B;AAClB,QAAA,mCAAmC,GAAqB;IACpE,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,iBAAiB;IACxB,SAAS,EAAE,eAAS,CAAC,aAAa;IAClC,WAAW,EACV,4LAA4L;CAC7L,CAAC;AAEF,2BAA2B;AACd,QAAA,+BAA+B,GAAqB;IAChE,KAAK,EAAE,eAAe;IACtB,KAAK,EAAE,QAAQ;IACf,SAAS,EAAE,eAAS,CAAC,MAAM;CAC3B,CAAC;AAEF,0BAA0B;AACb,QAAA,8BAA8B,GAAqB;IAC/D,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,aAAa;IACpB,SAAS,EAAE,eAAS,CAAC,KAAK;IAC1B,WAAW,EACV,iNAAiN;CAClN,CAAC;AAEF,2BAA2B;AACd,QAAA,+BAA+B,GAAqB;IAChE,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,cAAc;IACrB,SAAS,EAAE,eAAS,CAAC,KAAK;IAC1B,WAAW,EACV,uNAAuN;CACxN,CAAC;AAEW,QAAA,cAAc,GAAsB;IAChD,MAAM,EAAE,gCAAwB;IAChC,KAAK,EAAE,+BAAuB;IAC9B,UAAU,EAAE,qCAA6B;IACzC,SAAS,EAAE,oCAA4B;IACvC,gBAAgB,EAAE,4CAAoC;IACtD,eAAe,EAAE,2CAAmC;IACpD,MAAM,EAAE,uCAA+B;IACvC,WAAW,EAAE,sCAA8B;IAC3C,YAAY,EAAE,uCAA+B;CAC7C,CAAC;AAEW,QAAA,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAc,CAAC,CAAC","sourcesContent":["import { OrderType } from '@drift-labs/sdk';\nimport { UIOrderTypeLookup, UIOrderTypeValue } from '../types';\n\n// Market order type\nexport const MARKET_ORDER_TYPE_CONFIG: UIOrderTypeValue = {\n\tlabel: 'Market',\n\tvalue: 'market',\n\torderType: OrderType.MARKET,\n\tdescription:\n\t\t'A Market Order is an order to buy or sell an asset immediately at the current Market Price. Users can set a maximum slippage tolerance.',\n};\n\n// Limit order type\nexport const LIMIT_ORDER_TYPE_CONFIG: UIOrderTypeValue = {\n\tlabel: 'Limit',\n\tvalue: 'limit',\n\torderType: OrderType.LIMIT,\n\tdescription:\n\t\t'A Limit Order is an order to buy or sell a given asset at a specified price. Limit Orders are triggered once Oracle Price reaches the specified price.',\n};\n\n// Stop Market order type\nexport const STOP_MARKET_ORDER_TYPE_CONFIG: UIOrderTypeValue = {\n\tlabel: 'Stop Market',\n\tvalue: 'stopMarket',\n\torderType: OrderType.TRIGGER_MARKET,\n\tdescription:\n\t\t'A Stop Market Order is an order to close the position of a given asset if its specified Trigger Price is reached. If this happens, the position is closed at Market Price.',\n};\n\n// Stop Limit order type\nexport const STOP_LIMIT_ORDER_TYPE_CONFIG: UIOrderTypeValue = {\n\tlabel: 'Stop Limit',\n\tvalue: 'stopLimit',\n\torderType: OrderType.TRIGGER_LIMIT,\n\tdescription:\n\t\t'A Stop Limit Order will only execute where the specified Trigger Price of a given asset is reached. If this happens, a Limit Order at the specified Limit Price will be placed.',\n};\n\n// Take Profit Market order type\nexport const TAKE_PROFIT_MARKET_ORDER_TYPE_CONFIG: UIOrderTypeValue = {\n\tlabel: 'TP Market',\n\tvalue: 'takeProfitMarket',\n\torderType: OrderType.TRIGGER_MARKET,\n\tdescription:\n\t\t'A Take Profit Order is an order to close the position of a given asset if its Oracle Price reaches the specified Trigger Price. If this happens, the position is closed at Market Price.',\n};\n\n// Take Profit Limit order type\nexport const TAKE_PROFIT_LIMIT_ORDER_TYPE_CONFIG: UIOrderTypeValue = {\n\tlabel: 'TP Limit',\n\tvalue: 'takeProfitLimit',\n\torderType: OrderType.TRIGGER_LIMIT,\n\tdescription:\n\t\t'A Take Profit Limit Order will only execute where the Oracle Price of a given asset reaches the Trigger Price. If this happens, a Limit Order at the specified Limit Price will be placed.',\n};\n\n// Oracle Market order type\nexport const ORACLE_MARKET_ORDER_TYPE_CONFIG: UIOrderTypeValue = {\n\tlabel: 'Oracle Market',\n\tvalue: 'oracle',\n\torderType: OrderType.ORACLE,\n};\n\n// Oracle Limit order type\nexport const ORACLE_LIMIT_ORDER_TYPE_CONFIG: UIOrderTypeValue = {\n\tlabel: 'Oracle Limit',\n\tvalue: 'oracleLimit',\n\torderType: OrderType.LIMIT,\n\tdescription:\n\t\t'An Oracle Limit Order allows you to specify an offset rather than limit price to execute your order. The offset represents the price above/below the current Oracle Price you want to be filled at. Learn more.',\n};\n\n// Scaled Orders order type\nexport const SCALED_ORDERS_ORDER_TYPE_CONFIG: UIOrderTypeValue = {\n\tlabel: 'Scale',\n\tvalue: 'scaledOrders',\n\torderType: OrderType.LIMIT,\n\tdescription:\n\t\t'A scaled order automatically generates multiple limit orders within a specified price range. It splits the order amount into several suborders and places them separately without significantly impacting the market.',\n};\n\nexport const UI_ORDER_TYPES: UIOrderTypeLookup = {\n\tmarket: MARKET_ORDER_TYPE_CONFIG,\n\tlimit: LIMIT_ORDER_TYPE_CONFIG,\n\tstopMarket: STOP_MARKET_ORDER_TYPE_CONFIG,\n\tstopLimit: STOP_LIMIT_ORDER_TYPE_CONFIG,\n\ttakeProfitMarket: TAKE_PROFIT_MARKET_ORDER_TYPE_CONFIG,\n\ttakeProfitLimit: TAKE_PROFIT_LIMIT_ORDER_TYPE_CONFIG,\n\toracle: ORACLE_MARKET_ORDER_TYPE_CONFIG,\n\toracleLimit: ORACLE_LIMIT_ORDER_TYPE_CONFIG,\n\tscaledOrders: SCALED_ORDERS_ORDER_TYPE_CONFIG,\n};\n\nexport const UI_ORDER_TYPES_LIST = Object.values(UI_ORDER_TYPES);\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drift-labs/common",
3
- "version": "1.0.25",
3
+ "version": "1.0.26",
4
4
  "description": "Common functions for Drift",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",