@nadohq/engine-client 0.51.1 → 0.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/{EngineBaseClient-B8AGzScB.d.ts → EngineBaseClient-CjoiEm02.d.ts} +5 -5
  2. package/dist/{EngineBaseClient-B8AGzScB.d.ts.map → EngineBaseClient-CjoiEm02.d.ts.map} +1 -1
  3. package/dist/{EngineBaseClient-DOtVIiNB.d.cts → EngineBaseClient-Cxc6BZIi.d.cts} +5 -5
  4. package/dist/{EngineBaseClient-DOtVIiNB.d.cts.map → EngineBaseClient-Cxc6BZIi.d.cts.map} +1 -1
  5. package/dist/EngineBaseClient.d.cts +1 -1
  6. package/dist/EngineBaseClient.d.ts +1 -1
  7. package/dist/EngineClient.d.cts +4 -4
  8. package/dist/EngineClient.d.ts +4 -4
  9. package/dist/{EngineEdgeQueryClient-CwvxddRg.d.cts → EngineEdgeQueryClient-Bq_XjCl7.d.cts} +4 -4
  10. package/dist/{EngineEdgeQueryClient-CwvxddRg.d.cts.map → EngineEdgeQueryClient-Bq_XjCl7.d.cts.map} +1 -1
  11. package/dist/{EngineEdgeQueryClient-B47wXrBE.d.ts → EngineEdgeQueryClient-CGPNiYNf.d.ts} +4 -4
  12. package/dist/{EngineEdgeQueryClient-B47wXrBE.d.ts.map → EngineEdgeQueryClient-CGPNiYNf.d.ts.map} +1 -1
  13. package/dist/EngineEdgeQueryClient.d.cts +1 -1
  14. package/dist/EngineEdgeQueryClient.d.ts +1 -1
  15. package/dist/{EngineExecuteBuilder-89AP85fJ.d.ts → EngineExecuteBuilder-CJE3bMf2.d.ts} +12 -4
  16. package/dist/EngineExecuteBuilder-CJE3bMf2.d.ts.map +1 -0
  17. package/dist/{EngineExecuteBuilder-BKO2APye.d.cts → EngineExecuteBuilder-ySU-JZWq.d.cts} +12 -4
  18. package/dist/EngineExecuteBuilder-ySU-JZWq.d.cts.map +1 -0
  19. package/dist/EngineExecuteBuilder.cjs +16 -1
  20. package/dist/EngineExecuteBuilder.cjs.map +1 -1
  21. package/dist/EngineExecuteBuilder.d.cts +1 -1
  22. package/dist/EngineExecuteBuilder.d.ts +1 -1
  23. package/dist/EngineExecuteBuilder.js +16 -1
  24. package/dist/EngineExecuteBuilder.js.map +1 -1
  25. package/dist/{EngineExecuteClient-BcdUDCAl.d.ts → EngineExecuteClient-DG_pj7dE.d.cts} +14 -5
  26. package/dist/{EngineExecuteClient-CtotzpcZ.d.cts.map → EngineExecuteClient-DG_pj7dE.d.cts.map} +1 -1
  27. package/dist/{EngineExecuteClient-CtotzpcZ.d.cts → EngineExecuteClient-Dc-nshM9.d.ts} +14 -5
  28. package/dist/{EngineExecuteClient-BcdUDCAl.d.ts.map → EngineExecuteClient-Dc-nshM9.d.ts.map} +1 -1
  29. package/dist/EngineExecuteClient.cjs +11 -0
  30. package/dist/EngineExecuteClient.cjs.map +1 -1
  31. package/dist/EngineExecuteClient.d.cts +1 -1
  32. package/dist/EngineExecuteClient.d.ts +1 -1
  33. package/dist/EngineExecuteClient.js +11 -0
  34. package/dist/EngineExecuteClient.js.map +1 -1
  35. package/dist/{EngineQueryClient-kc0UgD75.d.cts → EngineQueryClient-Bb_dQxl9.d.cts} +21 -4
  36. package/dist/EngineQueryClient-Bb_dQxl9.d.cts.map +1 -0
  37. package/dist/{EngineQueryClient-DAMp444j.d.ts → EngineQueryClient-CyLOXvEQ.d.ts} +21 -4
  38. package/dist/EngineQueryClient-CyLOXvEQ.d.ts.map +1 -0
  39. package/dist/EngineQueryClient.cjs +48 -8
  40. package/dist/EngineQueryClient.cjs.map +1 -1
  41. package/dist/EngineQueryClient.d.cts +1 -1
  42. package/dist/EngineQueryClient.d.ts +1 -1
  43. package/dist/EngineQueryClient.js +48 -8
  44. package/dist/EngineQueryClient.js.map +1 -1
  45. package/dist/{EngineServerFailureError-DDGAIrxD.d.cts → EngineServerFailureError-D6FhNLZ1.d.cts} +3 -3
  46. package/dist/{EngineServerFailureError-DDGAIrxD.d.cts.map → EngineServerFailureError-D6FhNLZ1.d.cts.map} +1 -1
  47. package/dist/{EngineServerFailureError-CPIwlURB.d.ts → EngineServerFailureError-DmeIkcaO.d.ts} +3 -3
  48. package/dist/{EngineServerFailureError-CPIwlURB.d.ts.map → EngineServerFailureError-DmeIkcaO.d.ts.map} +1 -1
  49. package/dist/{EngineWebClient-BrLeJdIc.d.ts → EngineWebClient-5TyQwF9e.d.ts} +3 -3
  50. package/dist/{EngineWebClient-BrLeJdIc.d.ts.map → EngineWebClient-5TyQwF9e.d.ts.map} +1 -1
  51. package/dist/{EngineWebClient-xGhtI73z.d.cts → EngineWebClient-sirYCWks.d.cts} +3 -3
  52. package/dist/{EngineWebClient-xGhtI73z.d.cts.map → EngineWebClient-sirYCWks.d.cts.map} +1 -1
  53. package/dist/EngineWebClient.d.cts +1 -1
  54. package/dist/EngineWebClient.d.ts +1 -1
  55. package/dist/{clientExecuteTypes-uaCtufYV.d.cts → clientExecuteTypes-DdTonPFz.d.cts} +29 -5
  56. package/dist/clientExecuteTypes-DdTonPFz.d.cts.map +1 -0
  57. package/dist/{clientExecuteTypes-Cw5pE8eT.d.ts → clientExecuteTypes-fh0QGFm3.d.ts} +29 -5
  58. package/dist/clientExecuteTypes-fh0QGFm3.d.ts.map +1 -0
  59. package/dist/{clientQueryTypes-dyLCw-ip.d.ts → clientQueryTypes-86sEMdWH.d.cts} +42 -3
  60. package/dist/{clientQueryTypes-OyjAl55K.d.cts.map → clientQueryTypes-86sEMdWH.d.cts.map} +1 -1
  61. package/dist/{clientQueryTypes-OyjAl55K.d.cts → clientQueryTypes-BRmW-hwV.d.ts} +42 -3
  62. package/dist/{clientQueryTypes-dyLCw-ip.d.ts.map → clientQueryTypes-BRmW-hwV.d.ts.map} +1 -1
  63. package/dist/{engineErrorCodes-CLqQyhgn.d.ts → engineErrorCodes-T0t1nfq2.d.cts} +3 -2
  64. package/dist/{engineErrorCodes-CLqQyhgn.d.cts.map → engineErrorCodes-T0t1nfq2.d.cts.map} +1 -1
  65. package/dist/{engineErrorCodes-CLqQyhgn.d.cts → engineErrorCodes-T0t1nfq2.d.ts} +3 -2
  66. package/dist/{engineErrorCodes-CLqQyhgn.d.ts.map → engineErrorCodes-T0t1nfq2.d.ts.map} +1 -1
  67. package/dist/index.d.cts +10 -10
  68. package/dist/index.d.ts +10 -10
  69. package/dist/{queryDataMappers-CuEl5lX4.d.cts → queryDataMappers-Dv41azb7.d.cts} +4 -4
  70. package/dist/{queryDataMappers-CuEl5lX4.d.cts.map → queryDataMappers-Dv41azb7.d.cts.map} +1 -1
  71. package/dist/{queryDataMappers-CjWrw8mN.d.ts → queryDataMappers-DwyNNcWZ.d.ts} +4 -4
  72. package/dist/{queryDataMappers-CjWrw8mN.d.ts.map → queryDataMappers-DwyNNcWZ.d.ts.map} +1 -1
  73. package/dist/{serverEdgeQueryTypes-DkJ9JY9x.d.cts → serverEdgeQueryTypes-BaMFzyz8.d.cts} +2 -2
  74. package/dist/{serverEdgeQueryTypes-DkJ9JY9x.d.cts.map → serverEdgeQueryTypes-BaMFzyz8.d.cts.map} +1 -1
  75. package/dist/{serverEdgeQueryTypes-Del7970K.d.ts → serverEdgeQueryTypes-BuVoqyAf.d.ts} +2 -2
  76. package/dist/{serverEdgeQueryTypes-Del7970K.d.ts.map → serverEdgeQueryTypes-BuVoqyAf.d.ts.map} +1 -1
  77. package/dist/{serverExecuteTypes-D10ujnwM.d.cts → serverExecuteTypes-B5TGnwV0.d.cts} +15 -3
  78. package/dist/serverExecuteTypes-B5TGnwV0.d.cts.map +1 -0
  79. package/dist/{serverExecuteTypes-CXA3Be63.d.ts → serverExecuteTypes-DMNnEFf7.d.ts} +15 -3
  80. package/dist/serverExecuteTypes-DMNnEFf7.d.ts.map +1 -0
  81. package/dist/{serverQueryTypes-BvuH0UhW.d.ts → serverQueryTypes-B310vOgF.d.ts} +32 -2
  82. package/dist/serverQueryTypes-B310vOgF.d.ts.map +1 -0
  83. package/dist/{serverQueryTypes-CB0z7-gj.d.cts → serverQueryTypes-Z9L5CzzX.d.cts} +32 -2
  84. package/dist/serverQueryTypes-Z9L5CzzX.d.cts.map +1 -0
  85. package/dist/{serverSubscriptionEventTypes-BBqRApAk.d.ts → serverSubscriptionEventTypes-C3X3GUTW.d.ts} +3 -3
  86. package/dist/{serverSubscriptionEventTypes-BBqRApAk.d.ts.map → serverSubscriptionEventTypes-C3X3GUTW.d.ts.map} +1 -1
  87. package/dist/{serverSubscriptionEventTypes-DLWGxy3a.d.cts → serverSubscriptionEventTypes-D4PkREoN.d.cts} +3 -3
  88. package/dist/{serverSubscriptionEventTypes-DLWGxy3a.d.cts.map → serverSubscriptionEventTypes-D4PkREoN.d.cts.map} +1 -1
  89. package/dist/types/EngineServerFailureError.d.cts +1 -1
  90. package/dist/types/EngineServerFailureError.d.ts +1 -1
  91. package/dist/types/clientExecuteTypes.d.cts +2 -2
  92. package/dist/types/clientExecuteTypes.d.ts +2 -2
  93. package/dist/types/clientQueryTypes.d.cts +2 -2
  94. package/dist/types/clientQueryTypes.d.ts +2 -2
  95. package/dist/types/engineErrorCodes.cjs +3 -1
  96. package/dist/types/engineErrorCodes.cjs.map +1 -1
  97. package/dist/types/engineErrorCodes.d.cts +1 -1
  98. package/dist/types/engineErrorCodes.d.ts +1 -1
  99. package/dist/types/engineErrorCodes.js +3 -1
  100. package/dist/types/engineErrorCodes.js.map +1 -1
  101. package/dist/types/index.d.cts +9 -9
  102. package/dist/types/index.d.ts +9 -9
  103. package/dist/types/serverEdgeQueryTypes.d.cts +1 -1
  104. package/dist/types/serverEdgeQueryTypes.d.ts +1 -1
  105. package/dist/types/serverExecuteTypes.d.cts +1 -1
  106. package/dist/types/serverExecuteTypes.d.ts +1 -1
  107. package/dist/types/serverQueryTypes.cjs.map +1 -1
  108. package/dist/types/serverQueryTypes.d.cts +2 -2
  109. package/dist/types/serverQueryTypes.d.ts +2 -2
  110. package/dist/types/serverQueryTypes.js.map +1 -1
  111. package/dist/types/serverSubscriptionEventTypes.d.cts +1 -1
  112. package/dist/types/serverSubscriptionEventTypes.d.ts +1 -1
  113. package/dist/utils/index.d.cts +1 -1
  114. package/dist/utils/index.d.ts +1 -1
  115. package/dist/utils/queryDataMappers.d.cts +1 -1
  116. package/dist/utils/queryDataMappers.d.ts +1 -1
  117. package/package.json +3 -3
  118. package/src/EngineExecuteBuilder.ts +24 -0
  119. package/src/EngineExecuteClient.ts +17 -0
  120. package/src/EngineQueryClient.ts +77 -1
  121. package/src/types/clientExecuteTypes.ts +28 -1
  122. package/src/types/clientQueryTypes.ts +48 -0
  123. package/src/types/engineErrorCodes.ts +2 -0
  124. package/src/types/serverExecuteTypes.ts +14 -1
  125. package/src/types/serverQueryTypes.ts +40 -0
  126. package/src/types/serverSubscriptionEventTypes.ts +1 -0
  127. package/dist/EngineExecuteBuilder-89AP85fJ.d.ts.map +0 -1
  128. package/dist/EngineExecuteBuilder-BKO2APye.d.cts.map +0 -1
  129. package/dist/EngineQueryClient-DAMp444j.d.ts.map +0 -1
  130. package/dist/EngineQueryClient-kc0UgD75.d.cts.map +0 -1
  131. package/dist/clientExecuteTypes-Cw5pE8eT.d.ts.map +0 -1
  132. package/dist/clientExecuteTypes-uaCtufYV.d.cts.map +0 -1
  133. package/dist/serverExecuteTypes-CXA3Be63.d.ts.map +0 -1
  134. package/dist/serverExecuteTypes-D10ujnwM.d.cts.map +0 -1
  135. package/dist/serverQueryTypes-BvuH0UhW.d.ts.map +0 -1
  136. package/dist/serverQueryTypes-CB0z7-gj.d.cts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"EngineExecuteClient.cjs","names":["EngineBaseClient","EngineExecuteBuilder"],"sources":["../src/EngineExecuteClient.ts"],"sourcesContent":["import { toIntegerString } from '@nadohq/shared';\nimport { EngineBaseClient, EngineClientOpts } from './EngineBaseClient';\nimport { EngineExecuteBuilder } from './EngineExecuteBuilder';\nimport {\n EngineExecuteRequestParamsByType,\n EnginePlaceOrderResult,\n} from './types';\n\nexport class EngineExecuteClient extends EngineBaseClient {\n readonly payloadBuilder: EngineExecuteBuilder;\n\n constructor(opts: EngineClientOpts) {\n super(opts);\n this.payloadBuilder = new EngineExecuteBuilder(this);\n }\n\n async liquidateSubaccount(\n params: EngineExecuteRequestParamsByType['liquidate_subaccount'],\n ) {\n return this.execute(\n 'liquidate_subaccount',\n await this.payloadBuilder.buildLiquidateSubaccountPayload(params),\n );\n }\n\n async withdrawCollateral(\n params: EngineExecuteRequestParamsByType['withdraw_collateral'],\n ) {\n return this.execute(\n 'withdraw_collateral',\n await this.payloadBuilder.buildWithdrawCollateralPayload(params),\n );\n }\n\n async withdrawCollateralV2(\n params: EngineExecuteRequestParamsByType['withdraw_collateral_v2'],\n ) {\n return this.execute(\n 'withdraw_collateral_v2',\n await this.payloadBuilder.buildWithdrawCollateralV2Payload(params),\n );\n }\n\n async placeOrder(\n params: EngineExecuteRequestParamsByType['place_order'],\n ): Promise<EnginePlaceOrderResult> {\n const placeOrderPayload =\n await this.payloadBuilder.buildPlaceOrderPayload(params);\n return {\n ...(await this.execute('place_order', placeOrderPayload.payload)),\n orderParams: placeOrderPayload.orderParams,\n };\n }\n\n async placeOrders(params: EngineExecuteRequestParamsByType['place_orders']) {\n return this.execute(\n 'place_orders',\n await this.payloadBuilder.buildPlaceOrdersPayload(params),\n );\n }\n\n async cancelOrders(\n params: EngineExecuteRequestParamsByType['cancel_orders'],\n ) {\n return this.execute(\n 'cancel_orders',\n await this.payloadBuilder.buildCancelOrdersPayload(params),\n );\n }\n\n async cancelAndPlace(\n params: EngineExecuteRequestParamsByType['cancel_and_place'],\n ) {\n const cancelOrdersPayload =\n await this.payloadBuilder.buildCancelOrdersPayload(params.cancelOrders);\n const placeOrderPayload = await this.payloadBuilder.buildPlaceOrderPayload(\n params.placeOrder,\n );\n return this.execute('cancel_and_place', {\n cancel_tx: cancelOrdersPayload.tx,\n cancel_signature: cancelOrdersPayload.signature,\n place_order: placeOrderPayload.payload,\n required_unfilled_amount: params.requiredUnfilledAmount\n ? toIntegerString(params.requiredUnfilledAmount)\n : undefined,\n place_requires_unfilled: params.placeRequiresUnfilled,\n });\n }\n\n async cancelProductOrders(\n params: EngineExecuteRequestParamsByType['cancel_product_orders'],\n ) {\n return this.execute(\n 'cancel_product_orders',\n await this.payloadBuilder.buildCancelProductOrdersPayload(params),\n );\n }\n\n async linkSigner(params: EngineExecuteRequestParamsByType['link_signer']) {\n return this.execute(\n 'link_signer',\n await this.payloadBuilder.buildLinkSignerPayload(params),\n );\n }\n\n async transferQuote(\n params: EngineExecuteRequestParamsByType['transfer_quote'],\n ) {\n return this.execute(\n 'transfer_quote',\n await this.payloadBuilder.buildTransferQuotePayload(params),\n );\n }\n\n async mintNlp(params: EngineExecuteRequestParamsByType['mint_nlp']) {\n return this.execute(\n 'mint_nlp',\n await this.payloadBuilder.buildMintNlpPayload(params),\n );\n }\n\n async burnNlp(params: EngineExecuteRequestParamsByType['burn_nlp']) {\n return this.execute(\n 'burn_nlp',\n await this.payloadBuilder.buildBurnNlpPayload(params),\n );\n }\n}\n"],"mappings":";;;;;AAQA,IAAa,sBAAb,cAAyCA,yBAAAA,iBAAiB;CAGxD,YAAY,MAAwB;EAClC,MAAM,IAAI;EACV,KAAK,iBAAiB,IAAIC,6BAAAA,qBAAqB,IAAI;CACrD;CAEA,MAAM,oBACJ,QACA;EACA,OAAO,KAAK,QACV,wBACA,MAAM,KAAK,eAAe,gCAAgC,MAAM,CAClE;CACF;CAEA,MAAM,mBACJ,QACA;EACA,OAAO,KAAK,QACV,uBACA,MAAM,KAAK,eAAe,+BAA+B,MAAM,CACjE;CACF;CAEA,MAAM,qBACJ,QACA;EACA,OAAO,KAAK,QACV,0BACA,MAAM,KAAK,eAAe,iCAAiC,MAAM,CACnE;CACF;CAEA,MAAM,WACJ,QACiC;EACjC,MAAM,oBACJ,MAAM,KAAK,eAAe,uBAAuB,MAAM;EACzD,OAAO;GACL,GAAI,MAAM,KAAK,QAAQ,eAAe,kBAAkB,OAAO;GAC/D,aAAa,kBAAkB;EACjC;CACF;CAEA,MAAM,YAAY,QAA0D;EAC1E,OAAO,KAAK,QACV,gBACA,MAAM,KAAK,eAAe,wBAAwB,MAAM,CAC1D;CACF;CAEA,MAAM,aACJ,QACA;EACA,OAAO,KAAK,QACV,iBACA,MAAM,KAAK,eAAe,yBAAyB,MAAM,CAC3D;CACF;CAEA,MAAM,eACJ,QACA;EACA,MAAM,sBACJ,MAAM,KAAK,eAAe,yBAAyB,OAAO,YAAY;EACxE,MAAM,oBAAoB,MAAM,KAAK,eAAe,uBAClD,OAAO,UACT;EACA,OAAO,KAAK,QAAQ,oBAAoB;GACtC,WAAW,oBAAoB;GAC/B,kBAAkB,oBAAoB;GACtC,aAAa,kBAAkB;GAC/B,0BAA0B,OAAO,0BAAA,GAAA,eAAA,iBACb,OAAO,sBAAsB,IAC7C,KAAA;GACJ,yBAAyB,OAAO;EAClC,CAAC;CACH;CAEA,MAAM,oBACJ,QACA;EACA,OAAO,KAAK,QACV,yBACA,MAAM,KAAK,eAAe,gCAAgC,MAAM,CAClE;CACF;CAEA,MAAM,WAAW,QAAyD;EACxE,OAAO,KAAK,QACV,eACA,MAAM,KAAK,eAAe,uBAAuB,MAAM,CACzD;CACF;CAEA,MAAM,cACJ,QACA;EACA,OAAO,KAAK,QACV,kBACA,MAAM,KAAK,eAAe,0BAA0B,MAAM,CAC5D;CACF;CAEA,MAAM,QAAQ,QAAsD;EAClE,OAAO,KAAK,QACV,YACA,MAAM,KAAK,eAAe,oBAAoB,MAAM,CACtD;CACF;CAEA,MAAM,QAAQ,QAAsD;EAClE,OAAO,KAAK,QACV,YACA,MAAM,KAAK,eAAe,oBAAoB,MAAM,CACtD;CACF;AACF"}
1
+ {"version":3,"file":"EngineExecuteClient.cjs","names":["EngineBaseClient","EngineExecuteBuilder"],"sources":["../src/EngineExecuteClient.ts"],"sourcesContent":["import { toIntegerString } from '@nadohq/shared';\nimport { EngineBaseClient, EngineClientOpts } from './EngineBaseClient';\nimport { EngineExecuteBuilder } from './EngineExecuteBuilder';\nimport {\n EngineExecuteRequestParamsByType,\n EnginePlaceOrderResult,\n} from './types';\n\nexport class EngineExecuteClient extends EngineBaseClient {\n readonly payloadBuilder: EngineExecuteBuilder;\n\n constructor(opts: EngineClientOpts) {\n super(opts);\n this.payloadBuilder = new EngineExecuteBuilder(this);\n }\n\n async liquidateSubaccount(\n params: EngineExecuteRequestParamsByType['liquidate_subaccount'],\n ) {\n return this.execute(\n 'liquidate_subaccount',\n await this.payloadBuilder.buildLiquidateSubaccountPayload(params),\n );\n }\n\n async withdrawCollateral(\n params: EngineExecuteRequestParamsByType['withdraw_collateral'],\n ) {\n return this.execute(\n 'withdraw_collateral',\n await this.payloadBuilder.buildWithdrawCollateralPayload(params),\n );\n }\n\n async withdrawCollateralV2(\n params: EngineExecuteRequestParamsByType['withdraw_collateral_v2'],\n ) {\n return this.execute(\n 'withdraw_collateral_v2',\n await this.payloadBuilder.buildWithdrawCollateralV2Payload(params),\n );\n }\n\n async placeOrder(\n params: EngineExecuteRequestParamsByType['place_order'],\n ): Promise<EnginePlaceOrderResult> {\n const placeOrderPayload =\n await this.payloadBuilder.buildPlaceOrderPayload(params);\n return {\n ...(await this.execute('place_order', placeOrderPayload.payload)),\n orderParams: placeOrderPayload.orderParams,\n };\n }\n\n async placeOrders(params: EngineExecuteRequestParamsByType['place_orders']) {\n return this.execute(\n 'place_orders',\n await this.payloadBuilder.buildPlaceOrdersPayload(params),\n );\n }\n\n async cancelOrders(\n params: EngineExecuteRequestParamsByType['cancel_orders'],\n ) {\n return this.execute(\n 'cancel_orders',\n await this.payloadBuilder.buildCancelOrdersPayload(params),\n );\n }\n\n async cancelAndPlace(\n params: EngineExecuteRequestParamsByType['cancel_and_place'],\n ) {\n const cancelOrdersPayload =\n await this.payloadBuilder.buildCancelOrdersPayload(params.cancelOrders);\n const placeOrderPayload = await this.payloadBuilder.buildPlaceOrderPayload(\n params.placeOrder,\n );\n return this.execute('cancel_and_place', {\n cancel_tx: cancelOrdersPayload.tx,\n cancel_signature: cancelOrdersPayload.signature,\n place_order: placeOrderPayload.payload,\n required_unfilled_amount: params.requiredUnfilledAmount\n ? toIntegerString(params.requiredUnfilledAmount)\n : undefined,\n place_requires_unfilled: params.placeRequiresUnfilled,\n });\n }\n\n async cancelProductOrders(\n params: EngineExecuteRequestParamsByType['cancel_product_orders'],\n ) {\n return this.execute(\n 'cancel_product_orders',\n await this.payloadBuilder.buildCancelProductOrdersPayload(params),\n );\n }\n\n async linkSigner(params: EngineExecuteRequestParamsByType['link_signer']) {\n return this.execute(\n 'link_signer',\n await this.payloadBuilder.buildLinkSignerPayload(params),\n );\n }\n\n async transferQuote(\n params: EngineExecuteRequestParamsByType['transfer_quote'],\n ) {\n return this.execute(\n 'transfer_quote',\n await this.payloadBuilder.buildTransferQuotePayload(params),\n );\n }\n\n /**\n * Transfers quote between subaccounts under the same wallet, charged a dynamic fee of at most\n * the V1 transfer fee. The fee is priced at execution: if it exceeds `maxFeeX18`, the request\n * fails with `FEE_TOO_LOW` (2135). Use {@link EngineQueryClient.getDynamicFeeQuote} for the\n * current fee.\n * @param params\n * @returns The execute result, throwing an `EngineServerFailureError` on failure.\n */\n async transferQuoteV2(\n params: EngineExecuteRequestParamsByType['transfer_quote_v2'],\n ) {\n return this.execute(\n 'transfer_quote_v2',\n await this.payloadBuilder.buildTransferQuoteV2Payload(params),\n );\n }\n\n async mintNlp(params: EngineExecuteRequestParamsByType['mint_nlp']) {\n return this.execute(\n 'mint_nlp',\n await this.payloadBuilder.buildMintNlpPayload(params),\n );\n }\n\n async burnNlp(params: EngineExecuteRequestParamsByType['burn_nlp']) {\n return this.execute(\n 'burn_nlp',\n await this.payloadBuilder.buildBurnNlpPayload(params),\n );\n }\n}\n"],"mappings":";;;;;AAQA,IAAa,sBAAb,cAAyCA,yBAAAA,iBAAiB;CAGxD,YAAY,MAAwB;EAClC,MAAM,IAAI;EACV,KAAK,iBAAiB,IAAIC,6BAAAA,qBAAqB,IAAI;CACrD;CAEA,MAAM,oBACJ,QACA;EACA,OAAO,KAAK,QACV,wBACA,MAAM,KAAK,eAAe,gCAAgC,MAAM,CAClE;CACF;CAEA,MAAM,mBACJ,QACA;EACA,OAAO,KAAK,QACV,uBACA,MAAM,KAAK,eAAe,+BAA+B,MAAM,CACjE;CACF;CAEA,MAAM,qBACJ,QACA;EACA,OAAO,KAAK,QACV,0BACA,MAAM,KAAK,eAAe,iCAAiC,MAAM,CACnE;CACF;CAEA,MAAM,WACJ,QACiC;EACjC,MAAM,oBACJ,MAAM,KAAK,eAAe,uBAAuB,MAAM;EACzD,OAAO;GACL,GAAI,MAAM,KAAK,QAAQ,eAAe,kBAAkB,OAAO;GAC/D,aAAa,kBAAkB;EACjC;CACF;CAEA,MAAM,YAAY,QAA0D;EAC1E,OAAO,KAAK,QACV,gBACA,MAAM,KAAK,eAAe,wBAAwB,MAAM,CAC1D;CACF;CAEA,MAAM,aACJ,QACA;EACA,OAAO,KAAK,QACV,iBACA,MAAM,KAAK,eAAe,yBAAyB,MAAM,CAC3D;CACF;CAEA,MAAM,eACJ,QACA;EACA,MAAM,sBACJ,MAAM,KAAK,eAAe,yBAAyB,OAAO,YAAY;EACxE,MAAM,oBAAoB,MAAM,KAAK,eAAe,uBAClD,OAAO,UACT;EACA,OAAO,KAAK,QAAQ,oBAAoB;GACtC,WAAW,oBAAoB;GAC/B,kBAAkB,oBAAoB;GACtC,aAAa,kBAAkB;GAC/B,0BAA0B,OAAO,0BAAA,GAAA,eAAA,iBACb,OAAO,sBAAsB,IAC7C,KAAA;GACJ,yBAAyB,OAAO;EAClC,CAAC;CACH;CAEA,MAAM,oBACJ,QACA;EACA,OAAO,KAAK,QACV,yBACA,MAAM,KAAK,eAAe,gCAAgC,MAAM,CAClE;CACF;CAEA,MAAM,WAAW,QAAyD;EACxE,OAAO,KAAK,QACV,eACA,MAAM,KAAK,eAAe,uBAAuB,MAAM,CACzD;CACF;CAEA,MAAM,cACJ,QACA;EACA,OAAO,KAAK,QACV,kBACA,MAAM,KAAK,eAAe,0BAA0B,MAAM,CAC5D;CACF;;;;;;;;;CAUA,MAAM,gBACJ,QACA;EACA,OAAO,KAAK,QACV,qBACA,MAAM,KAAK,eAAe,4BAA4B,MAAM,CAC9D;CACF;CAEA,MAAM,QAAQ,QAAsD;EAClE,OAAO,KAAK,QACV,YACA,MAAM,KAAK,eAAe,oBAAoB,MAAM,CACtD;CACF;CAEA,MAAM,QAAQ,QAAsD;EAClE,OAAO,KAAK,QACV,YACA,MAAM,KAAK,eAAe,oBAAoB,MAAM,CACtD;CACF;AACF"}
@@ -1,2 +1,2 @@
1
- import { t as EngineExecuteClient } from "./EngineExecuteClient-CtotzpcZ.cjs";
1
+ import { t as EngineExecuteClient } from "./EngineExecuteClient-DG_pj7dE.cjs";
2
2
  export { EngineExecuteClient };
@@ -1,2 +1,2 @@
1
- import { t as EngineExecuteClient } from "./EngineExecuteClient-BcdUDCAl.js";
1
+ import { t as EngineExecuteClient } from "./EngineExecuteClient-Dc-nshM9.js";
2
2
  export { EngineExecuteClient };
@@ -49,6 +49,17 @@ var EngineExecuteClient = class extends EngineBaseClient {
49
49
  async transferQuote(params) {
50
50
  return this.execute("transfer_quote", await this.payloadBuilder.buildTransferQuotePayload(params));
51
51
  }
52
+ /**
53
+ * Transfers quote between subaccounts under the same wallet, charged a dynamic fee of at most
54
+ * the V1 transfer fee. The fee is priced at execution: if it exceeds `maxFeeX18`, the request
55
+ * fails with `FEE_TOO_LOW` (2135). Use {@link EngineQueryClient.getDynamicFeeQuote} for the
56
+ * current fee.
57
+ * @param params
58
+ * @returns The execute result, throwing an `EngineServerFailureError` on failure.
59
+ */
60
+ async transferQuoteV2(params) {
61
+ return this.execute("transfer_quote_v2", await this.payloadBuilder.buildTransferQuoteV2Payload(params));
62
+ }
52
63
  async mintNlp(params) {
53
64
  return this.execute("mint_nlp", await this.payloadBuilder.buildMintNlpPayload(params));
54
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EngineExecuteClient.js","names":[],"sources":["../src/EngineExecuteClient.ts"],"sourcesContent":["import { toIntegerString } from '@nadohq/shared';\nimport { EngineBaseClient, EngineClientOpts } from './EngineBaseClient';\nimport { EngineExecuteBuilder } from './EngineExecuteBuilder';\nimport {\n EngineExecuteRequestParamsByType,\n EnginePlaceOrderResult,\n} from './types';\n\nexport class EngineExecuteClient extends EngineBaseClient {\n readonly payloadBuilder: EngineExecuteBuilder;\n\n constructor(opts: EngineClientOpts) {\n super(opts);\n this.payloadBuilder = new EngineExecuteBuilder(this);\n }\n\n async liquidateSubaccount(\n params: EngineExecuteRequestParamsByType['liquidate_subaccount'],\n ) {\n return this.execute(\n 'liquidate_subaccount',\n await this.payloadBuilder.buildLiquidateSubaccountPayload(params),\n );\n }\n\n async withdrawCollateral(\n params: EngineExecuteRequestParamsByType['withdraw_collateral'],\n ) {\n return this.execute(\n 'withdraw_collateral',\n await this.payloadBuilder.buildWithdrawCollateralPayload(params),\n );\n }\n\n async withdrawCollateralV2(\n params: EngineExecuteRequestParamsByType['withdraw_collateral_v2'],\n ) {\n return this.execute(\n 'withdraw_collateral_v2',\n await this.payloadBuilder.buildWithdrawCollateralV2Payload(params),\n );\n }\n\n async placeOrder(\n params: EngineExecuteRequestParamsByType['place_order'],\n ): Promise<EnginePlaceOrderResult> {\n const placeOrderPayload =\n await this.payloadBuilder.buildPlaceOrderPayload(params);\n return {\n ...(await this.execute('place_order', placeOrderPayload.payload)),\n orderParams: placeOrderPayload.orderParams,\n };\n }\n\n async placeOrders(params: EngineExecuteRequestParamsByType['place_orders']) {\n return this.execute(\n 'place_orders',\n await this.payloadBuilder.buildPlaceOrdersPayload(params),\n );\n }\n\n async cancelOrders(\n params: EngineExecuteRequestParamsByType['cancel_orders'],\n ) {\n return this.execute(\n 'cancel_orders',\n await this.payloadBuilder.buildCancelOrdersPayload(params),\n );\n }\n\n async cancelAndPlace(\n params: EngineExecuteRequestParamsByType['cancel_and_place'],\n ) {\n const cancelOrdersPayload =\n await this.payloadBuilder.buildCancelOrdersPayload(params.cancelOrders);\n const placeOrderPayload = await this.payloadBuilder.buildPlaceOrderPayload(\n params.placeOrder,\n );\n return this.execute('cancel_and_place', {\n cancel_tx: cancelOrdersPayload.tx,\n cancel_signature: cancelOrdersPayload.signature,\n place_order: placeOrderPayload.payload,\n required_unfilled_amount: params.requiredUnfilledAmount\n ? toIntegerString(params.requiredUnfilledAmount)\n : undefined,\n place_requires_unfilled: params.placeRequiresUnfilled,\n });\n }\n\n async cancelProductOrders(\n params: EngineExecuteRequestParamsByType['cancel_product_orders'],\n ) {\n return this.execute(\n 'cancel_product_orders',\n await this.payloadBuilder.buildCancelProductOrdersPayload(params),\n );\n }\n\n async linkSigner(params: EngineExecuteRequestParamsByType['link_signer']) {\n return this.execute(\n 'link_signer',\n await this.payloadBuilder.buildLinkSignerPayload(params),\n );\n }\n\n async transferQuote(\n params: EngineExecuteRequestParamsByType['transfer_quote'],\n ) {\n return this.execute(\n 'transfer_quote',\n await this.payloadBuilder.buildTransferQuotePayload(params),\n );\n }\n\n async mintNlp(params: EngineExecuteRequestParamsByType['mint_nlp']) {\n return this.execute(\n 'mint_nlp',\n await this.payloadBuilder.buildMintNlpPayload(params),\n );\n }\n\n async burnNlp(params: EngineExecuteRequestParamsByType['burn_nlp']) {\n return this.execute(\n 'burn_nlp',\n await this.payloadBuilder.buildBurnNlpPayload(params),\n );\n }\n}\n"],"mappings":";;;;AAQA,IAAa,sBAAb,cAAyC,iBAAiB;CAGxD,YAAY,MAAwB;EAClC,MAAM,IAAI;EACV,KAAK,iBAAiB,IAAI,qBAAqB,IAAI;CACrD;CAEA,MAAM,oBACJ,QACA;EACA,OAAO,KAAK,QACV,wBACA,MAAM,KAAK,eAAe,gCAAgC,MAAM,CAClE;CACF;CAEA,MAAM,mBACJ,QACA;EACA,OAAO,KAAK,QACV,uBACA,MAAM,KAAK,eAAe,+BAA+B,MAAM,CACjE;CACF;CAEA,MAAM,qBACJ,QACA;EACA,OAAO,KAAK,QACV,0BACA,MAAM,KAAK,eAAe,iCAAiC,MAAM,CACnE;CACF;CAEA,MAAM,WACJ,QACiC;EACjC,MAAM,oBACJ,MAAM,KAAK,eAAe,uBAAuB,MAAM;EACzD,OAAO;GACL,GAAI,MAAM,KAAK,QAAQ,eAAe,kBAAkB,OAAO;GAC/D,aAAa,kBAAkB;EACjC;CACF;CAEA,MAAM,YAAY,QAA0D;EAC1E,OAAO,KAAK,QACV,gBACA,MAAM,KAAK,eAAe,wBAAwB,MAAM,CAC1D;CACF;CAEA,MAAM,aACJ,QACA;EACA,OAAO,KAAK,QACV,iBACA,MAAM,KAAK,eAAe,yBAAyB,MAAM,CAC3D;CACF;CAEA,MAAM,eACJ,QACA;EACA,MAAM,sBACJ,MAAM,KAAK,eAAe,yBAAyB,OAAO,YAAY;EACxE,MAAM,oBAAoB,MAAM,KAAK,eAAe,uBAClD,OAAO,UACT;EACA,OAAO,KAAK,QAAQ,oBAAoB;GACtC,WAAW,oBAAoB;GAC/B,kBAAkB,oBAAoB;GACtC,aAAa,kBAAkB;GAC/B,0BAA0B,OAAO,yBAC7B,gBAAgB,OAAO,sBAAsB,IAC7C,KAAA;GACJ,yBAAyB,OAAO;EAClC,CAAC;CACH;CAEA,MAAM,oBACJ,QACA;EACA,OAAO,KAAK,QACV,yBACA,MAAM,KAAK,eAAe,gCAAgC,MAAM,CAClE;CACF;CAEA,MAAM,WAAW,QAAyD;EACxE,OAAO,KAAK,QACV,eACA,MAAM,KAAK,eAAe,uBAAuB,MAAM,CACzD;CACF;CAEA,MAAM,cACJ,QACA;EACA,OAAO,KAAK,QACV,kBACA,MAAM,KAAK,eAAe,0BAA0B,MAAM,CAC5D;CACF;CAEA,MAAM,QAAQ,QAAsD;EAClE,OAAO,KAAK,QACV,YACA,MAAM,KAAK,eAAe,oBAAoB,MAAM,CACtD;CACF;CAEA,MAAM,QAAQ,QAAsD;EAClE,OAAO,KAAK,QACV,YACA,MAAM,KAAK,eAAe,oBAAoB,MAAM,CACtD;CACF;AACF"}
1
+ {"version":3,"file":"EngineExecuteClient.js","names":[],"sources":["../src/EngineExecuteClient.ts"],"sourcesContent":["import { toIntegerString } from '@nadohq/shared';\nimport { EngineBaseClient, EngineClientOpts } from './EngineBaseClient';\nimport { EngineExecuteBuilder } from './EngineExecuteBuilder';\nimport {\n EngineExecuteRequestParamsByType,\n EnginePlaceOrderResult,\n} from './types';\n\nexport class EngineExecuteClient extends EngineBaseClient {\n readonly payloadBuilder: EngineExecuteBuilder;\n\n constructor(opts: EngineClientOpts) {\n super(opts);\n this.payloadBuilder = new EngineExecuteBuilder(this);\n }\n\n async liquidateSubaccount(\n params: EngineExecuteRequestParamsByType['liquidate_subaccount'],\n ) {\n return this.execute(\n 'liquidate_subaccount',\n await this.payloadBuilder.buildLiquidateSubaccountPayload(params),\n );\n }\n\n async withdrawCollateral(\n params: EngineExecuteRequestParamsByType['withdraw_collateral'],\n ) {\n return this.execute(\n 'withdraw_collateral',\n await this.payloadBuilder.buildWithdrawCollateralPayload(params),\n );\n }\n\n async withdrawCollateralV2(\n params: EngineExecuteRequestParamsByType['withdraw_collateral_v2'],\n ) {\n return this.execute(\n 'withdraw_collateral_v2',\n await this.payloadBuilder.buildWithdrawCollateralV2Payload(params),\n );\n }\n\n async placeOrder(\n params: EngineExecuteRequestParamsByType['place_order'],\n ): Promise<EnginePlaceOrderResult> {\n const placeOrderPayload =\n await this.payloadBuilder.buildPlaceOrderPayload(params);\n return {\n ...(await this.execute('place_order', placeOrderPayload.payload)),\n orderParams: placeOrderPayload.orderParams,\n };\n }\n\n async placeOrders(params: EngineExecuteRequestParamsByType['place_orders']) {\n return this.execute(\n 'place_orders',\n await this.payloadBuilder.buildPlaceOrdersPayload(params),\n );\n }\n\n async cancelOrders(\n params: EngineExecuteRequestParamsByType['cancel_orders'],\n ) {\n return this.execute(\n 'cancel_orders',\n await this.payloadBuilder.buildCancelOrdersPayload(params),\n );\n }\n\n async cancelAndPlace(\n params: EngineExecuteRequestParamsByType['cancel_and_place'],\n ) {\n const cancelOrdersPayload =\n await this.payloadBuilder.buildCancelOrdersPayload(params.cancelOrders);\n const placeOrderPayload = await this.payloadBuilder.buildPlaceOrderPayload(\n params.placeOrder,\n );\n return this.execute('cancel_and_place', {\n cancel_tx: cancelOrdersPayload.tx,\n cancel_signature: cancelOrdersPayload.signature,\n place_order: placeOrderPayload.payload,\n required_unfilled_amount: params.requiredUnfilledAmount\n ? toIntegerString(params.requiredUnfilledAmount)\n : undefined,\n place_requires_unfilled: params.placeRequiresUnfilled,\n });\n }\n\n async cancelProductOrders(\n params: EngineExecuteRequestParamsByType['cancel_product_orders'],\n ) {\n return this.execute(\n 'cancel_product_orders',\n await this.payloadBuilder.buildCancelProductOrdersPayload(params),\n );\n }\n\n async linkSigner(params: EngineExecuteRequestParamsByType['link_signer']) {\n return this.execute(\n 'link_signer',\n await this.payloadBuilder.buildLinkSignerPayload(params),\n );\n }\n\n async transferQuote(\n params: EngineExecuteRequestParamsByType['transfer_quote'],\n ) {\n return this.execute(\n 'transfer_quote',\n await this.payloadBuilder.buildTransferQuotePayload(params),\n );\n }\n\n /**\n * Transfers quote between subaccounts under the same wallet, charged a dynamic fee of at most\n * the V1 transfer fee. The fee is priced at execution: if it exceeds `maxFeeX18`, the request\n * fails with `FEE_TOO_LOW` (2135). Use {@link EngineQueryClient.getDynamicFeeQuote} for the\n * current fee.\n * @param params\n * @returns The execute result, throwing an `EngineServerFailureError` on failure.\n */\n async transferQuoteV2(\n params: EngineExecuteRequestParamsByType['transfer_quote_v2'],\n ) {\n return this.execute(\n 'transfer_quote_v2',\n await this.payloadBuilder.buildTransferQuoteV2Payload(params),\n );\n }\n\n async mintNlp(params: EngineExecuteRequestParamsByType['mint_nlp']) {\n return this.execute(\n 'mint_nlp',\n await this.payloadBuilder.buildMintNlpPayload(params),\n );\n }\n\n async burnNlp(params: EngineExecuteRequestParamsByType['burn_nlp']) {\n return this.execute(\n 'burn_nlp',\n await this.payloadBuilder.buildBurnNlpPayload(params),\n );\n }\n}\n"],"mappings":";;;;AAQA,IAAa,sBAAb,cAAyC,iBAAiB;CAGxD,YAAY,MAAwB;EAClC,MAAM,IAAI;EACV,KAAK,iBAAiB,IAAI,qBAAqB,IAAI;CACrD;CAEA,MAAM,oBACJ,QACA;EACA,OAAO,KAAK,QACV,wBACA,MAAM,KAAK,eAAe,gCAAgC,MAAM,CAClE;CACF;CAEA,MAAM,mBACJ,QACA;EACA,OAAO,KAAK,QACV,uBACA,MAAM,KAAK,eAAe,+BAA+B,MAAM,CACjE;CACF;CAEA,MAAM,qBACJ,QACA;EACA,OAAO,KAAK,QACV,0BACA,MAAM,KAAK,eAAe,iCAAiC,MAAM,CACnE;CACF;CAEA,MAAM,WACJ,QACiC;EACjC,MAAM,oBACJ,MAAM,KAAK,eAAe,uBAAuB,MAAM;EACzD,OAAO;GACL,GAAI,MAAM,KAAK,QAAQ,eAAe,kBAAkB,OAAO;GAC/D,aAAa,kBAAkB;EACjC;CACF;CAEA,MAAM,YAAY,QAA0D;EAC1E,OAAO,KAAK,QACV,gBACA,MAAM,KAAK,eAAe,wBAAwB,MAAM,CAC1D;CACF;CAEA,MAAM,aACJ,QACA;EACA,OAAO,KAAK,QACV,iBACA,MAAM,KAAK,eAAe,yBAAyB,MAAM,CAC3D;CACF;CAEA,MAAM,eACJ,QACA;EACA,MAAM,sBACJ,MAAM,KAAK,eAAe,yBAAyB,OAAO,YAAY;EACxE,MAAM,oBAAoB,MAAM,KAAK,eAAe,uBAClD,OAAO,UACT;EACA,OAAO,KAAK,QAAQ,oBAAoB;GACtC,WAAW,oBAAoB;GAC/B,kBAAkB,oBAAoB;GACtC,aAAa,kBAAkB;GAC/B,0BAA0B,OAAO,yBAC7B,gBAAgB,OAAO,sBAAsB,IAC7C,KAAA;GACJ,yBAAyB,OAAO;EAClC,CAAC;CACH;CAEA,MAAM,oBACJ,QACA;EACA,OAAO,KAAK,QACV,yBACA,MAAM,KAAK,eAAe,gCAAgC,MAAM,CAClE;CACF;CAEA,MAAM,WAAW,QAAyD;EACxE,OAAO,KAAK,QACV,eACA,MAAM,KAAK,eAAe,uBAAuB,MAAM,CACzD;CACF;CAEA,MAAM,cACJ,QACA;EACA,OAAO,KAAK,QACV,kBACA,MAAM,KAAK,eAAe,0BAA0B,MAAM,CAC5D;CACF;;;;;;;;;CAUA,MAAM,gBACJ,QACA;EACA,OAAO,KAAK,QACV,qBACA,MAAM,KAAK,eAAe,4BAA4B,MAAM,CAC9D;CACF;CAEA,MAAM,QAAQ,QAAsD;EAClE,OAAO,KAAK,QACV,YACA,MAAM,KAAK,eAAe,oBAAoB,MAAM,CACtD;CACF;CAEA,MAAM,QAAQ,QAAsD;EAClE,OAAO,KAAK,QACV,YACA,MAAM,KAAK,eAAe,oBAAoB,MAAM,CACtD;CACF;AACF"}
@@ -1,6 +1,6 @@
1
- import { q as EngineServerStatusResponse } from "./serverQueryTypes-CB0z7-gj.cjs";
2
- import { $ as GetEngineSubaccountProductOrdersResponse, A as GetEngineMarketPriceResponse, B as GetEngineMaxWithdrawableResponse, C as GetEngineIsolatedPositionsParams, D as GetEngineMarketLiquidityParams, E as GetEngineLinkedSignerResponse, F as GetEngineMaxMintNlpAmountParams, H as GetEngineNlpLockedBalancesResponse, I as GetEngineMaxMintNlpAmountResponse, J as GetEngineSubaccountFeeRatesParams, K as GetEngineOrderParams, L as GetEngineMaxOrderSizeParams, M as GetEngineMarketPricesResponse, N as GetEngineMaxBurnNlpAmountParams, O as GetEngineMarketLiquidityResponse, P as GetEngineMaxBurnNlpAmountResponse, Q as GetEngineSubaccountProductOrdersParams, R as GetEngineMaxOrderSizeResponse, T as GetEngineLinkedSignerParams, U as GetEngineNlpPoolInfoResponse, V as GetEngineNlpLockedBalancesParams, X as GetEngineSubaccountOrdersParams, Y as GetEngineSubaccountFeeRatesResponse, Z as GetEngineSubaccountOrdersResponse, _ as GetEngineContractsResponse, b as GetEngineHealthGroupsResponse, dt as ValidateEngineOrderResponse, et as GetEngineSubaccountSummaryParams, f as EngineSymbolsResponse, ft as ValidateSignedEngineOrderParams, j as GetEngineMarketPricesParams, k as GetEngineMarketPriceParams, nt as GetEngineSymbolsParams, p as GetEngineAllMarketsResponse, q as GetEngineOrderResponse, tt as GetEngineSubaccountSummaryResponse, ut as ValidateEngineOrderParams, w as GetEngineIsolatedPositionsResponse, x as GetEngineInsuranceResponse, y as GetEngineEstimatedSubaccountSummaryParams, z as GetEngineMaxWithdrawableParams } from "./clientQueryTypes-OyjAl55K.cjs";
3
- import { t as EngineBaseClient } from "./EngineBaseClient-DOtVIiNB.cjs";
1
+ import { Y as EngineServerStatusResponse } from "./serverQueryTypes-Z9L5CzzX.cjs";
2
+ import { $ as GetEngineSubaccountOrdersParams, A as GetEngineMarketLiquidityResponse, B as GetEngineMaxOrderSizeResponse, C as GetEngineInsuranceResponse, D as GetEngineLinkedSignerParams, E as GetEngineIsolatedPositionsResponse, F as GetEngineMaxBurnNlpAmountParams, G as GetEngineNlpLockedBalancesResponse, H as GetEngineMaxWithdrawableResponse, I as GetEngineMaxBurnNlpAmountResponse, K as GetEngineNlpPoolInfoResponse, L as GetEngineMaxMintNlpAmountParams, M as GetEngineMarketPriceResponse, N as GetEngineMarketPricesParams, O as GetEngineLinkedSignerResponse, P as GetEngineMarketPricesResponse, Q as GetEngineSubaccountFeeRatesResponse, R as GetEngineMaxMintNlpAmountResponse, S as GetEngineHealthGroupsResponse, T as GetEngineIsolatedPositionsParams, U as GetEngineMaxWithdrawableWithDynamicFeeResponse, V as GetEngineMaxWithdrawableParams, W as GetEngineNlpLockedBalancesParams, X as GetEngineOrderResponse, Y as GetEngineOrderParams, Z as GetEngineSubaccountFeeRatesParams, _ as GetEngineContractsResponse, at as GetEngineSymbolsParams, b as GetEngineDynamicFeeQuoteResponse, et as GetEngineSubaccountOrdersResponse, f as EngineSymbolsResponse, ht as ValidateSignedEngineOrderParams, it as GetEngineSubaccountSummaryResponse, j as GetEngineMarketPriceParams, k as GetEngineMarketLiquidityParams, mt as ValidateEngineOrderResponse, nt as GetEngineSubaccountProductOrdersResponse, p as GetEngineAllMarketsResponse, pt as ValidateEngineOrderParams, rt as GetEngineSubaccountSummaryParams, tt as GetEngineSubaccountProductOrdersParams, x as GetEngineEstimatedSubaccountSummaryParams, y as GetEngineDynamicFeeQuoteParams, z as GetEngineMaxOrderSizeParams } from "./clientQueryTypes-86sEMdWH.cjs";
3
+ import { t as EngineBaseClient } from "./EngineBaseClient-Cxc6BZIi.cjs";
4
4
  import { MarketWithProduct } from "@nadohq/shared";
5
5
 
6
6
  //#region src/EngineQueryClient.d.ts
@@ -108,6 +108,23 @@ declare class EngineQueryClient extends EngineBaseClient {
108
108
  * @param params
109
109
  */
110
110
  getMaxWithdrawable(params: GetEngineMaxWithdrawableParams): Promise<GetEngineMaxWithdrawableResponse>;
111
+ /**
112
+ * Retrieves the estimated max withdrawal size for a product, with the current dynamic fee of
113
+ * Withdraw Collateral V2 reserved instead of the flat fee. The reserved fee is returned as
114
+ * `fee`.
115
+ * @param params
116
+ * @returns The max withdrawable with the current dynamic fee reserved, and the reserved fee.
117
+ */
118
+ getMaxWithdrawable(params: GetEngineMaxWithdrawableParams, options: {
119
+ withDynamicFee: true;
120
+ }): Promise<GetEngineMaxWithdrawableWithDynamicFeeResponse>;
121
+ /**
122
+ * Retrieves the current dynamic fee for a V2 withdrawal or V2 quote transfer.
123
+ * The fee is priced again at execution, so pass a `maxFeeX18` with some headroom when executing.
124
+ * @param params
125
+ * @returns The current required fee, the fee cap, and the V2 demand pressure.
126
+ */
127
+ getDynamicFeeQuote(params: GetEngineDynamicFeeQuoteParams): Promise<GetEngineDynamicFeeQuoteResponse>;
111
128
  /**
112
129
  * Retrieves the estimated max quote amount for minting NLP.
113
130
  *
@@ -144,4 +161,4 @@ declare class EngineQueryClient extends EngineBaseClient {
144
161
  }
145
162
  //#endregion
146
163
  export { EngineQueryClient as t };
147
- //# sourceMappingURL=EngineQueryClient-kc0UgD75.d.cts.map
164
+ //# sourceMappingURL=EngineQueryClient-Bb_dQxl9.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EngineQueryClient-Bb_dQxl9.d.cts","names":[],"sources":["../src/src/EngineQueryClient.ts"],"mappings":";;;;;;cA6Ea,iBAAA,SAA0B,gBAAA;;;;EAI/B,YAAA,CAAA,GAAgB,OAAA,CAAQ,0BAAA;EAJD;;;EAevB,SAAA,CAAA,GAAa,OAAA,CAAQ,0BAAA;EAAA;;;;;;EAUrB,oBAAA,CACJ,MAAA,EAAQ,gCAAA,GACP,OAAA,CAAQ,kCAAA;EAmBR;;;;;EAFG,oBAAA,CACJ,MAAA,EAAQ,gCAAA,GACP,OAAA,CAAQ,kCAAA;EAgER;;;;;EA/CG,6BAAA,CACJ,MAAA,EAAQ,yCAAA,GACP,OAAA,CAAQ,kCAAA;EAiGsB;;;;;EAtD3B,UAAA,CACJ,MAAA,EAAQ,sBAAA,GACP,OAAA,CAAQ,qBAAA;EA0FA;;;EA5EL,aAAA,CAAA,GAAiB,OAAA,CAAQ,2BAAA;EAmG5B;;;EAlFG,iBAAA,CAAA,GAAqB,OAAA,CAAQ,MAAA,SAAe,iBAAA;EAwHxC;;;EAnGJ,eAAA,CAAA,GAAmB,OAAA,CAAQ,6BAAA;EA6HtB;;;;;EAzGL,QAAA,CACJ,MAAA,EAAQ,oBAAA,GACP,OAAA,CAAQ,sBAAA;EAmKA;;;;;EArJL,mBAAA,CACJ,MAAA,EAAQ,yBAAA,GACP,OAAA,CAAQ,2BAAA;EA+KA;;;;;EA1JL,yBAAA,CACJ,MAAA,EAAQ,+BAAA,GACP,OAAA,CAAQ,2BAAA;EAqMA;;;;EArLL,mBAAA,CACJ,MAAA,EAAQ,+BAAA,GACP,OAAA,CAAQ,iCAAA;EAoQD;;;;EAjPJ,+BAAA,CACJ,MAAA,EAAQ,sCAAA,GACP,OAAA,CAAQ,wCAAA;EAoQR;;;;EA7OG,qBAAA,CACJ,MAAA,EAAQ,iCAAA,GACP,OAAA,CAAQ,mCAAA;EA8QkB;;;;EArOvB,kBAAA,CACJ,MAAA,EAAQ,8BAAA,GACP,OAAA,CAAQ,gCAAA;EA8Pa;;;;EA/OlB,cAAA,CACJ,MAAA,EAAQ,0BAAA,GACP,OAAA,CAAQ,4BAAA;EAvVL;;;;EAkWA,eAAA,CACJ,MAAA,EAAQ,2BAAA,GACP,OAAA,CAAQ,6BAAA;EAzVgB;;;;EAsWrB,eAAA,CACJ,MAAA,EAAQ,2BAAA,GACP,OAAA,CAAQ,6BAAA;EA5VA;;;;EA4XL,kBAAA,CACJ,MAAA,EAAQ,8BAAA,GACP,OAAA,CAAQ,gCAAA;EA3WA;;;;;;;EAmXL,kBAAA,CACJ,MAAA,EAAQ,8BAAA,EACR,OAAA;IAAW,cAAA;EAAA,IACV,OAAA,CAAQ,8CAAA;EAtTA;;;;;;EA4VL,kBAAA,CACJ,MAAA,EAAQ,8BAAA,GACP,OAAA,CAAQ,gCAAA;EA/TuC;;;;;EAuW5C,mBAAA,CACJ,MAAA,EAAQ,+BAAA,GACP,OAAA,CAAQ,iCAAA;EA/TT;;;;;EAiVI,mBAAA,CACJ,MAAA,EAAQ,+BAAA,GACP,OAAA,CAAQ,iCAAA;EAlUR;;;;;EAkVU,eAAA,CACX,MAAA,EAAQ,2BAAA,GACP,OAAA,CAAQ,6BAAA;EA7TA;;;;EA8UE,YAAA,CAAA,GAAgB,OAAA,CAAQ,0BAAA;EA5T1B;;;;;EAuUL,oBAAA,CACJ,MAAA,EAAQ,gCAAA,GACP,OAAA,CAAQ,kCAAA;EA7RL;;;EA2SA,cAAA,CAAA,GAAkB,OAAA,CAAQ,4BAAA;AAAA"}
@@ -1,6 +1,6 @@
1
- import { q as EngineServerStatusResponse } from "./serverQueryTypes-BvuH0UhW.js";
2
- import { $ as GetEngineSubaccountProductOrdersResponse, A as GetEngineMarketPriceResponse, B as GetEngineMaxWithdrawableResponse, C as GetEngineIsolatedPositionsParams, D as GetEngineMarketLiquidityParams, E as GetEngineLinkedSignerResponse, F as GetEngineMaxMintNlpAmountParams, H as GetEngineNlpLockedBalancesResponse, I as GetEngineMaxMintNlpAmountResponse, J as GetEngineSubaccountFeeRatesParams, K as GetEngineOrderParams, L as GetEngineMaxOrderSizeParams, M as GetEngineMarketPricesResponse, N as GetEngineMaxBurnNlpAmountParams, O as GetEngineMarketLiquidityResponse, P as GetEngineMaxBurnNlpAmountResponse, Q as GetEngineSubaccountProductOrdersParams, R as GetEngineMaxOrderSizeResponse, T as GetEngineLinkedSignerParams, U as GetEngineNlpPoolInfoResponse, V as GetEngineNlpLockedBalancesParams, X as GetEngineSubaccountOrdersParams, Y as GetEngineSubaccountFeeRatesResponse, Z as GetEngineSubaccountOrdersResponse, _ as GetEngineContractsResponse, b as GetEngineHealthGroupsResponse, dt as ValidateEngineOrderResponse, et as GetEngineSubaccountSummaryParams, f as EngineSymbolsResponse, ft as ValidateSignedEngineOrderParams, j as GetEngineMarketPricesParams, k as GetEngineMarketPriceParams, nt as GetEngineSymbolsParams, p as GetEngineAllMarketsResponse, q as GetEngineOrderResponse, tt as GetEngineSubaccountSummaryResponse, ut as ValidateEngineOrderParams, w as GetEngineIsolatedPositionsResponse, x as GetEngineInsuranceResponse, y as GetEngineEstimatedSubaccountSummaryParams, z as GetEngineMaxWithdrawableParams } from "./clientQueryTypes-dyLCw-ip.js";
3
- import { t as EngineBaseClient } from "./EngineBaseClient-B8AGzScB.js";
1
+ import { Y as EngineServerStatusResponse } from "./serverQueryTypes-B310vOgF.js";
2
+ import { $ as GetEngineSubaccountOrdersParams, A as GetEngineMarketLiquidityResponse, B as GetEngineMaxOrderSizeResponse, C as GetEngineInsuranceResponse, D as GetEngineLinkedSignerParams, E as GetEngineIsolatedPositionsResponse, F as GetEngineMaxBurnNlpAmountParams, G as GetEngineNlpLockedBalancesResponse, H as GetEngineMaxWithdrawableResponse, I as GetEngineMaxBurnNlpAmountResponse, K as GetEngineNlpPoolInfoResponse, L as GetEngineMaxMintNlpAmountParams, M as GetEngineMarketPriceResponse, N as GetEngineMarketPricesParams, O as GetEngineLinkedSignerResponse, P as GetEngineMarketPricesResponse, Q as GetEngineSubaccountFeeRatesResponse, R as GetEngineMaxMintNlpAmountResponse, S as GetEngineHealthGroupsResponse, T as GetEngineIsolatedPositionsParams, U as GetEngineMaxWithdrawableWithDynamicFeeResponse, V as GetEngineMaxWithdrawableParams, W as GetEngineNlpLockedBalancesParams, X as GetEngineOrderResponse, Y as GetEngineOrderParams, Z as GetEngineSubaccountFeeRatesParams, _ as GetEngineContractsResponse, at as GetEngineSymbolsParams, b as GetEngineDynamicFeeQuoteResponse, et as GetEngineSubaccountOrdersResponse, f as EngineSymbolsResponse, ht as ValidateSignedEngineOrderParams, it as GetEngineSubaccountSummaryResponse, j as GetEngineMarketPriceParams, k as GetEngineMarketLiquidityParams, mt as ValidateEngineOrderResponse, nt as GetEngineSubaccountProductOrdersResponse, p as GetEngineAllMarketsResponse, pt as ValidateEngineOrderParams, rt as GetEngineSubaccountSummaryParams, tt as GetEngineSubaccountProductOrdersParams, x as GetEngineEstimatedSubaccountSummaryParams, y as GetEngineDynamicFeeQuoteParams, z as GetEngineMaxOrderSizeParams } from "./clientQueryTypes-BRmW-hwV.js";
3
+ import { t as EngineBaseClient } from "./EngineBaseClient-CjoiEm02.js";
4
4
  import { MarketWithProduct } from "@nadohq/shared";
5
5
 
6
6
  //#region src/EngineQueryClient.d.ts
@@ -108,6 +108,23 @@ declare class EngineQueryClient extends EngineBaseClient {
108
108
  * @param params
109
109
  */
110
110
  getMaxWithdrawable(params: GetEngineMaxWithdrawableParams): Promise<GetEngineMaxWithdrawableResponse>;
111
+ /**
112
+ * Retrieves the estimated max withdrawal size for a product, with the current dynamic fee of
113
+ * Withdraw Collateral V2 reserved instead of the flat fee. The reserved fee is returned as
114
+ * `fee`.
115
+ * @param params
116
+ * @returns The max withdrawable with the current dynamic fee reserved, and the reserved fee.
117
+ */
118
+ getMaxWithdrawable(params: GetEngineMaxWithdrawableParams, options: {
119
+ withDynamicFee: true;
120
+ }): Promise<GetEngineMaxWithdrawableWithDynamicFeeResponse>;
121
+ /**
122
+ * Retrieves the current dynamic fee for a V2 withdrawal or V2 quote transfer.
123
+ * The fee is priced again at execution, so pass a `maxFeeX18` with some headroom when executing.
124
+ * @param params
125
+ * @returns The current required fee, the fee cap, and the V2 demand pressure.
126
+ */
127
+ getDynamicFeeQuote(params: GetEngineDynamicFeeQuoteParams): Promise<GetEngineDynamicFeeQuoteResponse>;
111
128
  /**
112
129
  * Retrieves the estimated max quote amount for minting NLP.
113
130
  *
@@ -144,4 +161,4 @@ declare class EngineQueryClient extends EngineBaseClient {
144
161
  }
145
162
  //#endregion
146
163
  export { EngineQueryClient as t };
147
- //# sourceMappingURL=EngineQueryClient-DAMp444j.d.ts.map
164
+ //# sourceMappingURL=EngineQueryClient-CyLOXvEQ.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EngineQueryClient-CyLOXvEQ.d.ts","names":[],"sources":["../src/src/EngineQueryClient.ts"],"mappings":";;;;;;cA6Ea,iBAAA,SAA0B,gBAAA;;;;EAI/B,YAAA,CAAA,GAAgB,OAAA,CAAQ,0BAAA;EAJD;;;EAevB,SAAA,CAAA,GAAa,OAAA,CAAQ,0BAAA;EAAA;;;;;;EAUrB,oBAAA,CACJ,MAAA,EAAQ,gCAAA,GACP,OAAA,CAAQ,kCAAA;EAmBR;;;;;EAFG,oBAAA,CACJ,MAAA,EAAQ,gCAAA,GACP,OAAA,CAAQ,kCAAA;EAgER;;;;;EA/CG,6BAAA,CACJ,MAAA,EAAQ,yCAAA,GACP,OAAA,CAAQ,kCAAA;EAiGsB;;;;;EAtD3B,UAAA,CACJ,MAAA,EAAQ,sBAAA,GACP,OAAA,CAAQ,qBAAA;EA0FA;;;EA5EL,aAAA,CAAA,GAAiB,OAAA,CAAQ,2BAAA;EAmG5B;;;EAlFG,iBAAA,CAAA,GAAqB,OAAA,CAAQ,MAAA,SAAe,iBAAA;EAwHxC;;;EAnGJ,eAAA,CAAA,GAAmB,OAAA,CAAQ,6BAAA;EA6HtB;;;;;EAzGL,QAAA,CACJ,MAAA,EAAQ,oBAAA,GACP,OAAA,CAAQ,sBAAA;EAmKA;;;;;EArJL,mBAAA,CACJ,MAAA,EAAQ,yBAAA,GACP,OAAA,CAAQ,2BAAA;EA+KA;;;;;EA1JL,yBAAA,CACJ,MAAA,EAAQ,+BAAA,GACP,OAAA,CAAQ,2BAAA;EAqMA;;;;EArLL,mBAAA,CACJ,MAAA,EAAQ,+BAAA,GACP,OAAA,CAAQ,iCAAA;EAoQD;;;;EAjPJ,+BAAA,CACJ,MAAA,EAAQ,sCAAA,GACP,OAAA,CAAQ,wCAAA;EAoQR;;;;EA7OG,qBAAA,CACJ,MAAA,EAAQ,iCAAA,GACP,OAAA,CAAQ,mCAAA;EA8QkB;;;;EArOvB,kBAAA,CACJ,MAAA,EAAQ,8BAAA,GACP,OAAA,CAAQ,gCAAA;EA8Pa;;;;EA/OlB,cAAA,CACJ,MAAA,EAAQ,0BAAA,GACP,OAAA,CAAQ,4BAAA;EAvVL;;;;EAkWA,eAAA,CACJ,MAAA,EAAQ,2BAAA,GACP,OAAA,CAAQ,6BAAA;EAzVgB;;;;EAsWrB,eAAA,CACJ,MAAA,EAAQ,2BAAA,GACP,OAAA,CAAQ,6BAAA;EA5VA;;;;EA4XL,kBAAA,CACJ,MAAA,EAAQ,8BAAA,GACP,OAAA,CAAQ,gCAAA;EA3WA;;;;;;;EAmXL,kBAAA,CACJ,MAAA,EAAQ,8BAAA,EACR,OAAA;IAAW,cAAA;EAAA,IACV,OAAA,CAAQ,8CAAA;EAtTA;;;;;;EA4VL,kBAAA,CACJ,MAAA,EAAQ,8BAAA,GACP,OAAA,CAAQ,gCAAA;EA/TuC;;;;;EAuW5C,mBAAA,CACJ,MAAA,EAAQ,+BAAA,GACP,OAAA,CAAQ,iCAAA;EA/TT;;;;;EAiVI,mBAAA,CACJ,MAAA,EAAQ,+BAAA,GACP,OAAA,CAAQ,iCAAA;EAlUR;;;;;EAkVU,eAAA,CACX,MAAA,EAAQ,2BAAA,GACP,OAAA,CAAQ,6BAAA;EA7TA;;;;EA8UE,YAAA,CAAA,GAAgB,OAAA,CAAQ,0BAAA;EA5T1B;;;;;EAuUL,oBAAA,CACJ,MAAA,EAAQ,gCAAA,GACP,OAAA,CAAQ,kCAAA;EA7RL;;;EA2SA,cAAA,CAAA,GAAkB,OAAA,CAAQ,4BAAA;AAAA"}
@@ -276,19 +276,59 @@ var EngineQueryClient = class extends require_EngineBaseClient.EngineBaseClient
276
276
  borrow_margin: params.isolated && params.isoBorrowMargin != null ? String(params.isoBorrowMargin) : null
277
277
  })).max_order_size);
278
278
  }
279
- /**
280
- * Retrieves the estimated max withdrawal size for a product
281
- * @param params
282
- */
283
- async getMaxWithdrawable(params) {
284
- return (0, _nadohq_shared.toBigNumber)((await this.query("max_withdrawable", {
279
+ async getMaxWithdrawable(params, options) {
280
+ const baseResponse = await this.query("max_withdrawable", {
285
281
  product_id: params.productId,
286
282
  sender: (0, _nadohq_shared.subaccountToHex)({
287
283
  subaccountOwner: params.subaccountOwner,
288
284
  subaccountName: params.subaccountName
289
285
  }),
290
- spot_leverage: params.spotLeverage != null ? String(params.spotLeverage) : null
291
- })).max_withdrawable);
286
+ spot_leverage: params.spotLeverage != null ? String(params.spotLeverage) : null,
287
+ dynamic_fee: options?.withDynamicFee ? "true" : null
288
+ });
289
+ if (options?.withDynamicFee) return {
290
+ maxWithdrawable: (0, _nadohq_shared.toBigNumber)(baseResponse.max_withdrawable),
291
+ fee: baseResponse.fee_x18 != null ? (0, _nadohq_shared.toBigNumber)(baseResponse.fee_x18) : void 0
292
+ };
293
+ return (0, _nadohq_shared.toBigNumber)(baseResponse.max_withdrawable);
294
+ }
295
+ /**
296
+ * Retrieves the current dynamic fee for a V2 withdrawal or V2 quote transfer.
297
+ * The fee is priced again at execution, so pass a `maxFeeX18` with some headroom when executing.
298
+ * @param params
299
+ * @returns The current required fee, the fee cap, and the V2 demand pressure.
300
+ */
301
+ async getDynamicFeeQuote(params) {
302
+ const sender = (0, _nadohq_shared.subaccountToHex)({
303
+ subaccountOwner: params.subaccountOwner,
304
+ subaccountName: params.subaccountName
305
+ });
306
+ let queryParams;
307
+ switch (params.kind) {
308
+ case "withdrawal":
309
+ queryParams = {
310
+ kind: params.kind,
311
+ sender,
312
+ product_id: params.productId
313
+ };
314
+ break;
315
+ case "transfer_quote":
316
+ queryParams = {
317
+ kind: params.kind,
318
+ sender,
319
+ recipient: (0, _nadohq_shared.subaccountToHex)({
320
+ subaccountOwner: params.subaccountOwner,
321
+ subaccountName: params.recipientSubaccountName
322
+ })
323
+ };
324
+ break;
325
+ }
326
+ const baseResponse = await this.query("dynamic_fee_quote", queryParams);
327
+ return {
328
+ requiredFee: (0, _nadohq_shared.toBigNumber)(baseResponse.required_fee_x18),
329
+ feeCap: (0, _nadohq_shared.toBigNumber)(baseResponse.fee_cap_x18),
330
+ pressure: (0, _nadohq_shared.toBigNumber)(baseResponse.pressure_x18)
331
+ };
292
332
  }
293
333
  /**
294
334
  * Retrieves the estimated max quote amount for minting NLP.
@@ -1 +1 @@
1
- {"version":3,"file":"EngineQueryClient.cjs","names":["EngineBaseClient","mapSubaccountSummary","mapEngineServerIsolatedPositions","mapEngineServerSymbols","mapProductEngineType","mapEngineServerSpotProduct","mapEngineServerPerpProduct","mapEngineServerOrder","mapEngineServerTickLiquidity","mapEngineMarketPrice","mapEngineServerNlpLockedBalances","mapEngineServerNlpPoolInfo"],"sources":["../src/EngineQueryClient.ts"],"sourcesContent":["import {\n addDecimals,\n encodeSignedOrder,\n getOrderVerifyingAddress,\n mapValues,\n MarketWithProduct,\n removeDecimals,\n subaccountToHex,\n toBigNumber,\n toIntegerString,\n} from '@nadohq/shared';\nimport BigNumber from 'bignumber.js';\nimport { EngineBaseClient } from './EngineBaseClient';\nimport {\n EngineServerStatusResponse,\n EngineServerSubaccountInfoQueryParams,\n EngineSymbolsResponse,\n GetEngineAllMarketsResponse,\n GetEngineContractsResponse,\n GetEngineEstimatedSubaccountSummaryParams,\n GetEngineHealthGroupsResponse,\n GetEngineInsuranceResponse,\n GetEngineIsolatedPositionsParams,\n GetEngineIsolatedPositionsResponse,\n GetEngineLinkedSignerParams,\n GetEngineLinkedSignerResponse,\n GetEngineMarketLiquidityParams,\n GetEngineMarketLiquidityResponse,\n GetEngineMarketPriceParams,\n GetEngineMarketPriceResponse,\n GetEngineMarketPricesParams,\n GetEngineMarketPricesResponse,\n GetEngineMaxBurnNlpAmountParams,\n GetEngineMaxBurnNlpAmountResponse,\n GetEngineMaxMintNlpAmountParams,\n GetEngineMaxMintNlpAmountResponse,\n GetEngineMaxOrderSizeParams,\n GetEngineMaxOrderSizeResponse,\n GetEngineMaxWithdrawableParams,\n GetEngineMaxWithdrawableResponse,\n GetEngineNlpLockedBalancesParams,\n GetEngineNlpLockedBalancesResponse,\n GetEngineNlpPoolInfoResponse,\n GetEngineOrderParams,\n GetEngineOrderResponse,\n GetEngineSubaccountFeeRatesParams,\n GetEngineSubaccountFeeRatesResponse,\n GetEngineSubaccountOrdersParams,\n GetEngineSubaccountOrdersResponse,\n GetEngineSubaccountProductOrdersParams,\n GetEngineSubaccountProductOrdersResponse,\n GetEngineSubaccountSummaryParams,\n GetEngineSubaccountSummaryResponse,\n GetEngineSymbolsParams,\n SubaccountOrderFeeRates,\n ValidateEngineOrderParams,\n ValidateEngineOrderResponse,\n ValidateSignedEngineOrderParams,\n} from './types';\nimport { mapProductEngineType } from './utils/productEngineTypeMappers';\nimport {\n mapEngineMarketPrice,\n mapEngineServerIsolatedPositions,\n mapEngineServerNlpLockedBalances,\n mapEngineServerNlpPoolInfo,\n mapEngineServerOrder,\n mapEngineServerPerpProduct,\n mapEngineServerSpotProduct,\n mapEngineServerSymbols,\n mapEngineServerTickLiquidity,\n mapSubaccountSummary,\n} from './utils/queryDataMappers';\n\nexport class EngineQueryClient extends EngineBaseClient {\n /**\n * Retrieves the set of contracts that the engine is interfacing with\n */\n async getContracts(): Promise<GetEngineContractsResponse> {\n const baseResponse = await this.query('contracts', {});\n return {\n chainId: Number(baseResponse.chain_id),\n endpointAddr: baseResponse.endpoint_addr,\n };\n }\n\n /**\n * Retrieves current engine status\n */\n async getStatus(): Promise<EngineServerStatusResponse> {\n return this.query('status', {});\n }\n\n /**\n * Retrieves a subaccount summary reflective of the state within the offchain engine. This adheres to the\n * same return interface as the contract version\n *\n * @param params\n */\n async getSubaccountSummary(\n params: GetEngineSubaccountSummaryParams,\n ): Promise<GetEngineSubaccountSummaryResponse> {\n const subaccount = subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n });\n const baseResponse = await this.query('subaccount_info', {\n subaccount,\n });\n\n return mapSubaccountSummary(baseResponse);\n }\n\n /**\n * Retrieves a list of isolated positions\n *\n * @param params\n */\n async getIsolatedPositions(\n params: GetEngineIsolatedPositionsParams,\n ): Promise<GetEngineIsolatedPositionsResponse> {\n const subaccount = subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n });\n const baseResponse = await this.query('isolated_positions', {\n subaccount,\n });\n\n return mapEngineServerIsolatedPositions(baseResponse);\n }\n\n /**\n * Retrieves an estimated subaccount summary with the applied transactions\n *\n * @param params\n */\n async getEstimatedSubaccountSummary(\n params: GetEngineEstimatedSubaccountSummaryParams,\n ): Promise<GetEngineSubaccountSummaryResponse> {\n const subaccount = subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n });\n const queryParams: EngineServerSubaccountInfoQueryParams = {\n subaccount: subaccount,\n txns: params.txs.map(\n (\n tx,\n ): NonNullable<\n EngineServerSubaccountInfoQueryParams['txns']\n >[number] => {\n switch (tx.type) {\n case 'apply_delta':\n return {\n apply_delta: {\n product_id: tx.tx.productId,\n subaccount,\n amount_delta: toIntegerString(tx.tx.amountDelta),\n v_quote_delta: toIntegerString(tx.tx.vQuoteDelta),\n },\n };\n }\n },\n ),\n };\n const baseResponse = await this.query('subaccount_info', {\n subaccount: queryParams.subaccount,\n txns: JSON.stringify(queryParams.txns),\n // Backend expects string variants of booleans\n pre_state:\n params.preState !== undefined ? String(params.preState) : undefined,\n });\n\n return mapSubaccountSummary(baseResponse);\n }\n\n /**\n * Retrieves symbols and product info\n *\n * @param params\n */\n async getSymbols(\n params: GetEngineSymbolsParams,\n ): Promise<EngineSymbolsResponse> {\n const baseResponse = await this.query('symbols', {\n product_ids: params.productIds,\n product_type:\n params.productType != null\n ? mapProductEngineType(params.productType)\n : undefined,\n });\n return mapEngineServerSymbols(baseResponse);\n }\n\n /**\n * Retrieves all market states as per the offchain engine. Same return interface as contracts\n */\n async getAllMarkets(): Promise<GetEngineAllMarketsResponse> {\n const markets: MarketWithProduct[] = [];\n\n const baseResponse = await this.query('all_products', {});\n baseResponse.spot_products.forEach((spotProduct) => {\n markets.push(mapEngineServerSpotProduct(spotProduct));\n });\n baseResponse.perp_products.forEach((perpProduct) => {\n markets.push(mapEngineServerPerpProduct(perpProduct));\n });\n\n return markets;\n }\n\n /**\n * Retrieves all markets by chain id.\n */\n async getEdgeAllMarkets(): Promise<Record<number, MarketWithProduct[]>> {\n const baseResponse = await this.query('edge_all_products', {});\n\n return mapValues(baseResponse.edge_all_products, (allProducts) => {\n const markets: MarketWithProduct[] = [];\n\n allProducts.spot_products.forEach((spotProduct) => {\n markets.push(mapEngineServerSpotProduct(spotProduct));\n });\n\n allProducts.perp_products.forEach((perpProduct) => {\n markets.push(mapEngineServerPerpProduct(perpProduct));\n });\n\n return markets;\n });\n }\n\n /**\n * Retrieves all health groups (linked spot & perp products) from the engine\n */\n async getHealthGroups(): Promise<GetEngineHealthGroupsResponse> {\n const baseResponse = await this.query('health_groups', {});\n\n return {\n healthGroups: baseResponse.health_groups.map(\n ([spotProductId, perpProductId]) => {\n return {\n spotProductId,\n perpProductId,\n };\n },\n ),\n };\n }\n\n /**\n * Retrieves an order from the offchain engine\n *\n * @param params\n */\n async getOrder(\n params: GetEngineOrderParams,\n ): Promise<GetEngineOrderResponse> {\n const baseResponse = await this.query('order', {\n digest: params.digest,\n product_id: params.productId,\n });\n\n return mapEngineServerOrder(baseResponse);\n }\n\n /**\n * Signs and validates with the engine that the order is valid to be submitted (i.e. does not violate health reqs)\n *\n * @param params\n */\n async validateOrderParams(\n params: ValidateEngineOrderParams,\n ): Promise<ValidateEngineOrderResponse> {\n const signedOrder = {\n order: params.order,\n signature: await this.sign(\n 'place_order',\n getOrderVerifyingAddress(params.productId),\n params.chainId,\n params.order,\n ),\n };\n return this.validateSignedOrderParams({\n signedOrder,\n productId: params.productId,\n });\n }\n\n /**\n * Validates an existing signed order with the engine as a pre-check for health\n *\n * @param params\n */\n async validateSignedOrderParams(\n params: ValidateSignedEngineOrderParams,\n ): Promise<ValidateEngineOrderResponse> {\n const baseResponse = await this.query('validate_order', {\n product_id: params.productId,\n order: encodeSignedOrder(params.signedOrder),\n });\n\n return {\n productId: baseResponse.product_id,\n valid: baseResponse.valid,\n };\n }\n\n /**\n * Get all subaccount orders from the engine, per product ID\n * @param params\n */\n async getSubaccountOrders(\n params: GetEngineSubaccountOrdersParams,\n ): Promise<GetEngineSubaccountOrdersResponse> {\n const baseResponse = await this.query('subaccount_orders', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n product_id: params.productId,\n });\n\n return {\n orders: baseResponse.orders.map(mapEngineServerOrder),\n productId: params.productId,\n };\n }\n\n /**\n * Get all subaccount orders from the engine, for multiple products\n * @param params\n */\n async getSubaccountMultiProductOrders(\n params: GetEngineSubaccountProductOrdersParams,\n ): Promise<GetEngineSubaccountProductOrdersResponse> {\n const baseResponse = await this.query('orders', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n product_ids: params.productIds,\n });\n\n return {\n productOrders: baseResponse.product_orders.map((orders) => {\n return {\n orders: orders.orders.map(mapEngineServerOrder),\n productId: orders.product_id,\n };\n }),\n };\n }\n\n /**\n * Gets maker & taker fee rates for order fees\n * @param params\n */\n async getSubaccountFeeRates(\n params: GetEngineSubaccountFeeRatesParams,\n ): Promise<GetEngineSubaccountFeeRatesResponse> {\n const baseResponse = await this.query('fee_rates', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n });\n\n return {\n healthCheckSequencerFee: toBigNumber(\n baseResponse.health_check_sequencer_fee,\n ),\n liquidationSequencerFee: toBigNumber(\n baseResponse.liquidation_sequencer_fee,\n ),\n takerSequencerFee: toBigNumber(baseResponse.taker_sequencer_fee),\n orders: baseResponse.taker_fee_rates_x18.reduce(\n (acc, takerRateX18, currIndex) => {\n acc[currIndex] = {\n taker: removeDecimals(takerRateX18),\n maker: removeDecimals(baseResponse.maker_fee_rates_x18[currIndex]),\n };\n return acc;\n },\n {} as Record<number, SubaccountOrderFeeRates>,\n ),\n withdrawal: baseResponse.withdraw_sequencer_fees.reduce(\n (acc, productFee, currIndex) => {\n acc[currIndex] = toBigNumber(productFee);\n return acc;\n },\n {} as Record<number, BigNumber>,\n ),\n feeTier: baseResponse.fee_tier,\n };\n }\n\n /**\n * Gets \"price ticks\" for a given market, useful for constructing liquidity levels at each price\n * @param params\n */\n async getMarketLiquidity(\n params: GetEngineMarketLiquidityParams,\n ): Promise<GetEngineMarketLiquidityResponse> {\n const baseResponse = await this.query('market_liquidity', {\n product_id: params.productId,\n depth: params.depth,\n });\n return {\n asks: baseResponse.asks.map(mapEngineServerTickLiquidity),\n bids: baseResponse.bids.map(mapEngineServerTickLiquidity),\n };\n }\n\n /**\n * Retrieves the latest price for a given market\n * @param params\n */\n async getMarketPrice(\n params: GetEngineMarketPriceParams,\n ): Promise<GetEngineMarketPriceResponse> {\n const baseResponse = await this.query('market_price', {\n product_id: params.productId,\n });\n return mapEngineMarketPrice(baseResponse);\n }\n\n /**\n * Retrieves the latest prices for provided markets\n * @param params\n */\n async getMarketPrices(\n params: GetEngineMarketPricesParams,\n ): Promise<GetEngineMarketPricesResponse> {\n const baseResponse = await this.query('market_prices', {\n product_ids: params.productIds,\n });\n return {\n marketPrices: baseResponse.market_prices.map(mapEngineMarketPrice),\n };\n }\n\n /**\n * Retrieves the estimated max order size for a product\n * @param params\n */\n async getMaxOrderSize(\n params: GetEngineMaxOrderSizeParams,\n ): Promise<GetEngineMaxOrderSizeResponse> {\n const baseResponse = await this.query('max_order_size', {\n direction: params.side,\n price_x18: toIntegerString(addDecimals(params.price)),\n avg_price_x18:\n params.avgPrice != null\n ? toIntegerString(addDecimals(params.avgPrice))\n : null,\n product_id: params.productId,\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n // Backend expects string variants of booleans\n spot_leverage:\n params.spotLeverage != null ? String(params.spotLeverage) : null,\n reduce_only: params.reduceOnly != null ? String(params.reduceOnly) : null,\n isolated: params.isolated != null ? String(params.isolated) : null,\n borrow_margin:\n // This field is only relevant for isolated orders\n params.isolated && params.isoBorrowMargin != null\n ? String(params.isoBorrowMargin)\n : null,\n });\n\n return toBigNumber(baseResponse.max_order_size);\n }\n\n /**\n * Retrieves the estimated max withdrawal size for a product\n * @param params\n */\n async getMaxWithdrawable(\n params: GetEngineMaxWithdrawableParams,\n ): Promise<GetEngineMaxWithdrawableResponse> {\n const baseResponse = await this.query('max_withdrawable', {\n product_id: params.productId,\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n spot_leverage:\n params.spotLeverage != null ? String(params.spotLeverage) : null,\n });\n\n return toBigNumber(baseResponse.max_withdrawable);\n }\n\n /**\n * Retrieves the estimated max quote amount for minting NLP.\n *\n * @param params\n */\n async getMaxMintNlpAmount(\n params: GetEngineMaxMintNlpAmountParams,\n ): Promise<GetEngineMaxMintNlpAmountResponse> {\n const baseResponse = await this.query('max_nlp_mintable', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n spot_leverage:\n params.spotLeverage != null ? String(params.spotLeverage) : null,\n });\n\n return toBigNumber(baseResponse.max_quote_amount);\n }\n\n /**\n * Retrieves the max amount of NLP that can be burned.\n *\n * @param params\n */\n async getMaxBurnNlpAmount(\n params: GetEngineMaxBurnNlpAmountParams,\n ): Promise<GetEngineMaxBurnNlpAmountResponse> {\n const baseResponse = await this.query('max_nlp_burnable', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n });\n\n return toBigNumber(baseResponse.max_nlp_amount);\n }\n\n /**\n * Gets the currently linked signer for the subaccount\n * @param params\n * @returns\n */\n public async getLinkedSigner(\n params: GetEngineLinkedSignerParams,\n ): Promise<GetEngineLinkedSignerResponse> {\n const baseResponse = await this.query('linked_signer', {\n subaccount: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n });\n\n return {\n signer: baseResponse.linked_signer,\n };\n }\n\n /**\n * Gets the insurance funds in USDT.\n * @returns\n */\n public async getInsurance(): Promise<GetEngineInsuranceResponse> {\n const baseResponse = await this.query('insurance', {});\n\n return toBigNumber(baseResponse.insurance);\n }\n\n /**\n * Retrieves the NLP locked and unlocked balances for a subaccount.\n *\n * @param params\n */\n async getNlpLockedBalances(\n params: GetEngineNlpLockedBalancesParams,\n ): Promise<GetEngineNlpLockedBalancesResponse> {\n const baseResponse = await this.query('nlp_locked_balances', {\n subaccount: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n });\n\n return mapEngineServerNlpLockedBalances(baseResponse);\n }\n\n /**\n * Retrieves information about all NLP sub-pools\n */\n async getNlpPoolInfo(): Promise<GetEngineNlpPoolInfoResponse> {\n const baseResponse = await this.query('nlp_pool_info', {});\n return mapEngineServerNlpPoolInfo(baseResponse);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"EngineQueryClient.cjs","names":["EngineBaseClient","mapSubaccountSummary","mapEngineServerIsolatedPositions","mapEngineServerSymbols","mapProductEngineType","mapEngineServerSpotProduct","mapEngineServerPerpProduct","mapEngineServerOrder","mapEngineServerTickLiquidity","mapEngineMarketPrice","mapEngineServerNlpLockedBalances","mapEngineServerNlpPoolInfo"],"sources":["../src/EngineQueryClient.ts"],"sourcesContent":["import {\n addDecimals,\n encodeSignedOrder,\n getOrderVerifyingAddress,\n mapValues,\n MarketWithProduct,\n removeDecimals,\n subaccountToHex,\n toBigNumber,\n toIntegerString,\n} from '@nadohq/shared';\nimport BigNumber from 'bignumber.js';\nimport { EngineBaseClient } from './EngineBaseClient';\nimport {\n EngineServerDynamicFeeQuoteQueryParams,\n EngineServerStatusResponse,\n EngineServerSubaccountInfoQueryParams,\n EngineSymbolsResponse,\n GetEngineAllMarketsResponse,\n GetEngineContractsResponse,\n GetEngineDynamicFeeQuoteParams,\n GetEngineDynamicFeeQuoteResponse,\n GetEngineEstimatedSubaccountSummaryParams,\n GetEngineHealthGroupsResponse,\n GetEngineInsuranceResponse,\n GetEngineIsolatedPositionsParams,\n GetEngineIsolatedPositionsResponse,\n GetEngineLinkedSignerParams,\n GetEngineLinkedSignerResponse,\n GetEngineMarketLiquidityParams,\n GetEngineMarketLiquidityResponse,\n GetEngineMarketPriceParams,\n GetEngineMarketPriceResponse,\n GetEngineMarketPricesParams,\n GetEngineMarketPricesResponse,\n GetEngineMaxBurnNlpAmountParams,\n GetEngineMaxBurnNlpAmountResponse,\n GetEngineMaxMintNlpAmountParams,\n GetEngineMaxMintNlpAmountResponse,\n GetEngineMaxOrderSizeParams,\n GetEngineMaxOrderSizeResponse,\n GetEngineMaxWithdrawableParams,\n GetEngineMaxWithdrawableResponse,\n GetEngineMaxWithdrawableWithDynamicFeeResponse,\n GetEngineNlpLockedBalancesParams,\n GetEngineNlpLockedBalancesResponse,\n GetEngineNlpPoolInfoResponse,\n GetEngineOrderParams,\n GetEngineOrderResponse,\n GetEngineSubaccountFeeRatesParams,\n GetEngineSubaccountFeeRatesResponse,\n GetEngineSubaccountOrdersParams,\n GetEngineSubaccountOrdersResponse,\n GetEngineSubaccountProductOrdersParams,\n GetEngineSubaccountProductOrdersResponse,\n GetEngineSubaccountSummaryParams,\n GetEngineSubaccountSummaryResponse,\n GetEngineSymbolsParams,\n SubaccountOrderFeeRates,\n ValidateEngineOrderParams,\n ValidateEngineOrderResponse,\n ValidateSignedEngineOrderParams,\n} from './types';\nimport { mapProductEngineType } from './utils/productEngineTypeMappers';\nimport {\n mapEngineMarketPrice,\n mapEngineServerIsolatedPositions,\n mapEngineServerNlpLockedBalances,\n mapEngineServerNlpPoolInfo,\n mapEngineServerOrder,\n mapEngineServerPerpProduct,\n mapEngineServerSpotProduct,\n mapEngineServerSymbols,\n mapEngineServerTickLiquidity,\n mapSubaccountSummary,\n} from './utils/queryDataMappers';\n\nexport class EngineQueryClient extends EngineBaseClient {\n /**\n * Retrieves the set of contracts that the engine is interfacing with\n */\n async getContracts(): Promise<GetEngineContractsResponse> {\n const baseResponse = await this.query('contracts', {});\n return {\n chainId: Number(baseResponse.chain_id),\n endpointAddr: baseResponse.endpoint_addr,\n };\n }\n\n /**\n * Retrieves current engine status\n */\n async getStatus(): Promise<EngineServerStatusResponse> {\n return this.query('status', {});\n }\n\n /**\n * Retrieves a subaccount summary reflective of the state within the offchain engine. This adheres to the\n * same return interface as the contract version\n *\n * @param params\n */\n async getSubaccountSummary(\n params: GetEngineSubaccountSummaryParams,\n ): Promise<GetEngineSubaccountSummaryResponse> {\n const subaccount = subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n });\n const baseResponse = await this.query('subaccount_info', {\n subaccount,\n });\n\n return mapSubaccountSummary(baseResponse);\n }\n\n /**\n * Retrieves a list of isolated positions\n *\n * @param params\n */\n async getIsolatedPositions(\n params: GetEngineIsolatedPositionsParams,\n ): Promise<GetEngineIsolatedPositionsResponse> {\n const subaccount = subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n });\n const baseResponse = await this.query('isolated_positions', {\n subaccount,\n });\n\n return mapEngineServerIsolatedPositions(baseResponse);\n }\n\n /**\n * Retrieves an estimated subaccount summary with the applied transactions\n *\n * @param params\n */\n async getEstimatedSubaccountSummary(\n params: GetEngineEstimatedSubaccountSummaryParams,\n ): Promise<GetEngineSubaccountSummaryResponse> {\n const subaccount = subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n });\n const queryParams: EngineServerSubaccountInfoQueryParams = {\n subaccount: subaccount,\n txns: params.txs.map(\n (\n tx,\n ): NonNullable<\n EngineServerSubaccountInfoQueryParams['txns']\n >[number] => {\n switch (tx.type) {\n case 'apply_delta':\n return {\n apply_delta: {\n product_id: tx.tx.productId,\n subaccount,\n amount_delta: toIntegerString(tx.tx.amountDelta),\n v_quote_delta: toIntegerString(tx.tx.vQuoteDelta),\n },\n };\n }\n },\n ),\n };\n const baseResponse = await this.query('subaccount_info', {\n subaccount: queryParams.subaccount,\n txns: JSON.stringify(queryParams.txns),\n // Backend expects string variants of booleans\n pre_state:\n params.preState !== undefined ? String(params.preState) : undefined,\n });\n\n return mapSubaccountSummary(baseResponse);\n }\n\n /**\n * Retrieves symbols and product info\n *\n * @param params\n */\n async getSymbols(\n params: GetEngineSymbolsParams,\n ): Promise<EngineSymbolsResponse> {\n const baseResponse = await this.query('symbols', {\n product_ids: params.productIds,\n product_type:\n params.productType != null\n ? mapProductEngineType(params.productType)\n : undefined,\n });\n return mapEngineServerSymbols(baseResponse);\n }\n\n /**\n * Retrieves all market states as per the offchain engine. Same return interface as contracts\n */\n async getAllMarkets(): Promise<GetEngineAllMarketsResponse> {\n const markets: MarketWithProduct[] = [];\n\n const baseResponse = await this.query('all_products', {});\n baseResponse.spot_products.forEach((spotProduct) => {\n markets.push(mapEngineServerSpotProduct(spotProduct));\n });\n baseResponse.perp_products.forEach((perpProduct) => {\n markets.push(mapEngineServerPerpProduct(perpProduct));\n });\n\n return markets;\n }\n\n /**\n * Retrieves all markets by chain id.\n */\n async getEdgeAllMarkets(): Promise<Record<number, MarketWithProduct[]>> {\n const baseResponse = await this.query('edge_all_products', {});\n\n return mapValues(baseResponse.edge_all_products, (allProducts) => {\n const markets: MarketWithProduct[] = [];\n\n allProducts.spot_products.forEach((spotProduct) => {\n markets.push(mapEngineServerSpotProduct(spotProduct));\n });\n\n allProducts.perp_products.forEach((perpProduct) => {\n markets.push(mapEngineServerPerpProduct(perpProduct));\n });\n\n return markets;\n });\n }\n\n /**\n * Retrieves all health groups (linked spot & perp products) from the engine\n */\n async getHealthGroups(): Promise<GetEngineHealthGroupsResponse> {\n const baseResponse = await this.query('health_groups', {});\n\n return {\n healthGroups: baseResponse.health_groups.map(\n ([spotProductId, perpProductId]) => {\n return {\n spotProductId,\n perpProductId,\n };\n },\n ),\n };\n }\n\n /**\n * Retrieves an order from the offchain engine\n *\n * @param params\n */\n async getOrder(\n params: GetEngineOrderParams,\n ): Promise<GetEngineOrderResponse> {\n const baseResponse = await this.query('order', {\n digest: params.digest,\n product_id: params.productId,\n });\n\n return mapEngineServerOrder(baseResponse);\n }\n\n /**\n * Signs and validates with the engine that the order is valid to be submitted (i.e. does not violate health reqs)\n *\n * @param params\n */\n async validateOrderParams(\n params: ValidateEngineOrderParams,\n ): Promise<ValidateEngineOrderResponse> {\n const signedOrder = {\n order: params.order,\n signature: await this.sign(\n 'place_order',\n getOrderVerifyingAddress(params.productId),\n params.chainId,\n params.order,\n ),\n };\n return this.validateSignedOrderParams({\n signedOrder,\n productId: params.productId,\n });\n }\n\n /**\n * Validates an existing signed order with the engine as a pre-check for health\n *\n * @param params\n */\n async validateSignedOrderParams(\n params: ValidateSignedEngineOrderParams,\n ): Promise<ValidateEngineOrderResponse> {\n const baseResponse = await this.query('validate_order', {\n product_id: params.productId,\n order: encodeSignedOrder(params.signedOrder),\n });\n\n return {\n productId: baseResponse.product_id,\n valid: baseResponse.valid,\n };\n }\n\n /**\n * Get all subaccount orders from the engine, per product ID\n * @param params\n */\n async getSubaccountOrders(\n params: GetEngineSubaccountOrdersParams,\n ): Promise<GetEngineSubaccountOrdersResponse> {\n const baseResponse = await this.query('subaccount_orders', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n product_id: params.productId,\n });\n\n return {\n orders: baseResponse.orders.map(mapEngineServerOrder),\n productId: params.productId,\n };\n }\n\n /**\n * Get all subaccount orders from the engine, for multiple products\n * @param params\n */\n async getSubaccountMultiProductOrders(\n params: GetEngineSubaccountProductOrdersParams,\n ): Promise<GetEngineSubaccountProductOrdersResponse> {\n const baseResponse = await this.query('orders', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n product_ids: params.productIds,\n });\n\n return {\n productOrders: baseResponse.product_orders.map((orders) => {\n return {\n orders: orders.orders.map(mapEngineServerOrder),\n productId: orders.product_id,\n };\n }),\n };\n }\n\n /**\n * Gets maker & taker fee rates for order fees\n * @param params\n */\n async getSubaccountFeeRates(\n params: GetEngineSubaccountFeeRatesParams,\n ): Promise<GetEngineSubaccountFeeRatesResponse> {\n const baseResponse = await this.query('fee_rates', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n });\n\n return {\n healthCheckSequencerFee: toBigNumber(\n baseResponse.health_check_sequencer_fee,\n ),\n liquidationSequencerFee: toBigNumber(\n baseResponse.liquidation_sequencer_fee,\n ),\n takerSequencerFee: toBigNumber(baseResponse.taker_sequencer_fee),\n orders: baseResponse.taker_fee_rates_x18.reduce(\n (acc, takerRateX18, currIndex) => {\n acc[currIndex] = {\n taker: removeDecimals(takerRateX18),\n maker: removeDecimals(baseResponse.maker_fee_rates_x18[currIndex]),\n };\n return acc;\n },\n {} as Record<number, SubaccountOrderFeeRates>,\n ),\n withdrawal: baseResponse.withdraw_sequencer_fees.reduce(\n (acc, productFee, currIndex) => {\n acc[currIndex] = toBigNumber(productFee);\n return acc;\n },\n {} as Record<number, BigNumber>,\n ),\n feeTier: baseResponse.fee_tier,\n };\n }\n\n /**\n * Gets \"price ticks\" for a given market, useful for constructing liquidity levels at each price\n * @param params\n */\n async getMarketLiquidity(\n params: GetEngineMarketLiquidityParams,\n ): Promise<GetEngineMarketLiquidityResponse> {\n const baseResponse = await this.query('market_liquidity', {\n product_id: params.productId,\n depth: params.depth,\n });\n return {\n asks: baseResponse.asks.map(mapEngineServerTickLiquidity),\n bids: baseResponse.bids.map(mapEngineServerTickLiquidity),\n };\n }\n\n /**\n * Retrieves the latest price for a given market\n * @param params\n */\n async getMarketPrice(\n params: GetEngineMarketPriceParams,\n ): Promise<GetEngineMarketPriceResponse> {\n const baseResponse = await this.query('market_price', {\n product_id: params.productId,\n });\n return mapEngineMarketPrice(baseResponse);\n }\n\n /**\n * Retrieves the latest prices for provided markets\n * @param params\n */\n async getMarketPrices(\n params: GetEngineMarketPricesParams,\n ): Promise<GetEngineMarketPricesResponse> {\n const baseResponse = await this.query('market_prices', {\n product_ids: params.productIds,\n });\n return {\n marketPrices: baseResponse.market_prices.map(mapEngineMarketPrice),\n };\n }\n\n /**\n * Retrieves the estimated max order size for a product\n * @param params\n */\n async getMaxOrderSize(\n params: GetEngineMaxOrderSizeParams,\n ): Promise<GetEngineMaxOrderSizeResponse> {\n const baseResponse = await this.query('max_order_size', {\n direction: params.side,\n price_x18: toIntegerString(addDecimals(params.price)),\n avg_price_x18:\n params.avgPrice != null\n ? toIntegerString(addDecimals(params.avgPrice))\n : null,\n product_id: params.productId,\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n // Backend expects string variants of booleans\n spot_leverage:\n params.spotLeverage != null ? String(params.spotLeverage) : null,\n reduce_only: params.reduceOnly != null ? String(params.reduceOnly) : null,\n isolated: params.isolated != null ? String(params.isolated) : null,\n borrow_margin:\n // This field is only relevant for isolated orders\n params.isolated && params.isoBorrowMargin != null\n ? String(params.isoBorrowMargin)\n : null,\n });\n\n return toBigNumber(baseResponse.max_order_size);\n }\n\n /**\n * Retrieves the estimated max withdrawal size for a product\n * @param params\n */\n async getMaxWithdrawable(\n params: GetEngineMaxWithdrawableParams,\n ): Promise<GetEngineMaxWithdrawableResponse>;\n /**\n * Retrieves the estimated max withdrawal size for a product, with the current dynamic fee of\n * Withdraw Collateral V2 reserved instead of the flat fee. The reserved fee is returned as\n * `fee`.\n * @param params\n * @returns The max withdrawable with the current dynamic fee reserved, and the reserved fee.\n */\n async getMaxWithdrawable(\n params: GetEngineMaxWithdrawableParams,\n options: { withDynamicFee: true },\n ): Promise<GetEngineMaxWithdrawableWithDynamicFeeResponse>;\n async getMaxWithdrawable(\n params: GetEngineMaxWithdrawableParams,\n options?: { withDynamicFee?: boolean },\n ): Promise<\n | GetEngineMaxWithdrawableResponse\n | GetEngineMaxWithdrawableWithDynamicFeeResponse\n > {\n const baseResponse = await this.query('max_withdrawable', {\n product_id: params.productId,\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n spot_leverage:\n params.spotLeverage != null ? String(params.spotLeverage) : null,\n dynamic_fee: options?.withDynamicFee ? 'true' : null,\n });\n\n if (options?.withDynamicFee) {\n return {\n maxWithdrawable: toBigNumber(baseResponse.max_withdrawable),\n fee:\n baseResponse.fee_x18 != null\n ? toBigNumber(baseResponse.fee_x18)\n : undefined,\n };\n }\n\n return toBigNumber(baseResponse.max_withdrawable);\n }\n\n /**\n * Retrieves the current dynamic fee for a V2 withdrawal or V2 quote transfer.\n * The fee is priced again at execution, so pass a `maxFeeX18` with some headroom when executing.\n * @param params\n * @returns The current required fee, the fee cap, and the V2 demand pressure.\n */\n async getDynamicFeeQuote(\n params: GetEngineDynamicFeeQuoteParams,\n ): Promise<GetEngineDynamicFeeQuoteResponse> {\n const sender = subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n });\n let queryParams: EngineServerDynamicFeeQuoteQueryParams;\n switch (params.kind) {\n case 'withdrawal':\n queryParams = {\n kind: params.kind,\n sender,\n product_id: params.productId,\n };\n break;\n case 'transfer_quote':\n queryParams = {\n kind: params.kind,\n sender,\n recipient: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.recipientSubaccountName,\n }),\n };\n break;\n }\n\n const baseResponse = await this.query('dynamic_fee_quote', queryParams);\n\n return {\n requiredFee: toBigNumber(baseResponse.required_fee_x18),\n feeCap: toBigNumber(baseResponse.fee_cap_x18),\n pressure: toBigNumber(baseResponse.pressure_x18),\n };\n }\n\n /**\n * Retrieves the estimated max quote amount for minting NLP.\n *\n * @param params\n */\n async getMaxMintNlpAmount(\n params: GetEngineMaxMintNlpAmountParams,\n ): Promise<GetEngineMaxMintNlpAmountResponse> {\n const baseResponse = await this.query('max_nlp_mintable', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n spot_leverage:\n params.spotLeverage != null ? String(params.spotLeverage) : null,\n });\n\n return toBigNumber(baseResponse.max_quote_amount);\n }\n\n /**\n * Retrieves the max amount of NLP that can be burned.\n *\n * @param params\n */\n async getMaxBurnNlpAmount(\n params: GetEngineMaxBurnNlpAmountParams,\n ): Promise<GetEngineMaxBurnNlpAmountResponse> {\n const baseResponse = await this.query('max_nlp_burnable', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n });\n\n return toBigNumber(baseResponse.max_nlp_amount);\n }\n\n /**\n * Gets the currently linked signer for the subaccount\n * @param params\n * @returns\n */\n public async getLinkedSigner(\n params: GetEngineLinkedSignerParams,\n ): Promise<GetEngineLinkedSignerResponse> {\n const baseResponse = await this.query('linked_signer', {\n subaccount: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n });\n\n return {\n signer: baseResponse.linked_signer,\n };\n }\n\n /**\n * Gets the insurance funds in USDT.\n * @returns\n */\n public async getInsurance(): Promise<GetEngineInsuranceResponse> {\n const baseResponse = await this.query('insurance', {});\n\n return toBigNumber(baseResponse.insurance);\n }\n\n /**\n * Retrieves the NLP locked and unlocked balances for a subaccount.\n *\n * @param params\n */\n async getNlpLockedBalances(\n params: GetEngineNlpLockedBalancesParams,\n ): Promise<GetEngineNlpLockedBalancesResponse> {\n const baseResponse = await this.query('nlp_locked_balances', {\n subaccount: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n });\n\n return mapEngineServerNlpLockedBalances(baseResponse);\n }\n\n /**\n * Retrieves information about all NLP sub-pools\n */\n async getNlpPoolInfo(): Promise<GetEngineNlpPoolInfoResponse> {\n const baseResponse = await this.query('nlp_pool_info', {});\n return mapEngineServerNlpPoolInfo(baseResponse);\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { t as EngineQueryClient } from "./EngineQueryClient-kc0UgD75.cjs";
1
+ import { t as EngineQueryClient } from "./EngineQueryClient-Bb_dQxl9.cjs";
2
2
  export { EngineQueryClient };
@@ -1,2 +1,2 @@
1
- import { t as EngineQueryClient } from "./EngineQueryClient-DAMp444j.js";
1
+ import { t as EngineQueryClient } from "./EngineQueryClient-CyLOXvEQ.js";
2
2
  export { EngineQueryClient };
@@ -275,19 +275,59 @@ var EngineQueryClient = class extends EngineBaseClient {
275
275
  borrow_margin: params.isolated && params.isoBorrowMargin != null ? String(params.isoBorrowMargin) : null
276
276
  })).max_order_size);
277
277
  }
278
- /**
279
- * Retrieves the estimated max withdrawal size for a product
280
- * @param params
281
- */
282
- async getMaxWithdrawable(params) {
283
- return toBigNumber((await this.query("max_withdrawable", {
278
+ async getMaxWithdrawable(params, options) {
279
+ const baseResponse = await this.query("max_withdrawable", {
284
280
  product_id: params.productId,
285
281
  sender: subaccountToHex({
286
282
  subaccountOwner: params.subaccountOwner,
287
283
  subaccountName: params.subaccountName
288
284
  }),
289
- spot_leverage: params.spotLeverage != null ? String(params.spotLeverage) : null
290
- })).max_withdrawable);
285
+ spot_leverage: params.spotLeverage != null ? String(params.spotLeverage) : null,
286
+ dynamic_fee: options?.withDynamicFee ? "true" : null
287
+ });
288
+ if (options?.withDynamicFee) return {
289
+ maxWithdrawable: toBigNumber(baseResponse.max_withdrawable),
290
+ fee: baseResponse.fee_x18 != null ? toBigNumber(baseResponse.fee_x18) : void 0
291
+ };
292
+ return toBigNumber(baseResponse.max_withdrawable);
293
+ }
294
+ /**
295
+ * Retrieves the current dynamic fee for a V2 withdrawal or V2 quote transfer.
296
+ * The fee is priced again at execution, so pass a `maxFeeX18` with some headroom when executing.
297
+ * @param params
298
+ * @returns The current required fee, the fee cap, and the V2 demand pressure.
299
+ */
300
+ async getDynamicFeeQuote(params) {
301
+ const sender = subaccountToHex({
302
+ subaccountOwner: params.subaccountOwner,
303
+ subaccountName: params.subaccountName
304
+ });
305
+ let queryParams;
306
+ switch (params.kind) {
307
+ case "withdrawal":
308
+ queryParams = {
309
+ kind: params.kind,
310
+ sender,
311
+ product_id: params.productId
312
+ };
313
+ break;
314
+ case "transfer_quote":
315
+ queryParams = {
316
+ kind: params.kind,
317
+ sender,
318
+ recipient: subaccountToHex({
319
+ subaccountOwner: params.subaccountOwner,
320
+ subaccountName: params.recipientSubaccountName
321
+ })
322
+ };
323
+ break;
324
+ }
325
+ const baseResponse = await this.query("dynamic_fee_quote", queryParams);
326
+ return {
327
+ requiredFee: toBigNumber(baseResponse.required_fee_x18),
328
+ feeCap: toBigNumber(baseResponse.fee_cap_x18),
329
+ pressure: toBigNumber(baseResponse.pressure_x18)
330
+ };
291
331
  }
292
332
  /**
293
333
  * Retrieves the estimated max quote amount for minting NLP.
@@ -1 +1 @@
1
- {"version":3,"file":"EngineQueryClient.js","names":[],"sources":["../src/EngineQueryClient.ts"],"sourcesContent":["import {\n addDecimals,\n encodeSignedOrder,\n getOrderVerifyingAddress,\n mapValues,\n MarketWithProduct,\n removeDecimals,\n subaccountToHex,\n toBigNumber,\n toIntegerString,\n} from '@nadohq/shared';\nimport BigNumber from 'bignumber.js';\nimport { EngineBaseClient } from './EngineBaseClient';\nimport {\n EngineServerStatusResponse,\n EngineServerSubaccountInfoQueryParams,\n EngineSymbolsResponse,\n GetEngineAllMarketsResponse,\n GetEngineContractsResponse,\n GetEngineEstimatedSubaccountSummaryParams,\n GetEngineHealthGroupsResponse,\n GetEngineInsuranceResponse,\n GetEngineIsolatedPositionsParams,\n GetEngineIsolatedPositionsResponse,\n GetEngineLinkedSignerParams,\n GetEngineLinkedSignerResponse,\n GetEngineMarketLiquidityParams,\n GetEngineMarketLiquidityResponse,\n GetEngineMarketPriceParams,\n GetEngineMarketPriceResponse,\n GetEngineMarketPricesParams,\n GetEngineMarketPricesResponse,\n GetEngineMaxBurnNlpAmountParams,\n GetEngineMaxBurnNlpAmountResponse,\n GetEngineMaxMintNlpAmountParams,\n GetEngineMaxMintNlpAmountResponse,\n GetEngineMaxOrderSizeParams,\n GetEngineMaxOrderSizeResponse,\n GetEngineMaxWithdrawableParams,\n GetEngineMaxWithdrawableResponse,\n GetEngineNlpLockedBalancesParams,\n GetEngineNlpLockedBalancesResponse,\n GetEngineNlpPoolInfoResponse,\n GetEngineOrderParams,\n GetEngineOrderResponse,\n GetEngineSubaccountFeeRatesParams,\n GetEngineSubaccountFeeRatesResponse,\n GetEngineSubaccountOrdersParams,\n GetEngineSubaccountOrdersResponse,\n GetEngineSubaccountProductOrdersParams,\n GetEngineSubaccountProductOrdersResponse,\n GetEngineSubaccountSummaryParams,\n GetEngineSubaccountSummaryResponse,\n GetEngineSymbolsParams,\n SubaccountOrderFeeRates,\n ValidateEngineOrderParams,\n ValidateEngineOrderResponse,\n ValidateSignedEngineOrderParams,\n} from './types';\nimport { mapProductEngineType } from './utils/productEngineTypeMappers';\nimport {\n mapEngineMarketPrice,\n mapEngineServerIsolatedPositions,\n mapEngineServerNlpLockedBalances,\n mapEngineServerNlpPoolInfo,\n mapEngineServerOrder,\n mapEngineServerPerpProduct,\n mapEngineServerSpotProduct,\n mapEngineServerSymbols,\n mapEngineServerTickLiquidity,\n mapSubaccountSummary,\n} from './utils/queryDataMappers';\n\nexport class EngineQueryClient extends EngineBaseClient {\n /**\n * Retrieves the set of contracts that the engine is interfacing with\n */\n async getContracts(): Promise<GetEngineContractsResponse> {\n const baseResponse = await this.query('contracts', {});\n return {\n chainId: Number(baseResponse.chain_id),\n endpointAddr: baseResponse.endpoint_addr,\n };\n }\n\n /**\n * Retrieves current engine status\n */\n async getStatus(): Promise<EngineServerStatusResponse> {\n return this.query('status', {});\n }\n\n /**\n * Retrieves a subaccount summary reflective of the state within the offchain engine. This adheres to the\n * same return interface as the contract version\n *\n * @param params\n */\n async getSubaccountSummary(\n params: GetEngineSubaccountSummaryParams,\n ): Promise<GetEngineSubaccountSummaryResponse> {\n const subaccount = subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n });\n const baseResponse = await this.query('subaccount_info', {\n subaccount,\n });\n\n return mapSubaccountSummary(baseResponse);\n }\n\n /**\n * Retrieves a list of isolated positions\n *\n * @param params\n */\n async getIsolatedPositions(\n params: GetEngineIsolatedPositionsParams,\n ): Promise<GetEngineIsolatedPositionsResponse> {\n const subaccount = subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n });\n const baseResponse = await this.query('isolated_positions', {\n subaccount,\n });\n\n return mapEngineServerIsolatedPositions(baseResponse);\n }\n\n /**\n * Retrieves an estimated subaccount summary with the applied transactions\n *\n * @param params\n */\n async getEstimatedSubaccountSummary(\n params: GetEngineEstimatedSubaccountSummaryParams,\n ): Promise<GetEngineSubaccountSummaryResponse> {\n const subaccount = subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n });\n const queryParams: EngineServerSubaccountInfoQueryParams = {\n subaccount: subaccount,\n txns: params.txs.map(\n (\n tx,\n ): NonNullable<\n EngineServerSubaccountInfoQueryParams['txns']\n >[number] => {\n switch (tx.type) {\n case 'apply_delta':\n return {\n apply_delta: {\n product_id: tx.tx.productId,\n subaccount,\n amount_delta: toIntegerString(tx.tx.amountDelta),\n v_quote_delta: toIntegerString(tx.tx.vQuoteDelta),\n },\n };\n }\n },\n ),\n };\n const baseResponse = await this.query('subaccount_info', {\n subaccount: queryParams.subaccount,\n txns: JSON.stringify(queryParams.txns),\n // Backend expects string variants of booleans\n pre_state:\n params.preState !== undefined ? String(params.preState) : undefined,\n });\n\n return mapSubaccountSummary(baseResponse);\n }\n\n /**\n * Retrieves symbols and product info\n *\n * @param params\n */\n async getSymbols(\n params: GetEngineSymbolsParams,\n ): Promise<EngineSymbolsResponse> {\n const baseResponse = await this.query('symbols', {\n product_ids: params.productIds,\n product_type:\n params.productType != null\n ? mapProductEngineType(params.productType)\n : undefined,\n });\n return mapEngineServerSymbols(baseResponse);\n }\n\n /**\n * Retrieves all market states as per the offchain engine. Same return interface as contracts\n */\n async getAllMarkets(): Promise<GetEngineAllMarketsResponse> {\n const markets: MarketWithProduct[] = [];\n\n const baseResponse = await this.query('all_products', {});\n baseResponse.spot_products.forEach((spotProduct) => {\n markets.push(mapEngineServerSpotProduct(spotProduct));\n });\n baseResponse.perp_products.forEach((perpProduct) => {\n markets.push(mapEngineServerPerpProduct(perpProduct));\n });\n\n return markets;\n }\n\n /**\n * Retrieves all markets by chain id.\n */\n async getEdgeAllMarkets(): Promise<Record<number, MarketWithProduct[]>> {\n const baseResponse = await this.query('edge_all_products', {});\n\n return mapValues(baseResponse.edge_all_products, (allProducts) => {\n const markets: MarketWithProduct[] = [];\n\n allProducts.spot_products.forEach((spotProduct) => {\n markets.push(mapEngineServerSpotProduct(spotProduct));\n });\n\n allProducts.perp_products.forEach((perpProduct) => {\n markets.push(mapEngineServerPerpProduct(perpProduct));\n });\n\n return markets;\n });\n }\n\n /**\n * Retrieves all health groups (linked spot & perp products) from the engine\n */\n async getHealthGroups(): Promise<GetEngineHealthGroupsResponse> {\n const baseResponse = await this.query('health_groups', {});\n\n return {\n healthGroups: baseResponse.health_groups.map(\n ([spotProductId, perpProductId]) => {\n return {\n spotProductId,\n perpProductId,\n };\n },\n ),\n };\n }\n\n /**\n * Retrieves an order from the offchain engine\n *\n * @param params\n */\n async getOrder(\n params: GetEngineOrderParams,\n ): Promise<GetEngineOrderResponse> {\n const baseResponse = await this.query('order', {\n digest: params.digest,\n product_id: params.productId,\n });\n\n return mapEngineServerOrder(baseResponse);\n }\n\n /**\n * Signs and validates with the engine that the order is valid to be submitted (i.e. does not violate health reqs)\n *\n * @param params\n */\n async validateOrderParams(\n params: ValidateEngineOrderParams,\n ): Promise<ValidateEngineOrderResponse> {\n const signedOrder = {\n order: params.order,\n signature: await this.sign(\n 'place_order',\n getOrderVerifyingAddress(params.productId),\n params.chainId,\n params.order,\n ),\n };\n return this.validateSignedOrderParams({\n signedOrder,\n productId: params.productId,\n });\n }\n\n /**\n * Validates an existing signed order with the engine as a pre-check for health\n *\n * @param params\n */\n async validateSignedOrderParams(\n params: ValidateSignedEngineOrderParams,\n ): Promise<ValidateEngineOrderResponse> {\n const baseResponse = await this.query('validate_order', {\n product_id: params.productId,\n order: encodeSignedOrder(params.signedOrder),\n });\n\n return {\n productId: baseResponse.product_id,\n valid: baseResponse.valid,\n };\n }\n\n /**\n * Get all subaccount orders from the engine, per product ID\n * @param params\n */\n async getSubaccountOrders(\n params: GetEngineSubaccountOrdersParams,\n ): Promise<GetEngineSubaccountOrdersResponse> {\n const baseResponse = await this.query('subaccount_orders', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n product_id: params.productId,\n });\n\n return {\n orders: baseResponse.orders.map(mapEngineServerOrder),\n productId: params.productId,\n };\n }\n\n /**\n * Get all subaccount orders from the engine, for multiple products\n * @param params\n */\n async getSubaccountMultiProductOrders(\n params: GetEngineSubaccountProductOrdersParams,\n ): Promise<GetEngineSubaccountProductOrdersResponse> {\n const baseResponse = await this.query('orders', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n product_ids: params.productIds,\n });\n\n return {\n productOrders: baseResponse.product_orders.map((orders) => {\n return {\n orders: orders.orders.map(mapEngineServerOrder),\n productId: orders.product_id,\n };\n }),\n };\n }\n\n /**\n * Gets maker & taker fee rates for order fees\n * @param params\n */\n async getSubaccountFeeRates(\n params: GetEngineSubaccountFeeRatesParams,\n ): Promise<GetEngineSubaccountFeeRatesResponse> {\n const baseResponse = await this.query('fee_rates', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n });\n\n return {\n healthCheckSequencerFee: toBigNumber(\n baseResponse.health_check_sequencer_fee,\n ),\n liquidationSequencerFee: toBigNumber(\n baseResponse.liquidation_sequencer_fee,\n ),\n takerSequencerFee: toBigNumber(baseResponse.taker_sequencer_fee),\n orders: baseResponse.taker_fee_rates_x18.reduce(\n (acc, takerRateX18, currIndex) => {\n acc[currIndex] = {\n taker: removeDecimals(takerRateX18),\n maker: removeDecimals(baseResponse.maker_fee_rates_x18[currIndex]),\n };\n return acc;\n },\n {} as Record<number, SubaccountOrderFeeRates>,\n ),\n withdrawal: baseResponse.withdraw_sequencer_fees.reduce(\n (acc, productFee, currIndex) => {\n acc[currIndex] = toBigNumber(productFee);\n return acc;\n },\n {} as Record<number, BigNumber>,\n ),\n feeTier: baseResponse.fee_tier,\n };\n }\n\n /**\n * Gets \"price ticks\" for a given market, useful for constructing liquidity levels at each price\n * @param params\n */\n async getMarketLiquidity(\n params: GetEngineMarketLiquidityParams,\n ): Promise<GetEngineMarketLiquidityResponse> {\n const baseResponse = await this.query('market_liquidity', {\n product_id: params.productId,\n depth: params.depth,\n });\n return {\n asks: baseResponse.asks.map(mapEngineServerTickLiquidity),\n bids: baseResponse.bids.map(mapEngineServerTickLiquidity),\n };\n }\n\n /**\n * Retrieves the latest price for a given market\n * @param params\n */\n async getMarketPrice(\n params: GetEngineMarketPriceParams,\n ): Promise<GetEngineMarketPriceResponse> {\n const baseResponse = await this.query('market_price', {\n product_id: params.productId,\n });\n return mapEngineMarketPrice(baseResponse);\n }\n\n /**\n * Retrieves the latest prices for provided markets\n * @param params\n */\n async getMarketPrices(\n params: GetEngineMarketPricesParams,\n ): Promise<GetEngineMarketPricesResponse> {\n const baseResponse = await this.query('market_prices', {\n product_ids: params.productIds,\n });\n return {\n marketPrices: baseResponse.market_prices.map(mapEngineMarketPrice),\n };\n }\n\n /**\n * Retrieves the estimated max order size for a product\n * @param params\n */\n async getMaxOrderSize(\n params: GetEngineMaxOrderSizeParams,\n ): Promise<GetEngineMaxOrderSizeResponse> {\n const baseResponse = await this.query('max_order_size', {\n direction: params.side,\n price_x18: toIntegerString(addDecimals(params.price)),\n avg_price_x18:\n params.avgPrice != null\n ? toIntegerString(addDecimals(params.avgPrice))\n : null,\n product_id: params.productId,\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n // Backend expects string variants of booleans\n spot_leverage:\n params.spotLeverage != null ? String(params.spotLeverage) : null,\n reduce_only: params.reduceOnly != null ? String(params.reduceOnly) : null,\n isolated: params.isolated != null ? String(params.isolated) : null,\n borrow_margin:\n // This field is only relevant for isolated orders\n params.isolated && params.isoBorrowMargin != null\n ? String(params.isoBorrowMargin)\n : null,\n });\n\n return toBigNumber(baseResponse.max_order_size);\n }\n\n /**\n * Retrieves the estimated max withdrawal size for a product\n * @param params\n */\n async getMaxWithdrawable(\n params: GetEngineMaxWithdrawableParams,\n ): Promise<GetEngineMaxWithdrawableResponse> {\n const baseResponse = await this.query('max_withdrawable', {\n product_id: params.productId,\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n spot_leverage:\n params.spotLeverage != null ? String(params.spotLeverage) : null,\n });\n\n return toBigNumber(baseResponse.max_withdrawable);\n }\n\n /**\n * Retrieves the estimated max quote amount for minting NLP.\n *\n * @param params\n */\n async getMaxMintNlpAmount(\n params: GetEngineMaxMintNlpAmountParams,\n ): Promise<GetEngineMaxMintNlpAmountResponse> {\n const baseResponse = await this.query('max_nlp_mintable', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n spot_leverage:\n params.spotLeverage != null ? String(params.spotLeverage) : null,\n });\n\n return toBigNumber(baseResponse.max_quote_amount);\n }\n\n /**\n * Retrieves the max amount of NLP that can be burned.\n *\n * @param params\n */\n async getMaxBurnNlpAmount(\n params: GetEngineMaxBurnNlpAmountParams,\n ): Promise<GetEngineMaxBurnNlpAmountResponse> {\n const baseResponse = await this.query('max_nlp_burnable', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n });\n\n return toBigNumber(baseResponse.max_nlp_amount);\n }\n\n /**\n * Gets the currently linked signer for the subaccount\n * @param params\n * @returns\n */\n public async getLinkedSigner(\n params: GetEngineLinkedSignerParams,\n ): Promise<GetEngineLinkedSignerResponse> {\n const baseResponse = await this.query('linked_signer', {\n subaccount: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n });\n\n return {\n signer: baseResponse.linked_signer,\n };\n }\n\n /**\n * Gets the insurance funds in USDT.\n * @returns\n */\n public async getInsurance(): Promise<GetEngineInsuranceResponse> {\n const baseResponse = await this.query('insurance', {});\n\n return toBigNumber(baseResponse.insurance);\n }\n\n /**\n * Retrieves the NLP locked and unlocked balances for a subaccount.\n *\n * @param params\n */\n async getNlpLockedBalances(\n params: GetEngineNlpLockedBalancesParams,\n ): Promise<GetEngineNlpLockedBalancesResponse> {\n const baseResponse = await this.query('nlp_locked_balances', {\n subaccount: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n });\n\n return mapEngineServerNlpLockedBalances(baseResponse);\n }\n\n /**\n * Retrieves information about all NLP sub-pools\n */\n async getNlpPoolInfo(): Promise<GetEngineNlpPoolInfoResponse> {\n const baseResponse = await this.query('nlp_pool_info', {});\n return mapEngineServerNlpPoolInfo(baseResponse);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"EngineQueryClient.js","names":[],"sources":["../src/EngineQueryClient.ts"],"sourcesContent":["import {\n addDecimals,\n encodeSignedOrder,\n getOrderVerifyingAddress,\n mapValues,\n MarketWithProduct,\n removeDecimals,\n subaccountToHex,\n toBigNumber,\n toIntegerString,\n} from '@nadohq/shared';\nimport BigNumber from 'bignumber.js';\nimport { EngineBaseClient } from './EngineBaseClient';\nimport {\n EngineServerDynamicFeeQuoteQueryParams,\n EngineServerStatusResponse,\n EngineServerSubaccountInfoQueryParams,\n EngineSymbolsResponse,\n GetEngineAllMarketsResponse,\n GetEngineContractsResponse,\n GetEngineDynamicFeeQuoteParams,\n GetEngineDynamicFeeQuoteResponse,\n GetEngineEstimatedSubaccountSummaryParams,\n GetEngineHealthGroupsResponse,\n GetEngineInsuranceResponse,\n GetEngineIsolatedPositionsParams,\n GetEngineIsolatedPositionsResponse,\n GetEngineLinkedSignerParams,\n GetEngineLinkedSignerResponse,\n GetEngineMarketLiquidityParams,\n GetEngineMarketLiquidityResponse,\n GetEngineMarketPriceParams,\n GetEngineMarketPriceResponse,\n GetEngineMarketPricesParams,\n GetEngineMarketPricesResponse,\n GetEngineMaxBurnNlpAmountParams,\n GetEngineMaxBurnNlpAmountResponse,\n GetEngineMaxMintNlpAmountParams,\n GetEngineMaxMintNlpAmountResponse,\n GetEngineMaxOrderSizeParams,\n GetEngineMaxOrderSizeResponse,\n GetEngineMaxWithdrawableParams,\n GetEngineMaxWithdrawableResponse,\n GetEngineMaxWithdrawableWithDynamicFeeResponse,\n GetEngineNlpLockedBalancesParams,\n GetEngineNlpLockedBalancesResponse,\n GetEngineNlpPoolInfoResponse,\n GetEngineOrderParams,\n GetEngineOrderResponse,\n GetEngineSubaccountFeeRatesParams,\n GetEngineSubaccountFeeRatesResponse,\n GetEngineSubaccountOrdersParams,\n GetEngineSubaccountOrdersResponse,\n GetEngineSubaccountProductOrdersParams,\n GetEngineSubaccountProductOrdersResponse,\n GetEngineSubaccountSummaryParams,\n GetEngineSubaccountSummaryResponse,\n GetEngineSymbolsParams,\n SubaccountOrderFeeRates,\n ValidateEngineOrderParams,\n ValidateEngineOrderResponse,\n ValidateSignedEngineOrderParams,\n} from './types';\nimport { mapProductEngineType } from './utils/productEngineTypeMappers';\nimport {\n mapEngineMarketPrice,\n mapEngineServerIsolatedPositions,\n mapEngineServerNlpLockedBalances,\n mapEngineServerNlpPoolInfo,\n mapEngineServerOrder,\n mapEngineServerPerpProduct,\n mapEngineServerSpotProduct,\n mapEngineServerSymbols,\n mapEngineServerTickLiquidity,\n mapSubaccountSummary,\n} from './utils/queryDataMappers';\n\nexport class EngineQueryClient extends EngineBaseClient {\n /**\n * Retrieves the set of contracts that the engine is interfacing with\n */\n async getContracts(): Promise<GetEngineContractsResponse> {\n const baseResponse = await this.query('contracts', {});\n return {\n chainId: Number(baseResponse.chain_id),\n endpointAddr: baseResponse.endpoint_addr,\n };\n }\n\n /**\n * Retrieves current engine status\n */\n async getStatus(): Promise<EngineServerStatusResponse> {\n return this.query('status', {});\n }\n\n /**\n * Retrieves a subaccount summary reflective of the state within the offchain engine. This adheres to the\n * same return interface as the contract version\n *\n * @param params\n */\n async getSubaccountSummary(\n params: GetEngineSubaccountSummaryParams,\n ): Promise<GetEngineSubaccountSummaryResponse> {\n const subaccount = subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n });\n const baseResponse = await this.query('subaccount_info', {\n subaccount,\n });\n\n return mapSubaccountSummary(baseResponse);\n }\n\n /**\n * Retrieves a list of isolated positions\n *\n * @param params\n */\n async getIsolatedPositions(\n params: GetEngineIsolatedPositionsParams,\n ): Promise<GetEngineIsolatedPositionsResponse> {\n const subaccount = subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n });\n const baseResponse = await this.query('isolated_positions', {\n subaccount,\n });\n\n return mapEngineServerIsolatedPositions(baseResponse);\n }\n\n /**\n * Retrieves an estimated subaccount summary with the applied transactions\n *\n * @param params\n */\n async getEstimatedSubaccountSummary(\n params: GetEngineEstimatedSubaccountSummaryParams,\n ): Promise<GetEngineSubaccountSummaryResponse> {\n const subaccount = subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n });\n const queryParams: EngineServerSubaccountInfoQueryParams = {\n subaccount: subaccount,\n txns: params.txs.map(\n (\n tx,\n ): NonNullable<\n EngineServerSubaccountInfoQueryParams['txns']\n >[number] => {\n switch (tx.type) {\n case 'apply_delta':\n return {\n apply_delta: {\n product_id: tx.tx.productId,\n subaccount,\n amount_delta: toIntegerString(tx.tx.amountDelta),\n v_quote_delta: toIntegerString(tx.tx.vQuoteDelta),\n },\n };\n }\n },\n ),\n };\n const baseResponse = await this.query('subaccount_info', {\n subaccount: queryParams.subaccount,\n txns: JSON.stringify(queryParams.txns),\n // Backend expects string variants of booleans\n pre_state:\n params.preState !== undefined ? String(params.preState) : undefined,\n });\n\n return mapSubaccountSummary(baseResponse);\n }\n\n /**\n * Retrieves symbols and product info\n *\n * @param params\n */\n async getSymbols(\n params: GetEngineSymbolsParams,\n ): Promise<EngineSymbolsResponse> {\n const baseResponse = await this.query('symbols', {\n product_ids: params.productIds,\n product_type:\n params.productType != null\n ? mapProductEngineType(params.productType)\n : undefined,\n });\n return mapEngineServerSymbols(baseResponse);\n }\n\n /**\n * Retrieves all market states as per the offchain engine. Same return interface as contracts\n */\n async getAllMarkets(): Promise<GetEngineAllMarketsResponse> {\n const markets: MarketWithProduct[] = [];\n\n const baseResponse = await this.query('all_products', {});\n baseResponse.spot_products.forEach((spotProduct) => {\n markets.push(mapEngineServerSpotProduct(spotProduct));\n });\n baseResponse.perp_products.forEach((perpProduct) => {\n markets.push(mapEngineServerPerpProduct(perpProduct));\n });\n\n return markets;\n }\n\n /**\n * Retrieves all markets by chain id.\n */\n async getEdgeAllMarkets(): Promise<Record<number, MarketWithProduct[]>> {\n const baseResponse = await this.query('edge_all_products', {});\n\n return mapValues(baseResponse.edge_all_products, (allProducts) => {\n const markets: MarketWithProduct[] = [];\n\n allProducts.spot_products.forEach((spotProduct) => {\n markets.push(mapEngineServerSpotProduct(spotProduct));\n });\n\n allProducts.perp_products.forEach((perpProduct) => {\n markets.push(mapEngineServerPerpProduct(perpProduct));\n });\n\n return markets;\n });\n }\n\n /**\n * Retrieves all health groups (linked spot & perp products) from the engine\n */\n async getHealthGroups(): Promise<GetEngineHealthGroupsResponse> {\n const baseResponse = await this.query('health_groups', {});\n\n return {\n healthGroups: baseResponse.health_groups.map(\n ([spotProductId, perpProductId]) => {\n return {\n spotProductId,\n perpProductId,\n };\n },\n ),\n };\n }\n\n /**\n * Retrieves an order from the offchain engine\n *\n * @param params\n */\n async getOrder(\n params: GetEngineOrderParams,\n ): Promise<GetEngineOrderResponse> {\n const baseResponse = await this.query('order', {\n digest: params.digest,\n product_id: params.productId,\n });\n\n return mapEngineServerOrder(baseResponse);\n }\n\n /**\n * Signs and validates with the engine that the order is valid to be submitted (i.e. does not violate health reqs)\n *\n * @param params\n */\n async validateOrderParams(\n params: ValidateEngineOrderParams,\n ): Promise<ValidateEngineOrderResponse> {\n const signedOrder = {\n order: params.order,\n signature: await this.sign(\n 'place_order',\n getOrderVerifyingAddress(params.productId),\n params.chainId,\n params.order,\n ),\n };\n return this.validateSignedOrderParams({\n signedOrder,\n productId: params.productId,\n });\n }\n\n /**\n * Validates an existing signed order with the engine as a pre-check for health\n *\n * @param params\n */\n async validateSignedOrderParams(\n params: ValidateSignedEngineOrderParams,\n ): Promise<ValidateEngineOrderResponse> {\n const baseResponse = await this.query('validate_order', {\n product_id: params.productId,\n order: encodeSignedOrder(params.signedOrder),\n });\n\n return {\n productId: baseResponse.product_id,\n valid: baseResponse.valid,\n };\n }\n\n /**\n * Get all subaccount orders from the engine, per product ID\n * @param params\n */\n async getSubaccountOrders(\n params: GetEngineSubaccountOrdersParams,\n ): Promise<GetEngineSubaccountOrdersResponse> {\n const baseResponse = await this.query('subaccount_orders', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n product_id: params.productId,\n });\n\n return {\n orders: baseResponse.orders.map(mapEngineServerOrder),\n productId: params.productId,\n };\n }\n\n /**\n * Get all subaccount orders from the engine, for multiple products\n * @param params\n */\n async getSubaccountMultiProductOrders(\n params: GetEngineSubaccountProductOrdersParams,\n ): Promise<GetEngineSubaccountProductOrdersResponse> {\n const baseResponse = await this.query('orders', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n product_ids: params.productIds,\n });\n\n return {\n productOrders: baseResponse.product_orders.map((orders) => {\n return {\n orders: orders.orders.map(mapEngineServerOrder),\n productId: orders.product_id,\n };\n }),\n };\n }\n\n /**\n * Gets maker & taker fee rates for order fees\n * @param params\n */\n async getSubaccountFeeRates(\n params: GetEngineSubaccountFeeRatesParams,\n ): Promise<GetEngineSubaccountFeeRatesResponse> {\n const baseResponse = await this.query('fee_rates', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n });\n\n return {\n healthCheckSequencerFee: toBigNumber(\n baseResponse.health_check_sequencer_fee,\n ),\n liquidationSequencerFee: toBigNumber(\n baseResponse.liquidation_sequencer_fee,\n ),\n takerSequencerFee: toBigNumber(baseResponse.taker_sequencer_fee),\n orders: baseResponse.taker_fee_rates_x18.reduce(\n (acc, takerRateX18, currIndex) => {\n acc[currIndex] = {\n taker: removeDecimals(takerRateX18),\n maker: removeDecimals(baseResponse.maker_fee_rates_x18[currIndex]),\n };\n return acc;\n },\n {} as Record<number, SubaccountOrderFeeRates>,\n ),\n withdrawal: baseResponse.withdraw_sequencer_fees.reduce(\n (acc, productFee, currIndex) => {\n acc[currIndex] = toBigNumber(productFee);\n return acc;\n },\n {} as Record<number, BigNumber>,\n ),\n feeTier: baseResponse.fee_tier,\n };\n }\n\n /**\n * Gets \"price ticks\" for a given market, useful for constructing liquidity levels at each price\n * @param params\n */\n async getMarketLiquidity(\n params: GetEngineMarketLiquidityParams,\n ): Promise<GetEngineMarketLiquidityResponse> {\n const baseResponse = await this.query('market_liquidity', {\n product_id: params.productId,\n depth: params.depth,\n });\n return {\n asks: baseResponse.asks.map(mapEngineServerTickLiquidity),\n bids: baseResponse.bids.map(mapEngineServerTickLiquidity),\n };\n }\n\n /**\n * Retrieves the latest price for a given market\n * @param params\n */\n async getMarketPrice(\n params: GetEngineMarketPriceParams,\n ): Promise<GetEngineMarketPriceResponse> {\n const baseResponse = await this.query('market_price', {\n product_id: params.productId,\n });\n return mapEngineMarketPrice(baseResponse);\n }\n\n /**\n * Retrieves the latest prices for provided markets\n * @param params\n */\n async getMarketPrices(\n params: GetEngineMarketPricesParams,\n ): Promise<GetEngineMarketPricesResponse> {\n const baseResponse = await this.query('market_prices', {\n product_ids: params.productIds,\n });\n return {\n marketPrices: baseResponse.market_prices.map(mapEngineMarketPrice),\n };\n }\n\n /**\n * Retrieves the estimated max order size for a product\n * @param params\n */\n async getMaxOrderSize(\n params: GetEngineMaxOrderSizeParams,\n ): Promise<GetEngineMaxOrderSizeResponse> {\n const baseResponse = await this.query('max_order_size', {\n direction: params.side,\n price_x18: toIntegerString(addDecimals(params.price)),\n avg_price_x18:\n params.avgPrice != null\n ? toIntegerString(addDecimals(params.avgPrice))\n : null,\n product_id: params.productId,\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n // Backend expects string variants of booleans\n spot_leverage:\n params.spotLeverage != null ? String(params.spotLeverage) : null,\n reduce_only: params.reduceOnly != null ? String(params.reduceOnly) : null,\n isolated: params.isolated != null ? String(params.isolated) : null,\n borrow_margin:\n // This field is only relevant for isolated orders\n params.isolated && params.isoBorrowMargin != null\n ? String(params.isoBorrowMargin)\n : null,\n });\n\n return toBigNumber(baseResponse.max_order_size);\n }\n\n /**\n * Retrieves the estimated max withdrawal size for a product\n * @param params\n */\n async getMaxWithdrawable(\n params: GetEngineMaxWithdrawableParams,\n ): Promise<GetEngineMaxWithdrawableResponse>;\n /**\n * Retrieves the estimated max withdrawal size for a product, with the current dynamic fee of\n * Withdraw Collateral V2 reserved instead of the flat fee. The reserved fee is returned as\n * `fee`.\n * @param params\n * @returns The max withdrawable with the current dynamic fee reserved, and the reserved fee.\n */\n async getMaxWithdrawable(\n params: GetEngineMaxWithdrawableParams,\n options: { withDynamicFee: true },\n ): Promise<GetEngineMaxWithdrawableWithDynamicFeeResponse>;\n async getMaxWithdrawable(\n params: GetEngineMaxWithdrawableParams,\n options?: { withDynamicFee?: boolean },\n ): Promise<\n | GetEngineMaxWithdrawableResponse\n | GetEngineMaxWithdrawableWithDynamicFeeResponse\n > {\n const baseResponse = await this.query('max_withdrawable', {\n product_id: params.productId,\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n spot_leverage:\n params.spotLeverage != null ? String(params.spotLeverage) : null,\n dynamic_fee: options?.withDynamicFee ? 'true' : null,\n });\n\n if (options?.withDynamicFee) {\n return {\n maxWithdrawable: toBigNumber(baseResponse.max_withdrawable),\n fee:\n baseResponse.fee_x18 != null\n ? toBigNumber(baseResponse.fee_x18)\n : undefined,\n };\n }\n\n return toBigNumber(baseResponse.max_withdrawable);\n }\n\n /**\n * Retrieves the current dynamic fee for a V2 withdrawal or V2 quote transfer.\n * The fee is priced again at execution, so pass a `maxFeeX18` with some headroom when executing.\n * @param params\n * @returns The current required fee, the fee cap, and the V2 demand pressure.\n */\n async getDynamicFeeQuote(\n params: GetEngineDynamicFeeQuoteParams,\n ): Promise<GetEngineDynamicFeeQuoteResponse> {\n const sender = subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n });\n let queryParams: EngineServerDynamicFeeQuoteQueryParams;\n switch (params.kind) {\n case 'withdrawal':\n queryParams = {\n kind: params.kind,\n sender,\n product_id: params.productId,\n };\n break;\n case 'transfer_quote':\n queryParams = {\n kind: params.kind,\n sender,\n recipient: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.recipientSubaccountName,\n }),\n };\n break;\n }\n\n const baseResponse = await this.query('dynamic_fee_quote', queryParams);\n\n return {\n requiredFee: toBigNumber(baseResponse.required_fee_x18),\n feeCap: toBigNumber(baseResponse.fee_cap_x18),\n pressure: toBigNumber(baseResponse.pressure_x18),\n };\n }\n\n /**\n * Retrieves the estimated max quote amount for minting NLP.\n *\n * @param params\n */\n async getMaxMintNlpAmount(\n params: GetEngineMaxMintNlpAmountParams,\n ): Promise<GetEngineMaxMintNlpAmountResponse> {\n const baseResponse = await this.query('max_nlp_mintable', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n spot_leverage:\n params.spotLeverage != null ? String(params.spotLeverage) : null,\n });\n\n return toBigNumber(baseResponse.max_quote_amount);\n }\n\n /**\n * Retrieves the max amount of NLP that can be burned.\n *\n * @param params\n */\n async getMaxBurnNlpAmount(\n params: GetEngineMaxBurnNlpAmountParams,\n ): Promise<GetEngineMaxBurnNlpAmountResponse> {\n const baseResponse = await this.query('max_nlp_burnable', {\n sender: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n });\n\n return toBigNumber(baseResponse.max_nlp_amount);\n }\n\n /**\n * Gets the currently linked signer for the subaccount\n * @param params\n * @returns\n */\n public async getLinkedSigner(\n params: GetEngineLinkedSignerParams,\n ): Promise<GetEngineLinkedSignerResponse> {\n const baseResponse = await this.query('linked_signer', {\n subaccount: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n });\n\n return {\n signer: baseResponse.linked_signer,\n };\n }\n\n /**\n * Gets the insurance funds in USDT.\n * @returns\n */\n public async getInsurance(): Promise<GetEngineInsuranceResponse> {\n const baseResponse = await this.query('insurance', {});\n\n return toBigNumber(baseResponse.insurance);\n }\n\n /**\n * Retrieves the NLP locked and unlocked balances for a subaccount.\n *\n * @param params\n */\n async getNlpLockedBalances(\n params: GetEngineNlpLockedBalancesParams,\n ): Promise<GetEngineNlpLockedBalancesResponse> {\n const baseResponse = await this.query('nlp_locked_balances', {\n subaccount: subaccountToHex({\n subaccountOwner: params.subaccountOwner,\n subaccountName: params.subaccountName,\n }),\n });\n\n return mapEngineServerNlpLockedBalances(baseResponse);\n }\n\n /**\n * Retrieves information about all NLP sub-pools\n */\n async getNlpPoolInfo(): Promise<GetEngineNlpPoolInfoResponse> {\n const baseResponse = await this.query('nlp_pool_info', {});\n return mapEngineServerNlpPoolInfo(baseResponse);\n }\n}\n"],"mappings":"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"}