@nadohq/shared 0.1.0-alpha.45 → 0.1.0-alpha.47

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 (65) hide show
  1. package/dist/consts/chainEnvToChain.d.cts +32 -33
  2. package/dist/consts/chainEnvToChain.d.ts +32 -33
  3. package/dist/consts/index.d.cts +0 -1
  4. package/dist/consts/index.d.ts +0 -1
  5. package/dist/eip712/eip712ValueTypes.d.cts +1 -1
  6. package/dist/eip712/eip712ValueTypes.d.ts +1 -1
  7. package/dist/encoding/encoding.cjs +21 -0
  8. package/dist/encoding/encoding.cjs.map +1 -1
  9. package/dist/encoding/encoding.d.cts +27 -3
  10. package/dist/encoding/encoding.d.ts +27 -3
  11. package/dist/encoding/encoding.js +24 -1
  12. package/dist/encoding/encoding.js.map +1 -1
  13. package/dist/encoding/index.d.cts +2 -2
  14. package/dist/encoding/index.d.ts +2 -2
  15. package/dist/index.d.cts +3 -3
  16. package/dist/index.d.ts +3 -3
  17. package/dist/types/balanceTypes.d.cts +1 -1
  18. package/dist/types/balanceTypes.d.ts +1 -1
  19. package/dist/types/index.d.cts +1 -1
  20. package/dist/types/index.d.ts +1 -1
  21. package/dist/types/orderAppendixTypes.cjs.map +1 -1
  22. package/dist/types/orderAppendixTypes.d.cts +21 -1
  23. package/dist/types/orderAppendixTypes.d.ts +21 -1
  24. package/dist/types/viemTypes.d.cts +1 -1
  25. package/dist/types/viemTypes.d.ts +1 -1
  26. package/dist/utils/balanceValue.d.cts +1 -1
  27. package/dist/utils/balanceValue.d.ts +1 -1
  28. package/dist/utils/bytes32.d.cts +1 -1
  29. package/dist/utils/bytes32.d.ts +1 -1
  30. package/dist/utils/math/bigDecimal.cjs +4 -3
  31. package/dist/utils/math/bigDecimal.cjs.map +1 -1
  32. package/dist/utils/math/bigDecimal.js +4 -3
  33. package/dist/utils/math/bigDecimal.js.map +1 -1
  34. package/dist/utils/orders/appendix/orderAppendix.test.cjs +54 -0
  35. package/dist/utils/orders/appendix/orderAppendix.test.cjs.map +1 -1
  36. package/dist/utils/orders/appendix/orderAppendix.test.js +54 -0
  37. package/dist/utils/orders/appendix/orderAppendix.test.js.map +1 -1
  38. package/dist/utils/orders/appendix/packOrderAppendix.cjs +5 -1
  39. package/dist/utils/orders/appendix/packOrderAppendix.cjs.map +1 -1
  40. package/dist/utils/orders/appendix/packOrderAppendix.js +5 -1
  41. package/dist/utils/orders/appendix/packOrderAppendix.js.map +1 -1
  42. package/dist/utils/orders/appendix/types.cjs.map +1 -1
  43. package/dist/utils/orders/appendix/types.d.cts +6 -4
  44. package/dist/utils/orders/appendix/types.d.ts +6 -4
  45. package/dist/utils/orders/appendix/unpackOrderAppendix.cjs +19 -3
  46. package/dist/utils/orders/appendix/unpackOrderAppendix.cjs.map +1 -1
  47. package/dist/utils/orders/appendix/unpackOrderAppendix.js +19 -3
  48. package/dist/utils/orders/appendix/unpackOrderAppendix.js.map +1 -1
  49. package/dist/utils/productTypeFilter.d.cts +2 -2
  50. package/dist/utils/productTypeFilter.d.ts +2 -2
  51. package/dist/utils/toPrintableObject.cjs +2 -2
  52. package/dist/utils/toPrintableObject.cjs.map +1 -1
  53. package/dist/utils/toPrintableObject.d.cts +5 -1
  54. package/dist/utils/toPrintableObject.d.ts +5 -1
  55. package/dist/utils/toPrintableObject.js +2 -2
  56. package/dist/utils/toPrintableObject.js.map +1 -1
  57. package/package.json +6 -3
  58. package/src/encoding/encoding.ts +43 -1
  59. package/src/types/orderAppendixTypes.ts +21 -0
  60. package/src/utils/math/bigDecimal.ts +5 -3
  61. package/src/utils/orders/appendix/orderAppendix.test.ts +58 -0
  62. package/src/utils/orders/appendix/packOrderAppendix.ts +5 -1
  63. package/src/utils/orders/appendix/types.ts +7 -5
  64. package/src/utils/orders/appendix/unpackOrderAppendix.ts +18 -2
  65. package/src/utils/toPrintableObject.ts +11 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/utils/orders/appendix/orderAppendix.test.ts"],"sourcesContent":["import { describe, expect, it } from '@jest/globals';\nimport { OrderAppendix, OrderExecutionType } from '../../../types';\nimport { packOrderAppendix } from './packOrderAppendix';\nimport { unpackOrderAppendix } from './unpackOrderAppendix';\n\ndescribe('OrderAppendix packing/unpacking', () => {\n it('should pack and unpack an order appendix without iso/twap values', () => {\n const appendix: OrderAppendix = {\n orderExecutionType: 'default',\n triggerType: 'price',\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(packed).toBe(4097n);\n expect(unpacked.orderExecutionType).toBe(appendix.orderExecutionType);\n expect(unpacked.triggerType).toBe(appendix.triggerType);\n expect(unpacked.reduceOnly).toBeFalsy();\n });\n\n it('should handle reduceOnly true', () => {\n const appendix: OrderAppendix = {\n orderExecutionType: 'default',\n triggerType: 'price',\n reduceOnly: true,\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(packed).toBe(6145n);\n expect(unpacked.reduceOnly).toBe(true);\n });\n\n it('should handle all orderExecutionType values', () => {\n const types: OrderExecutionType[] = ['default', 'ioc', 'fok', 'post_only'];\n for (const type of types) {\n const appendix: OrderAppendix = {\n orderExecutionType: type,\n triggerType: 'price',\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(unpacked.orderExecutionType).toBe(type);\n }\n });\n\n it('should handle all triggerType values', () => {\n const triggers = ['price', 'twap', 'twap_custom_amounts'] as const;\n for (const trigger of triggers) {\n const appendix: OrderAppendix = {\n orderExecutionType: 'default',\n triggerType: trigger,\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(unpacked.triggerType).toBe(trigger);\n }\n });\n\n it('should handle isolated margin', () => {\n const appendix: OrderAppendix = {\n orderExecutionType: 'default',\n triggerType: 'price',\n\n isolated: { margin: 12345678901000000000000n },\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(packed).toBe(227737579102942800187821658369n);\n expect(unpacked.isolated?.margin).toBe(appendix.isolated?.margin);\n });\n\n it('should handle TWAP fields', () => {\n const appendix: OrderAppendix = {\n orderExecutionType: 'default',\n triggerType: 'twap',\n\n twap: { numOrders: 10, slippageFrac: 0.005 },\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(packed).toBe(792281717376363744483197591553n);\n expect(unpacked.twap).toMatchObject({ numOrders: 10, slippageFrac: 0.005 });\n });\n\n it('should handle max values for all fields for iso orders', () => {\n const appendix: OrderAppendix = {\n orderExecutionType: 'post_only',\n triggerType: undefined,\n reduceOnly: true,\n isolated: { margin: 18446744073709551615n }, // 2^64-1\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(unpacked.orderExecutionType).toBe(appendix.orderExecutionType);\n expect(unpacked.triggerType).toBe(appendix.triggerType);\n expect(unpacked.reduceOnly).toBe(appendix.reduceOnly);\n expect(unpacked.isolated?.margin).toBe(18446744000000000000n);\n expect(unpacked.twap).toBe(undefined);\n expect(packed).toBe(340282365561237229015142145n);\n });\n\n it('should handle max values for all fields for TWAP orders', () => {\n const appendix: OrderAppendix = {\n orderExecutionType: 'post_only',\n triggerType: 'twap_custom_amounts',\n reduceOnly: true,\n twap: {\n numOrders: 4294967295,\n slippageFrac: 0.000001,\n },\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(unpacked.orderExecutionType).toBe(appendix.orderExecutionType);\n expect(unpacked.triggerType).toBe(appendix.triggerType);\n expect(unpacked.reduceOnly).toBe(appendix.reduceOnly);\n expect(unpacked.twap?.slippageFrac).toBe(0.000001);\n expect(unpacked.twap?.numOrders).toBe(4294967295);\n expect(packed).toBe(340282366841710300967557013911933828609n);\n });\n});\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/utils/orders/appendix/orderAppendix.test.ts"],"sourcesContent":["import { describe, expect, it } from '@jest/globals';\nimport { OrderAppendix, OrderExecutionType } from '../../../types';\nimport { packOrderAppendix } from './packOrderAppendix';\nimport { unpackOrderAppendix } from './unpackOrderAppendix';\n\ndescribe('OrderAppendix packing/unpacking', () => {\n it('should pack and unpack an order appendix without iso/twap values', () => {\n const appendix: OrderAppendix = {\n orderExecutionType: 'default',\n triggerType: 'price',\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(packed).toBe(4097n);\n expect(unpacked.orderExecutionType).toBe(appendix.orderExecutionType);\n expect(unpacked.triggerType).toBe(appendix.triggerType);\n expect(unpacked.reduceOnly).toBeFalsy();\n });\n\n it('should handle reduceOnly true', () => {\n const appendix: OrderAppendix = {\n orderExecutionType: 'default',\n triggerType: 'price',\n reduceOnly: true,\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(packed).toBe(6145n);\n expect(unpacked.reduceOnly).toBe(true);\n });\n\n it('should handle all orderExecutionType values', () => {\n const types: OrderExecutionType[] = ['default', 'ioc', 'fok', 'post_only'];\n for (const type of types) {\n const appendix: OrderAppendix = {\n orderExecutionType: type,\n triggerType: 'price',\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(unpacked.orderExecutionType).toBe(type);\n }\n });\n\n it('should handle all triggerType values', () => {\n const triggers = ['price', 'twap', 'twap_custom_amounts'] as const;\n for (const trigger of triggers) {\n const appendix: OrderAppendix = {\n orderExecutionType: 'default',\n triggerType: trigger,\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(unpacked.triggerType).toBe(trigger);\n }\n });\n\n it('should handle isolated margin', () => {\n const appendix: OrderAppendix = {\n orderExecutionType: 'default',\n triggerType: 'price',\n\n isolated: { margin: 12345678901000000000000n },\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(packed).toBe(227737579102942800187821658369n);\n expect(unpacked.isolated?.margin).toBe(appendix.isolated?.margin);\n });\n\n it('should handle TWAP fields', () => {\n const appendix: OrderAppendix = {\n orderExecutionType: 'default',\n triggerType: 'twap',\n\n twap: { numOrders: 10, slippageFrac: 0.005 },\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(packed).toBe(792281717376363744483197591553n);\n expect(unpacked.twap).toMatchObject({ numOrders: 10, slippageFrac: 0.005 });\n });\n\n it('should handle max values for all fields for iso orders', () => {\n const appendix: OrderAppendix = {\n orderExecutionType: 'post_only',\n triggerType: undefined,\n reduceOnly: true,\n isolated: { margin: 18446744073709551615n }, // 2^64-1\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(unpacked.orderExecutionType).toBe(appendix.orderExecutionType);\n expect(unpacked.triggerType).toBe(appendix.triggerType);\n expect(unpacked.reduceOnly).toBe(appendix.reduceOnly);\n expect(unpacked.isolated?.margin).toBe(18446744000000000000n);\n expect(unpacked.twap).toBe(undefined);\n expect(packed).toBe(340282365561237229015142145n);\n });\n\n it('should handle max values for all fields for TWAP orders', () => {\n const appendix: OrderAppendix = {\n orderExecutionType: 'post_only',\n triggerType: 'twap_custom_amounts',\n reduceOnly: true,\n twap: {\n numOrders: 4294967295,\n slippageFrac: 0.000001,\n },\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(unpacked.orderExecutionType).toBe(appendix.orderExecutionType);\n expect(unpacked.triggerType).toBe(appendix.triggerType);\n expect(unpacked.reduceOnly).toBe(appendix.reduceOnly);\n expect(unpacked.twap?.slippageFrac).toBe(0.000001);\n expect(unpacked.twap?.numOrders).toBe(4294967295);\n expect(packed).toBe(340282366841710300967557013911933828609n);\n });\n\n it('should handle builder fields', () => {\n const appendix: OrderAppendix = {\n orderExecutionType: 'default',\n builder: { builderId: 123, builderFeeRate: 500 },\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(unpacked.builder?.builderId).toBe(123);\n expect(unpacked.builder?.builderFeeRate).toBe(500);\n });\n\n it('should handle builder with zero fee rate', () => {\n const appendix: OrderAppendix = {\n orderExecutionType: 'default',\n builder: { builderId: 42, builderFeeRate: 0 },\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(unpacked.builder?.builderId).toBe(42);\n expect(unpacked.builder?.builderFeeRate).toBe(0);\n });\n\n it('should handle builder with max values', () => {\n const appendix: OrderAppendix = {\n orderExecutionType: 'default',\n builder: { builderId: 65535, builderFeeRate: 1023 }, // 16 bits, 10 bits max\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(unpacked.builder?.builderId).toBe(65535);\n expect(unpacked.builder?.builderFeeRate).toBe(1023);\n });\n\n it('should handle builder combined with other flags', () => {\n const appendix: OrderAppendix = {\n orderExecutionType: 'ioc',\n reduceOnly: true,\n triggerType: 'price',\n builder: { builderId: 5, builderFeeRate: 100 },\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(unpacked.orderExecutionType).toBe('ioc');\n expect(unpacked.reduceOnly).toBe(true);\n expect(unpacked.triggerType).toBe('price');\n expect(unpacked.builder?.builderId).toBe(5);\n expect(unpacked.builder?.builderFeeRate).toBe(100);\n });\n\n it('should not return builder fields when builderId is 0', () => {\n const appendix: OrderAppendix = {\n orderExecutionType: 'default',\n };\n const packed = packOrderAppendix(appendix);\n const unpacked = unpackOrderAppendix(packed);\n expect(unpacked.builder).toBeUndefined();\n });\n});\n"],"mappings":";;;;;;;;AAAA,qBAAqC;AAErC,SAAS,yBAAyB;AAClC,SAAS,2BAA2B;AAAA,IAEpC,yBAAS,mCAAmC,MAAM;AAChD,yBAAG,oEAAoE,MAAM;AAC3E,UAAM,WAA0B;AAAA,MAC9B,oBAAoB;AAAA,MACpB,aAAa;AAAA,IACf;AACA,UAAM,SAAS,kBAAkB,QAAQ;AACzC,UAAM,WAAW,oBAAoB,MAAM;AAC3C,+BAAO,MAAM,EAAE,KAAK,KAAK;AACzB,+BAAO,SAAS,kBAAkB,EAAE,KAAK,SAAS,kBAAkB;AACpE,+BAAO,SAAS,WAAW,EAAE,KAAK,SAAS,WAAW;AACtD,+BAAO,SAAS,UAAU,EAAE,UAAU;AAAA,EACxC,CAAC;AAED,yBAAG,iCAAiC,MAAM;AACxC,UAAM,WAA0B;AAAA,MAC9B,oBAAoB;AAAA,MACpB,aAAa;AAAA,MACb,YAAY;AAAA,IACd;AACA,UAAM,SAAS,kBAAkB,QAAQ;AACzC,UAAM,WAAW,oBAAoB,MAAM;AAC3C,+BAAO,MAAM,EAAE,KAAK,KAAK;AACzB,+BAAO,SAAS,UAAU,EAAE,KAAK,IAAI;AAAA,EACvC,CAAC;AAED,yBAAG,+CAA+C,MAAM;AACtD,UAAM,QAA8B,CAAC,WAAW,OAAO,OAAO,WAAW;AACzE,eAAW,QAAQ,OAAO;AACxB,YAAM,WAA0B;AAAA,QAC9B,oBAAoB;AAAA,QACpB,aAAa;AAAA,MACf;AACA,YAAM,SAAS,kBAAkB,QAAQ;AACzC,YAAM,WAAW,oBAAoB,MAAM;AAC3C,iCAAO,SAAS,kBAAkB,EAAE,KAAK,IAAI;AAAA,IAC/C;AAAA,EACF,CAAC;AAED,yBAAG,wCAAwC,MAAM;AAC/C,UAAM,WAAW,CAAC,SAAS,QAAQ,qBAAqB;AACxD,eAAW,WAAW,UAAU;AAC9B,YAAM,WAA0B;AAAA,QAC9B,oBAAoB;AAAA,QACpB,aAAa;AAAA,MACf;AACA,YAAM,SAAS,kBAAkB,QAAQ;AACzC,YAAM,WAAW,oBAAoB,MAAM;AAC3C,iCAAO,SAAS,WAAW,EAAE,KAAK,OAAO;AAAA,IAC3C;AAAA,EACF,CAAC;AAED,yBAAG,iCAAiC,MAAM;AACxC,UAAM,WAA0B;AAAA,MAC9B,oBAAoB;AAAA,MACpB,aAAa;AAAA,MAEb,UAAU,EAAE,QAAQ,yBAAyB;AAAA,IAC/C;AACA,UAAM,SAAS,kBAAkB,QAAQ;AACzC,UAAM,WAAW,oBAAoB,MAAM;AAC3C,+BAAO,MAAM,EAAE,KAAK,+BAA+B;AACnD,+BAAO,SAAS,UAAU,MAAM,EAAE,KAAK,SAAS,UAAU,MAAM;AAAA,EAClE,CAAC;AAED,yBAAG,6BAA6B,MAAM;AACpC,UAAM,WAA0B;AAAA,MAC9B,oBAAoB;AAAA,MACpB,aAAa;AAAA,MAEb,MAAM,EAAE,WAAW,IAAI,cAAc,KAAM;AAAA,IAC7C;AACA,UAAM,SAAS,kBAAkB,QAAQ;AACzC,UAAM,WAAW,oBAAoB,MAAM;AAC3C,+BAAO,MAAM,EAAE,KAAK,+BAA+B;AACnD,+BAAO,SAAS,IAAI,EAAE,cAAc,EAAE,WAAW,IAAI,cAAc,KAAM,CAAC;AAAA,EAC5E,CAAC;AAED,yBAAG,0DAA0D,MAAM;AACjE,UAAM,WAA0B;AAAA,MAC9B,oBAAoB;AAAA,MACpB,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,UAAU,EAAE,QAAQ,sBAAsB;AAAA;AAAA,IAC5C;AACA,UAAM,SAAS,kBAAkB,QAAQ;AACzC,UAAM,WAAW,oBAAoB,MAAM;AAC3C,+BAAO,SAAS,kBAAkB,EAAE,KAAK,SAAS,kBAAkB;AACpE,+BAAO,SAAS,WAAW,EAAE,KAAK,SAAS,WAAW;AACtD,+BAAO,SAAS,UAAU,EAAE,KAAK,SAAS,UAAU;AACpD,+BAAO,SAAS,UAAU,MAAM,EAAE,KAAK,qBAAqB;AAC5D,+BAAO,SAAS,IAAI,EAAE,KAAK,MAAS;AACpC,+BAAO,MAAM,EAAE,KAAK,4BAA4B;AAAA,EAClD,CAAC;AAED,yBAAG,2DAA2D,MAAM;AAClE,UAAM,WAA0B;AAAA,MAC9B,oBAAoB;AAAA,MACpB,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,MAAM;AAAA,QACJ,WAAW;AAAA,QACX,cAAc;AAAA,MAChB;AAAA,IACF;AACA,UAAM,SAAS,kBAAkB,QAAQ;AACzC,UAAM,WAAW,oBAAoB,MAAM;AAC3C,+BAAO,SAAS,kBAAkB,EAAE,KAAK,SAAS,kBAAkB;AACpE,+BAAO,SAAS,WAAW,EAAE,KAAK,SAAS,WAAW;AACtD,+BAAO,SAAS,UAAU,EAAE,KAAK,SAAS,UAAU;AACpD,+BAAO,SAAS,MAAM,YAAY,EAAE,KAAK,IAAQ;AACjD,+BAAO,SAAS,MAAM,SAAS,EAAE,KAAK,UAAU;AAChD,+BAAO,MAAM,EAAE,KAAK,wCAAwC;AAAA,EAC9D,CAAC;AAED,yBAAG,gCAAgC,MAAM;AACvC,UAAM,WAA0B;AAAA,MAC9B,oBAAoB;AAAA,MACpB,SAAS,EAAE,WAAW,KAAK,gBAAgB,IAAI;AAAA,IACjD;AACA,UAAM,SAAS,kBAAkB,QAAQ;AACzC,UAAM,WAAW,oBAAoB,MAAM;AAC3C,+BAAO,SAAS,SAAS,SAAS,EAAE,KAAK,GAAG;AAC5C,+BAAO,SAAS,SAAS,cAAc,EAAE,KAAK,GAAG;AAAA,EACnD,CAAC;AAED,yBAAG,4CAA4C,MAAM;AACnD,UAAM,WAA0B;AAAA,MAC9B,oBAAoB;AAAA,MACpB,SAAS,EAAE,WAAW,IAAI,gBAAgB,EAAE;AAAA,IAC9C;AACA,UAAM,SAAS,kBAAkB,QAAQ;AACzC,UAAM,WAAW,oBAAoB,MAAM;AAC3C,+BAAO,SAAS,SAAS,SAAS,EAAE,KAAK,EAAE;AAC3C,+BAAO,SAAS,SAAS,cAAc,EAAE,KAAK,CAAC;AAAA,EACjD,CAAC;AAED,yBAAG,yCAAyC,MAAM;AAChD,UAAM,WAA0B;AAAA,MAC9B,oBAAoB;AAAA,MACpB,SAAS,EAAE,WAAW,OAAO,gBAAgB,KAAK;AAAA;AAAA,IACpD;AACA,UAAM,SAAS,kBAAkB,QAAQ;AACzC,UAAM,WAAW,oBAAoB,MAAM;AAC3C,+BAAO,SAAS,SAAS,SAAS,EAAE,KAAK,KAAK;AAC9C,+BAAO,SAAS,SAAS,cAAc,EAAE,KAAK,IAAI;AAAA,EACpD,CAAC;AAED,yBAAG,mDAAmD,MAAM;AAC1D,UAAM,WAA0B;AAAA,MAC9B,oBAAoB;AAAA,MACpB,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,SAAS,EAAE,WAAW,GAAG,gBAAgB,IAAI;AAAA,IAC/C;AACA,UAAM,SAAS,kBAAkB,QAAQ;AACzC,UAAM,WAAW,oBAAoB,MAAM;AAC3C,+BAAO,SAAS,kBAAkB,EAAE,KAAK,KAAK;AAC9C,+BAAO,SAAS,UAAU,EAAE,KAAK,IAAI;AACrC,+BAAO,SAAS,WAAW,EAAE,KAAK,OAAO;AACzC,+BAAO,SAAS,SAAS,SAAS,EAAE,KAAK,CAAC;AAC1C,+BAAO,SAAS,SAAS,cAAc,EAAE,KAAK,GAAG;AAAA,EACnD,CAAC;AAED,yBAAG,wDAAwD,MAAM;AAC/D,UAAM,WAA0B;AAAA,MAC9B,oBAAoB;AAAA,IACtB;AACA,UAAM,SAAS,kBAAkB,QAAQ;AACzC,UAAM,WAAW,oBAAoB,MAAM;AAC3C,+BAAO,SAAS,OAAO,EAAE,cAAc;AAAA,EACzC,CAAC;AACH,CAAC;","names":[]}
@@ -62,6 +62,8 @@ function mapOrderAppendixToBitValues(appendix) {
62
62
  })();
63
63
  return {
64
64
  value,
65
+ builderId: appendix.builder?.builderId ?? 0,
66
+ builderFeeRate: appendix.builder?.builderFeeRate ?? 0,
65
67
  reserved: 0,
66
68
  trigger,
67
69
  reduceOnly: appendix.reduceOnly ? 1 : 0,
@@ -73,7 +75,9 @@ function mapOrderAppendixToBitValues(appendix) {
73
75
  function packOrderAppendix(appendix) {
74
76
  const bits = mapOrderAppendixToBitValues(appendix);
75
77
  let packed = (0, import_bitMaskValue.bitMaskValue)(bits.value, 64);
76
- packed = packed << 50n | (0, import_bitMaskValue.bitMaskValue)(bits.reserved, 50);
78
+ packed = packed << 16n | (0, import_bitMaskValue.bitMaskValue)(bits.builderId, 16);
79
+ packed = packed << 10n | (0, import_bitMaskValue.bitMaskValue)(bits.builderFeeRate, 10);
80
+ packed = packed << 24n | (0, import_bitMaskValue.bitMaskValue)(bits.reserved, 24);
77
81
  packed = packed << 2n | (0, import_bitMaskValue.bitMaskValue)(bits.trigger, 2);
78
82
  packed = packed << 1n | (0, import_bitMaskValue.bitMaskValue)(bits.reduceOnly, 1);
79
83
  packed = packed << 2n | (0, import_bitMaskValue.bitMaskValue)(bits.orderType, 2);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/utils/orders/appendix/packOrderAppendix.ts"],"sourcesContent":["import { OrderAppendix } from '../../../types/orderAppendixTypes';\nimport { packIsolatedOrderAppendixValue } from './appendixIsolatedValue';\nimport { packTwapOrderAppendixValue } from './appendixTwapValue';\nimport { bitMaskValue } from './bitMaskValue';\nimport { PackedOrderAppendixBits } from './types';\n\nfunction mapOrderAppendixToBitValues(\n appendix: OrderAppendix,\n): PackedOrderAppendixBits {\n const value = (() => {\n if (appendix.twap) {\n return packTwapOrderAppendixValue(appendix.twap);\n }\n if (appendix.isolated) {\n return packIsolatedOrderAppendixValue(appendix.isolated);\n }\n return 0n;\n })();\n const trigger = (() => {\n switch (appendix.triggerType) {\n case 'price':\n return 1;\n case 'twap':\n return 2;\n case 'twap_custom_amounts':\n return 3;\n default:\n return 0;\n }\n })();\n const orderType = (() => {\n switch (appendix.orderExecutionType) {\n case 'default':\n return 0;\n case 'ioc':\n return 1;\n case 'fok':\n return 2;\n case 'post_only':\n return 3;\n }\n })();\n\n return {\n value,\n reserved: 0,\n trigger,\n reduceOnly: appendix.reduceOnly ? 1 : 0,\n orderType,\n isolated: appendix.isolated ? 1 : 0,\n version: 1,\n };\n}\n\n/**\n * Pack the OrderAppendix fields into a single bigint.\n * @param appendix\n */\nexport function packOrderAppendix(appendix: OrderAppendix): bigint {\n const bits = mapOrderAppendixToBitValues(appendix);\n\n // Ensure value is within 64 bits\n let packed = bitMaskValue(bits.value, 64);\n packed = (packed << 50n) | bitMaskValue(bits.reserved, 50);\n packed = (packed << 2n) | bitMaskValue(bits.trigger, 2);\n packed = (packed << 1n) | bitMaskValue(bits.reduceOnly, 1);\n packed = (packed << 2n) | bitMaskValue(bits.orderType, 2);\n packed = (packed << 1n) | bitMaskValue(bits.isolated, 1);\n packed = (packed << 8n) | bitMaskValue(bits.version, 8);\n return packed;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mCAA+C;AAC/C,+BAA2C;AAC3C,0BAA6B;AAG7B,SAAS,4BACP,UACyB;AACzB,QAAM,SAAS,MAAM;AACnB,QAAI,SAAS,MAAM;AACjB,iBAAO,qDAA2B,SAAS,IAAI;AAAA,IACjD;AACA,QAAI,SAAS,UAAU;AACrB,iBAAO,6DAA+B,SAAS,QAAQ;AAAA,IACzD;AACA,WAAO;AAAA,EACT,GAAG;AACH,QAAM,WAAW,MAAM;AACrB,YAAQ,SAAS,aAAa;AAAA,MAC5B,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF,GAAG;AACH,QAAM,aAAa,MAAM;AACvB,YAAQ,SAAS,oBAAoB;AAAA,MACnC,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,IACX;AAAA,EACF,GAAG;AAEH,SAAO;AAAA,IACL;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA,YAAY,SAAS,aAAa,IAAI;AAAA,IACtC;AAAA,IACA,UAAU,SAAS,WAAW,IAAI;AAAA,IAClC,SAAS;AAAA,EACX;AACF;AAMO,SAAS,kBAAkB,UAAiC;AACjE,QAAM,OAAO,4BAA4B,QAAQ;AAGjD,MAAI,aAAS,kCAAa,KAAK,OAAO,EAAE;AACxC,WAAU,UAAU,UAAO,kCAAa,KAAK,UAAU,EAAE;AACzD,WAAU,UAAU,SAAM,kCAAa,KAAK,SAAS,CAAC;AACtD,WAAU,UAAU,SAAM,kCAAa,KAAK,YAAY,CAAC;AACzD,WAAU,UAAU,SAAM,kCAAa,KAAK,WAAW,CAAC;AACxD,WAAU,UAAU,SAAM,kCAAa,KAAK,UAAU,CAAC;AACvD,WAAU,UAAU,SAAM,kCAAa,KAAK,SAAS,CAAC;AACtD,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../../../src/utils/orders/appendix/packOrderAppendix.ts"],"sourcesContent":["import { OrderAppendix } from '../../../types/orderAppendixTypes';\nimport { packIsolatedOrderAppendixValue } from './appendixIsolatedValue';\nimport { packTwapOrderAppendixValue } from './appendixTwapValue';\nimport { bitMaskValue } from './bitMaskValue';\nimport { PackedOrderAppendixBits } from './types';\n\nfunction mapOrderAppendixToBitValues(\n appendix: OrderAppendix,\n): PackedOrderAppendixBits {\n const value = (() => {\n if (appendix.twap) {\n return packTwapOrderAppendixValue(appendix.twap);\n }\n if (appendix.isolated) {\n return packIsolatedOrderAppendixValue(appendix.isolated);\n }\n return 0n;\n })();\n const trigger = (() => {\n switch (appendix.triggerType) {\n case 'price':\n return 1;\n case 'twap':\n return 2;\n case 'twap_custom_amounts':\n return 3;\n default:\n return 0;\n }\n })();\n const orderType = (() => {\n switch (appendix.orderExecutionType) {\n case 'default':\n return 0;\n case 'ioc':\n return 1;\n case 'fok':\n return 2;\n case 'post_only':\n return 3;\n }\n })();\n\n return {\n value,\n builderId: appendix.builder?.builderId ?? 0,\n builderFeeRate: appendix.builder?.builderFeeRate ?? 0,\n reserved: 0,\n trigger,\n reduceOnly: appendix.reduceOnly ? 1 : 0,\n orderType,\n isolated: appendix.isolated ? 1 : 0,\n version: 1,\n };\n}\n\n/**\n * Pack the OrderAppendix fields into a single bigint.\n * @param appendix\n */\nexport function packOrderAppendix(appendix: OrderAppendix): bigint {\n const bits = mapOrderAppendixToBitValues(appendix);\n\n // Ensure value is within 64 bits\n let packed = bitMaskValue(bits.value, 64);\n packed = (packed << 16n) | bitMaskValue(bits.builderId, 16);\n packed = (packed << 10n) | bitMaskValue(bits.builderFeeRate, 10);\n packed = (packed << 24n) | bitMaskValue(bits.reserved, 24);\n packed = (packed << 2n) | bitMaskValue(bits.trigger, 2);\n packed = (packed << 1n) | bitMaskValue(bits.reduceOnly, 1);\n packed = (packed << 2n) | bitMaskValue(bits.orderType, 2);\n packed = (packed << 1n) | bitMaskValue(bits.isolated, 1);\n packed = (packed << 8n) | bitMaskValue(bits.version, 8);\n return packed;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mCAA+C;AAC/C,+BAA2C;AAC3C,0BAA6B;AAG7B,SAAS,4BACP,UACyB;AACzB,QAAM,SAAS,MAAM;AACnB,QAAI,SAAS,MAAM;AACjB,iBAAO,qDAA2B,SAAS,IAAI;AAAA,IACjD;AACA,QAAI,SAAS,UAAU;AACrB,iBAAO,6DAA+B,SAAS,QAAQ;AAAA,IACzD;AACA,WAAO;AAAA,EACT,GAAG;AACH,QAAM,WAAW,MAAM;AACrB,YAAQ,SAAS,aAAa;AAAA,MAC5B,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF,GAAG;AACH,QAAM,aAAa,MAAM;AACvB,YAAQ,SAAS,oBAAoB;AAAA,MACnC,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,IACX;AAAA,EACF,GAAG;AAEH,SAAO;AAAA,IACL;AAAA,IACA,WAAW,SAAS,SAAS,aAAa;AAAA,IAC1C,gBAAgB,SAAS,SAAS,kBAAkB;AAAA,IACpD,UAAU;AAAA,IACV;AAAA,IACA,YAAY,SAAS,aAAa,IAAI;AAAA,IACtC;AAAA,IACA,UAAU,SAAS,WAAW,IAAI;AAAA,IAClC,SAAS;AAAA,EACX;AACF;AAMO,SAAS,kBAAkB,UAAiC;AACjE,QAAM,OAAO,4BAA4B,QAAQ;AAGjD,MAAI,aAAS,kCAAa,KAAK,OAAO,EAAE;AACxC,WAAU,UAAU,UAAO,kCAAa,KAAK,WAAW,EAAE;AAC1D,WAAU,UAAU,UAAO,kCAAa,KAAK,gBAAgB,EAAE;AAC/D,WAAU,UAAU,UAAO,kCAAa,KAAK,UAAU,EAAE;AACzD,WAAU,UAAU,SAAM,kCAAa,KAAK,SAAS,CAAC;AACtD,WAAU,UAAU,SAAM,kCAAa,KAAK,YAAY,CAAC;AACzD,WAAU,UAAU,SAAM,kCAAa,KAAK,WAAW,CAAC;AACxD,WAAU,UAAU,SAAM,kCAAa,KAAK,UAAU,CAAC;AACvD,WAAU,UAAU,SAAM,kCAAa,KAAK,SAAS,CAAC;AACtD,SAAO;AACT;","names":[]}
@@ -40,6 +40,8 @@ function mapOrderAppendixToBitValues(appendix) {
40
40
  })();
41
41
  return {
42
42
  value,
43
+ builderId: appendix.builder?.builderId ?? 0,
44
+ builderFeeRate: appendix.builder?.builderFeeRate ?? 0,
43
45
  reserved: 0,
44
46
  trigger,
45
47
  reduceOnly: appendix.reduceOnly ? 1 : 0,
@@ -51,7 +53,9 @@ function mapOrderAppendixToBitValues(appendix) {
51
53
  function packOrderAppendix(appendix) {
52
54
  const bits = mapOrderAppendixToBitValues(appendix);
53
55
  let packed = bitMaskValue(bits.value, 64);
54
- packed = packed << 50n | bitMaskValue(bits.reserved, 50);
56
+ packed = packed << 16n | bitMaskValue(bits.builderId, 16);
57
+ packed = packed << 10n | bitMaskValue(bits.builderFeeRate, 10);
58
+ packed = packed << 24n | bitMaskValue(bits.reserved, 24);
55
59
  packed = packed << 2n | bitMaskValue(bits.trigger, 2);
56
60
  packed = packed << 1n | bitMaskValue(bits.reduceOnly, 1);
57
61
  packed = packed << 2n | bitMaskValue(bits.orderType, 2);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/utils/orders/appendix/packOrderAppendix.ts"],"sourcesContent":["import { OrderAppendix } from '../../../types/orderAppendixTypes';\nimport { packIsolatedOrderAppendixValue } from './appendixIsolatedValue';\nimport { packTwapOrderAppendixValue } from './appendixTwapValue';\nimport { bitMaskValue } from './bitMaskValue';\nimport { PackedOrderAppendixBits } from './types';\n\nfunction mapOrderAppendixToBitValues(\n appendix: OrderAppendix,\n): PackedOrderAppendixBits {\n const value = (() => {\n if (appendix.twap) {\n return packTwapOrderAppendixValue(appendix.twap);\n }\n if (appendix.isolated) {\n return packIsolatedOrderAppendixValue(appendix.isolated);\n }\n return 0n;\n })();\n const trigger = (() => {\n switch (appendix.triggerType) {\n case 'price':\n return 1;\n case 'twap':\n return 2;\n case 'twap_custom_amounts':\n return 3;\n default:\n return 0;\n }\n })();\n const orderType = (() => {\n switch (appendix.orderExecutionType) {\n case 'default':\n return 0;\n case 'ioc':\n return 1;\n case 'fok':\n return 2;\n case 'post_only':\n return 3;\n }\n })();\n\n return {\n value,\n reserved: 0,\n trigger,\n reduceOnly: appendix.reduceOnly ? 1 : 0,\n orderType,\n isolated: appendix.isolated ? 1 : 0,\n version: 1,\n };\n}\n\n/**\n * Pack the OrderAppendix fields into a single bigint.\n * @param appendix\n */\nexport function packOrderAppendix(appendix: OrderAppendix): bigint {\n const bits = mapOrderAppendixToBitValues(appendix);\n\n // Ensure value is within 64 bits\n let packed = bitMaskValue(bits.value, 64);\n packed = (packed << 50n) | bitMaskValue(bits.reserved, 50);\n packed = (packed << 2n) | bitMaskValue(bits.trigger, 2);\n packed = (packed << 1n) | bitMaskValue(bits.reduceOnly, 1);\n packed = (packed << 2n) | bitMaskValue(bits.orderType, 2);\n packed = (packed << 1n) | bitMaskValue(bits.isolated, 1);\n packed = (packed << 8n) | bitMaskValue(bits.version, 8);\n return packed;\n}\n"],"mappings":";;;AACA,SAAS,sCAAsC;AAC/C,SAAS,kCAAkC;AAC3C,SAAS,oBAAoB;AAG7B,SAAS,4BACP,UACyB;AACzB,QAAM,SAAS,MAAM;AACnB,QAAI,SAAS,MAAM;AACjB,aAAO,2BAA2B,SAAS,IAAI;AAAA,IACjD;AACA,QAAI,SAAS,UAAU;AACrB,aAAO,+BAA+B,SAAS,QAAQ;AAAA,IACzD;AACA,WAAO;AAAA,EACT,GAAG;AACH,QAAM,WAAW,MAAM;AACrB,YAAQ,SAAS,aAAa;AAAA,MAC5B,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF,GAAG;AACH,QAAM,aAAa,MAAM;AACvB,YAAQ,SAAS,oBAAoB;AAAA,MACnC,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,IACX;AAAA,EACF,GAAG;AAEH,SAAO;AAAA,IACL;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA,YAAY,SAAS,aAAa,IAAI;AAAA,IACtC;AAAA,IACA,UAAU,SAAS,WAAW,IAAI;AAAA,IAClC,SAAS;AAAA,EACX;AACF;AAMO,SAAS,kBAAkB,UAAiC;AACjE,QAAM,OAAO,4BAA4B,QAAQ;AAGjD,MAAI,SAAS,aAAa,KAAK,OAAO,EAAE;AACxC,WAAU,UAAU,MAAO,aAAa,KAAK,UAAU,EAAE;AACzD,WAAU,UAAU,KAAM,aAAa,KAAK,SAAS,CAAC;AACtD,WAAU,UAAU,KAAM,aAAa,KAAK,YAAY,CAAC;AACzD,WAAU,UAAU,KAAM,aAAa,KAAK,WAAW,CAAC;AACxD,WAAU,UAAU,KAAM,aAAa,KAAK,UAAU,CAAC;AACvD,WAAU,UAAU,KAAM,aAAa,KAAK,SAAS,CAAC;AACtD,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../../../src/utils/orders/appendix/packOrderAppendix.ts"],"sourcesContent":["import { OrderAppendix } from '../../../types/orderAppendixTypes';\nimport { packIsolatedOrderAppendixValue } from './appendixIsolatedValue';\nimport { packTwapOrderAppendixValue } from './appendixTwapValue';\nimport { bitMaskValue } from './bitMaskValue';\nimport { PackedOrderAppendixBits } from './types';\n\nfunction mapOrderAppendixToBitValues(\n appendix: OrderAppendix,\n): PackedOrderAppendixBits {\n const value = (() => {\n if (appendix.twap) {\n return packTwapOrderAppendixValue(appendix.twap);\n }\n if (appendix.isolated) {\n return packIsolatedOrderAppendixValue(appendix.isolated);\n }\n return 0n;\n })();\n const trigger = (() => {\n switch (appendix.triggerType) {\n case 'price':\n return 1;\n case 'twap':\n return 2;\n case 'twap_custom_amounts':\n return 3;\n default:\n return 0;\n }\n })();\n const orderType = (() => {\n switch (appendix.orderExecutionType) {\n case 'default':\n return 0;\n case 'ioc':\n return 1;\n case 'fok':\n return 2;\n case 'post_only':\n return 3;\n }\n })();\n\n return {\n value,\n builderId: appendix.builder?.builderId ?? 0,\n builderFeeRate: appendix.builder?.builderFeeRate ?? 0,\n reserved: 0,\n trigger,\n reduceOnly: appendix.reduceOnly ? 1 : 0,\n orderType,\n isolated: appendix.isolated ? 1 : 0,\n version: 1,\n };\n}\n\n/**\n * Pack the OrderAppendix fields into a single bigint.\n * @param appendix\n */\nexport function packOrderAppendix(appendix: OrderAppendix): bigint {\n const bits = mapOrderAppendixToBitValues(appendix);\n\n // Ensure value is within 64 bits\n let packed = bitMaskValue(bits.value, 64);\n packed = (packed << 16n) | bitMaskValue(bits.builderId, 16);\n packed = (packed << 10n) | bitMaskValue(bits.builderFeeRate, 10);\n packed = (packed << 24n) | bitMaskValue(bits.reserved, 24);\n packed = (packed << 2n) | bitMaskValue(bits.trigger, 2);\n packed = (packed << 1n) | bitMaskValue(bits.reduceOnly, 1);\n packed = (packed << 2n) | bitMaskValue(bits.orderType, 2);\n packed = (packed << 1n) | bitMaskValue(bits.isolated, 1);\n packed = (packed << 8n) | bitMaskValue(bits.version, 8);\n return packed;\n}\n"],"mappings":";;;AACA,SAAS,sCAAsC;AAC/C,SAAS,kCAAkC;AAC3C,SAAS,oBAAoB;AAG7B,SAAS,4BACP,UACyB;AACzB,QAAM,SAAS,MAAM;AACnB,QAAI,SAAS,MAAM;AACjB,aAAO,2BAA2B,SAAS,IAAI;AAAA,IACjD;AACA,QAAI,SAAS,UAAU;AACrB,aAAO,+BAA+B,SAAS,QAAQ;AAAA,IACzD;AACA,WAAO;AAAA,EACT,GAAG;AACH,QAAM,WAAW,MAAM;AACrB,YAAQ,SAAS,aAAa;AAAA,MAC5B,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF,GAAG;AACH,QAAM,aAAa,MAAM;AACvB,YAAQ,SAAS,oBAAoB;AAAA,MACnC,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,IACX;AAAA,EACF,GAAG;AAEH,SAAO;AAAA,IACL;AAAA,IACA,WAAW,SAAS,SAAS,aAAa;AAAA,IAC1C,gBAAgB,SAAS,SAAS,kBAAkB;AAAA,IACpD,UAAU;AAAA,IACV;AAAA,IACA,YAAY,SAAS,aAAa,IAAI;AAAA,IACtC;AAAA,IACA,UAAU,SAAS,WAAW,IAAI;AAAA,IAClC,SAAS;AAAA,EACX;AACF;AAMO,SAAS,kBAAkB,UAAiC;AACjE,QAAM,OAAO,4BAA4B,QAAQ;AAGjD,MAAI,SAAS,aAAa,KAAK,OAAO,EAAE;AACxC,WAAU,UAAU,MAAO,aAAa,KAAK,WAAW,EAAE;AAC1D,WAAU,UAAU,MAAO,aAAa,KAAK,gBAAgB,EAAE;AAC/D,WAAU,UAAU,MAAO,aAAa,KAAK,UAAU,EAAE;AACzD,WAAU,UAAU,KAAM,aAAa,KAAK,SAAS,CAAC;AACtD,WAAU,UAAU,KAAM,aAAa,KAAK,YAAY,CAAC;AACzD,WAAU,UAAU,KAAM,aAAa,KAAK,WAAW,CAAC;AACxD,WAAU,UAAU,KAAM,aAAa,KAAK,UAAU,CAAC;AACvD,WAAU,UAAU,KAAM,aAAa,KAAK,SAAS,CAAC;AACtD,SAAO;AACT;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/utils/orders/appendix/types.ts"],"sourcesContent":["/**\n * Bit layout for OrderAppendix packing (MSB → LSB):\n *\n * | value | reserved | trigger | reduceOnly | orderType | isolated | version |\n * |-----------|----------|---------|------------|-----------|----------|---------|\n * | 127..64 | 63..14 | 13..12 | 11 | 10..9 | 8 | 7..0 |\n * | 64 bits | 50 bits | 2 bits | 1 bit | 2 bits | 1 bit | 8 bits |\n */\nexport interface PackedOrderAppendixBits {\n value: bigint; // 64 bits\n reserved: number; // 50 bits, set to 0\n trigger: number; // 2 bits\n reduceOnly: number; // 1 bit\n orderType: number; // 2 bits\n isolated: number; // 1 bit\n version: number; // 8 bits, set to 1\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../../../src/utils/orders/appendix/types.ts"],"sourcesContent":["/**\n * Bit layout for OrderAppendix packing (MSB → LSB):\n *\n * | value | builderId | builderFeeRate | reserved | trigger | reduceOnly | orderType | isolated | version |\n * |-----------|-----------|----------------|----------|---------|------------|-----------|----------|---------|\n * | 127..64 | 63..48 | 47..38 | 37..14 | 13..12 | 11 | 10..9 | 8 | 7..0 |\n * | 64 bits | 16 bits | 10 bits | 24 bits | 2 bits | 1 bit | 2 bits | 1 bit | 8 bits |\n */\nexport interface PackedOrderAppendixBits {\n value: bigint; // 64 bits\n builderId: number; // 16 bits\n builderFeeRate: number; // 10 bits\n reserved: number; // 24 bits, set to 0\n trigger: number; // 2 bits\n reduceOnly: number; // 1 bit\n orderType: number; // 2 bits\n isolated: number; // 1 bit\n version: number; // 8 bits, set to 1\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -1,13 +1,15 @@
1
1
  /**
2
2
  * Bit layout for OrderAppendix packing (MSB → LSB):
3
3
  *
4
- * | value | reserved | trigger | reduceOnly | orderType | isolated | version |
5
- * |-----------|----------|---------|------------|-----------|----------|---------|
6
- * | 127..64 | 63..14 | 13..12 | 11 | 10..9 | 8 | 7..0 |
7
- * | 64 bits | 50 bits | 2 bits | 1 bit | 2 bits | 1 bit | 8 bits |
4
+ * | value | builderId | builderFeeRate | reserved | trigger | reduceOnly | orderType | isolated | version |
5
+ * |-----------|-----------|----------------|----------|---------|------------|-----------|----------|---------|
6
+ * | 127..64 | 63..48 | 47..38 | 37..14 | 13..12 | 11 | 10..9 | 8 | 7..0 |
7
+ * | 64 bits | 16 bits | 10 bits | 24 bits | 2 bits | 1 bit | 2 bits | 1 bit | 8 bits |
8
8
  */
9
9
  interface PackedOrderAppendixBits {
10
10
  value: bigint;
11
+ builderId: number;
12
+ builderFeeRate: number;
11
13
  reserved: number;
12
14
  trigger: number;
13
15
  reduceOnly: number;
@@ -1,13 +1,15 @@
1
1
  /**
2
2
  * Bit layout for OrderAppendix packing (MSB → LSB):
3
3
  *
4
- * | value | reserved | trigger | reduceOnly | orderType | isolated | version |
5
- * |-----------|----------|---------|------------|-----------|----------|---------|
6
- * | 127..64 | 63..14 | 13..12 | 11 | 10..9 | 8 | 7..0 |
7
- * | 64 bits | 50 bits | 2 bits | 1 bit | 2 bits | 1 bit | 8 bits |
4
+ * | value | builderId | builderFeeRate | reserved | trigger | reduceOnly | orderType | isolated | version |
5
+ * |-----------|-----------|----------------|----------|---------|------------|-----------|----------|---------|
6
+ * | 127..64 | 63..48 | 47..38 | 37..14 | 13..12 | 11 | 10..9 | 8 | 7..0 |
7
+ * | 64 bits | 16 bits | 10 bits | 24 bits | 2 bits | 1 bit | 2 bits | 1 bit | 8 bits |
8
8
  */
9
9
  interface PackedOrderAppendixBits {
10
10
  value: bigint;
11
+ builderId: number;
12
+ builderFeeRate: number;
11
13
  reserved: number;
12
14
  trigger: number;
13
15
  reduceOnly: number;
@@ -67,12 +67,22 @@ function mapBitValuesToAppendix(bits) {
67
67
  return (0, import_appendixTwapValue.unpackTwapOrderAppendixValue)(bits.value);
68
68
  }
69
69
  })();
70
+ const builderFields = (() => {
71
+ if (bits.builderId) {
72
+ return {
73
+ builderId: bits.builderId,
74
+ builderFeeRate: bits.builderFeeRate
75
+ };
76
+ }
77
+ return void 0;
78
+ })();
70
79
  return {
71
80
  reduceOnly: !!bits.reduceOnly,
72
81
  orderExecutionType,
73
82
  triggerType,
74
83
  isolated: isolatedFields,
75
- twap: twapFields
84
+ twap: twapFields,
85
+ builder: builderFields
76
86
  };
77
87
  }
78
88
  function unpackOrderAppendix(packed) {
@@ -87,11 +97,17 @@ function unpackOrderAppendix(packed) {
87
97
  temp >>= 1n;
88
98
  const trigger = Number((0, import_bitMaskValue.bitMaskValue)(temp, 2));
89
99
  temp >>= 2n;
90
- const reserved = Number((0, import_bitMaskValue.bitMaskValue)(temp, 50));
91
- temp >>= 50n;
100
+ const reserved = Number((0, import_bitMaskValue.bitMaskValue)(temp, 24));
101
+ temp >>= 24n;
102
+ const builderFeeRate = Number((0, import_bitMaskValue.bitMaskValue)(temp, 10));
103
+ temp >>= 10n;
104
+ const builderId = Number((0, import_bitMaskValue.bitMaskValue)(temp, 16));
105
+ temp >>= 16n;
92
106
  const value = (0, import_bitMaskValue.bitMaskValue)(temp, 64);
93
107
  return mapBitValuesToAppendix({
94
108
  value,
109
+ builderId,
110
+ builderFeeRate,
95
111
  reserved,
96
112
  trigger,
97
113
  reduceOnly,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/utils/orders/appendix/unpackOrderAppendix.ts"],"sourcesContent":["import { OrderAppendix } from '../../../types/orderAppendixTypes';\nimport { BigDecimalish, toBigInt } from '../../math';\nimport { unpackIsolatedOrderAppendixValue } from './appendixIsolatedValue';\nimport { unpackTwapOrderAppendixValue } from './appendixTwapValue';\nimport { bitMaskValue } from './bitMaskValue';\nimport { PackedOrderAppendixBits } from './types';\n\nfunction mapBitValuesToAppendix(bits: PackedOrderAppendixBits): OrderAppendix {\n const triggerType = (() => {\n switch (bits.trigger) {\n case 1:\n return 'price';\n case 2:\n return 'twap';\n case 3:\n return 'twap_custom_amounts';\n default:\n return undefined;\n }\n })();\n const orderExecutionType = (() => {\n switch (bits.orderType) {\n case 0:\n return 'default';\n case 1:\n return 'ioc';\n case 2:\n return 'fok';\n case 3:\n return 'post_only';\n default:\n throw new Error(\n `[mapBitValuesToAppendix] Unknown order type: ${bits.orderType}`,\n );\n }\n })();\n const isolatedFields = (() => {\n if (bits.isolated) {\n return unpackIsolatedOrderAppendixValue(bits.value);\n }\n return undefined;\n })();\n const twapFields = (() => {\n if (triggerType === 'twap' || triggerType === 'twap_custom_amounts') {\n return unpackTwapOrderAppendixValue(bits.value);\n }\n })();\n\n return {\n reduceOnly: !!bits.reduceOnly,\n orderExecutionType,\n triggerType,\n isolated: isolatedFields,\n twap: twapFields,\n };\n}\n\n/**\n * Unpack the OrderAppendix fields from a packed bigint.\n * @param packed\n */\nexport function unpackOrderAppendix(packed: BigDecimalish): OrderAppendix {\n let temp = toBigInt(packed);\n // Bitmasks lowest 8 bits for version\n const version = Number(bitMaskValue(temp, 8));\n // Shift out the version bits\n temp >>= 8n;\n // Repeat for the rest of the fields\n const isolated = Number(bitMaskValue(temp, 1));\n temp >>= 1n;\n const orderType = Number(bitMaskValue(temp, 2));\n temp >>= 2n;\n const reduceOnly = Number(bitMaskValue(temp, 1));\n temp >>= 1n;\n const trigger = Number(bitMaskValue(temp, 2));\n temp >>= 2n;\n const reserved = Number(bitMaskValue(temp, 50));\n temp >>= 50n;\n // The remaining bits are the value, which should be 64 bits\n const value = bitMaskValue(temp, 64);\n\n return mapBitValuesToAppendix({\n value,\n reserved,\n trigger,\n reduceOnly,\n orderType,\n isolated,\n version,\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAAwC;AACxC,mCAAiD;AACjD,+BAA6C;AAC7C,0BAA6B;AAG7B,SAAS,uBAAuB,MAA8C;AAC5E,QAAM,eAAe,MAAM;AACzB,YAAQ,KAAK,SAAS;AAAA,MACpB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF,GAAG;AACH,QAAM,sBAAsB,MAAM;AAChC,YAAQ,KAAK,WAAW;AAAA,MACtB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,cAAM,IAAI;AAAA,UACR,gDAAgD,KAAK,SAAS;AAAA,QAChE;AAAA,IACJ;AAAA,EACF,GAAG;AACH,QAAM,kBAAkB,MAAM;AAC5B,QAAI,KAAK,UAAU;AACjB,iBAAO,+DAAiC,KAAK,KAAK;AAAA,IACpD;AACA,WAAO;AAAA,EACT,GAAG;AACH,QAAM,cAAc,MAAM;AACxB,QAAI,gBAAgB,UAAU,gBAAgB,uBAAuB;AACnE,iBAAO,uDAA6B,KAAK,KAAK;AAAA,IAChD;AAAA,EACF,GAAG;AAEH,SAAO;AAAA,IACL,YAAY,CAAC,CAAC,KAAK;AAAA,IACnB;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,MAAM;AAAA,EACR;AACF;AAMO,SAAS,oBAAoB,QAAsC;AACxE,MAAI,WAAO,sBAAS,MAAM;AAE1B,QAAM,UAAU,WAAO,kCAAa,MAAM,CAAC,CAAC;AAE5C,WAAS;AAET,QAAM,WAAW,WAAO,kCAAa,MAAM,CAAC,CAAC;AAC7C,WAAS;AACT,QAAM,YAAY,WAAO,kCAAa,MAAM,CAAC,CAAC;AAC9C,WAAS;AACT,QAAM,aAAa,WAAO,kCAAa,MAAM,CAAC,CAAC;AAC/C,WAAS;AACT,QAAM,UAAU,WAAO,kCAAa,MAAM,CAAC,CAAC;AAC5C,WAAS;AACT,QAAM,WAAW,WAAO,kCAAa,MAAM,EAAE,CAAC;AAC9C,WAAS;AAET,QAAM,YAAQ,kCAAa,MAAM,EAAE;AAEnC,SAAO,uBAAuB;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../src/utils/orders/appendix/unpackOrderAppendix.ts"],"sourcesContent":["import { OrderAppendix } from '../../../types/orderAppendixTypes';\nimport { BigDecimalish, toBigInt } from '../../math';\nimport { unpackIsolatedOrderAppendixValue } from './appendixIsolatedValue';\nimport { unpackTwapOrderAppendixValue } from './appendixTwapValue';\nimport { bitMaskValue } from './bitMaskValue';\nimport { PackedOrderAppendixBits } from './types';\n\nfunction mapBitValuesToAppendix(bits: PackedOrderAppendixBits): OrderAppendix {\n const triggerType = (() => {\n switch (bits.trigger) {\n case 1:\n return 'price';\n case 2:\n return 'twap';\n case 3:\n return 'twap_custom_amounts';\n default:\n return undefined;\n }\n })();\n const orderExecutionType = (() => {\n switch (bits.orderType) {\n case 0:\n return 'default';\n case 1:\n return 'ioc';\n case 2:\n return 'fok';\n case 3:\n return 'post_only';\n default:\n throw new Error(\n `[mapBitValuesToAppendix] Unknown order type: ${bits.orderType}`,\n );\n }\n })();\n const isolatedFields = (() => {\n if (bits.isolated) {\n return unpackIsolatedOrderAppendixValue(bits.value);\n }\n return undefined;\n })();\n const twapFields = (() => {\n if (triggerType === 'twap' || triggerType === 'twap_custom_amounts') {\n return unpackTwapOrderAppendixValue(bits.value);\n }\n })();\n const builderFields = (() => {\n if (bits.builderId) {\n return {\n builderId: bits.builderId,\n builderFeeRate: bits.builderFeeRate,\n };\n }\n return undefined;\n })();\n\n return {\n reduceOnly: !!bits.reduceOnly,\n orderExecutionType,\n triggerType,\n isolated: isolatedFields,\n twap: twapFields,\n builder: builderFields,\n };\n}\n\n/**\n * Unpack the OrderAppendix fields from a packed bigint.\n * @param packed\n */\nexport function unpackOrderAppendix(packed: BigDecimalish): OrderAppendix {\n let temp = toBigInt(packed);\n // Bitmasks lowest 8 bits for version\n const version = Number(bitMaskValue(temp, 8));\n // Shift out the version bits\n temp >>= 8n;\n // Repeat for the rest of the fields\n const isolated = Number(bitMaskValue(temp, 1));\n temp >>= 1n;\n const orderType = Number(bitMaskValue(temp, 2));\n temp >>= 2n;\n const reduceOnly = Number(bitMaskValue(temp, 1));\n temp >>= 1n;\n const trigger = Number(bitMaskValue(temp, 2));\n temp >>= 2n;\n const reserved = Number(bitMaskValue(temp, 24));\n temp >>= 24n;\n const builderFeeRate = Number(bitMaskValue(temp, 10));\n temp >>= 10n;\n const builderId = Number(bitMaskValue(temp, 16));\n temp >>= 16n;\n // The remaining bits are the value, which should be 64 bits\n const value = bitMaskValue(temp, 64);\n\n return mapBitValuesToAppendix({\n value,\n builderId,\n builderFeeRate,\n reserved,\n trigger,\n reduceOnly,\n orderType,\n isolated,\n version,\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAAwC;AACxC,mCAAiD;AACjD,+BAA6C;AAC7C,0BAA6B;AAG7B,SAAS,uBAAuB,MAA8C;AAC5E,QAAM,eAAe,MAAM;AACzB,YAAQ,KAAK,SAAS;AAAA,MACpB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF,GAAG;AACH,QAAM,sBAAsB,MAAM;AAChC,YAAQ,KAAK,WAAW;AAAA,MACtB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,cAAM,IAAI;AAAA,UACR,gDAAgD,KAAK,SAAS;AAAA,QAChE;AAAA,IACJ;AAAA,EACF,GAAG;AACH,QAAM,kBAAkB,MAAM;AAC5B,QAAI,KAAK,UAAU;AACjB,iBAAO,+DAAiC,KAAK,KAAK;AAAA,IACpD;AACA,WAAO;AAAA,EACT,GAAG;AACH,QAAM,cAAc,MAAM;AACxB,QAAI,gBAAgB,UAAU,gBAAgB,uBAAuB;AACnE,iBAAO,uDAA6B,KAAK,KAAK;AAAA,IAChD;AAAA,EACF,GAAG;AACH,QAAM,iBAAiB,MAAM;AAC3B,QAAI,KAAK,WAAW;AAClB,aAAO;AAAA,QACL,WAAW,KAAK;AAAA,QAChB,gBAAgB,KAAK;AAAA,MACvB;AAAA,IACF;AACA,WAAO;AAAA,EACT,GAAG;AAEH,SAAO;AAAA,IACL,YAAY,CAAC,CAAC,KAAK;AAAA,IACnB;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF;AAMO,SAAS,oBAAoB,QAAsC;AACxE,MAAI,WAAO,sBAAS,MAAM;AAE1B,QAAM,UAAU,WAAO,kCAAa,MAAM,CAAC,CAAC;AAE5C,WAAS;AAET,QAAM,WAAW,WAAO,kCAAa,MAAM,CAAC,CAAC;AAC7C,WAAS;AACT,QAAM,YAAY,WAAO,kCAAa,MAAM,CAAC,CAAC;AAC9C,WAAS;AACT,QAAM,aAAa,WAAO,kCAAa,MAAM,CAAC,CAAC;AAC/C,WAAS;AACT,QAAM,UAAU,WAAO,kCAAa,MAAM,CAAC,CAAC;AAC5C,WAAS;AACT,QAAM,WAAW,WAAO,kCAAa,MAAM,EAAE,CAAC;AAC9C,WAAS;AACT,QAAM,iBAAiB,WAAO,kCAAa,MAAM,EAAE,CAAC;AACpD,WAAS;AACT,QAAM,YAAY,WAAO,kCAAa,MAAM,EAAE,CAAC;AAC/C,WAAS;AAET,QAAM,YAAQ,kCAAa,MAAM,EAAE;AAEnC,SAAO,uBAAuB;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -45,12 +45,22 @@ function mapBitValuesToAppendix(bits) {
45
45
  return unpackTwapOrderAppendixValue(bits.value);
46
46
  }
47
47
  })();
48
+ const builderFields = (() => {
49
+ if (bits.builderId) {
50
+ return {
51
+ builderId: bits.builderId,
52
+ builderFeeRate: bits.builderFeeRate
53
+ };
54
+ }
55
+ return void 0;
56
+ })();
48
57
  return {
49
58
  reduceOnly: !!bits.reduceOnly,
50
59
  orderExecutionType,
51
60
  triggerType,
52
61
  isolated: isolatedFields,
53
- twap: twapFields
62
+ twap: twapFields,
63
+ builder: builderFields
54
64
  };
55
65
  }
56
66
  function unpackOrderAppendix(packed) {
@@ -65,11 +75,17 @@ function unpackOrderAppendix(packed) {
65
75
  temp >>= 1n;
66
76
  const trigger = Number(bitMaskValue(temp, 2));
67
77
  temp >>= 2n;
68
- const reserved = Number(bitMaskValue(temp, 50));
69
- temp >>= 50n;
78
+ const reserved = Number(bitMaskValue(temp, 24));
79
+ temp >>= 24n;
80
+ const builderFeeRate = Number(bitMaskValue(temp, 10));
81
+ temp >>= 10n;
82
+ const builderId = Number(bitMaskValue(temp, 16));
83
+ temp >>= 16n;
70
84
  const value = bitMaskValue(temp, 64);
71
85
  return mapBitValuesToAppendix({
72
86
  value,
87
+ builderId,
88
+ builderFeeRate,
73
89
  reserved,
74
90
  trigger,
75
91
  reduceOnly,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/utils/orders/appendix/unpackOrderAppendix.ts"],"sourcesContent":["import { OrderAppendix } from '../../../types/orderAppendixTypes';\nimport { BigDecimalish, toBigInt } from '../../math';\nimport { unpackIsolatedOrderAppendixValue } from './appendixIsolatedValue';\nimport { unpackTwapOrderAppendixValue } from './appendixTwapValue';\nimport { bitMaskValue } from './bitMaskValue';\nimport { PackedOrderAppendixBits } from './types';\n\nfunction mapBitValuesToAppendix(bits: PackedOrderAppendixBits): OrderAppendix {\n const triggerType = (() => {\n switch (bits.trigger) {\n case 1:\n return 'price';\n case 2:\n return 'twap';\n case 3:\n return 'twap_custom_amounts';\n default:\n return undefined;\n }\n })();\n const orderExecutionType = (() => {\n switch (bits.orderType) {\n case 0:\n return 'default';\n case 1:\n return 'ioc';\n case 2:\n return 'fok';\n case 3:\n return 'post_only';\n default:\n throw new Error(\n `[mapBitValuesToAppendix] Unknown order type: ${bits.orderType}`,\n );\n }\n })();\n const isolatedFields = (() => {\n if (bits.isolated) {\n return unpackIsolatedOrderAppendixValue(bits.value);\n }\n return undefined;\n })();\n const twapFields = (() => {\n if (triggerType === 'twap' || triggerType === 'twap_custom_amounts') {\n return unpackTwapOrderAppendixValue(bits.value);\n }\n })();\n\n return {\n reduceOnly: !!bits.reduceOnly,\n orderExecutionType,\n triggerType,\n isolated: isolatedFields,\n twap: twapFields,\n };\n}\n\n/**\n * Unpack the OrderAppendix fields from a packed bigint.\n * @param packed\n */\nexport function unpackOrderAppendix(packed: BigDecimalish): OrderAppendix {\n let temp = toBigInt(packed);\n // Bitmasks lowest 8 bits for version\n const version = Number(bitMaskValue(temp, 8));\n // Shift out the version bits\n temp >>= 8n;\n // Repeat for the rest of the fields\n const isolated = Number(bitMaskValue(temp, 1));\n temp >>= 1n;\n const orderType = Number(bitMaskValue(temp, 2));\n temp >>= 2n;\n const reduceOnly = Number(bitMaskValue(temp, 1));\n temp >>= 1n;\n const trigger = Number(bitMaskValue(temp, 2));\n temp >>= 2n;\n const reserved = Number(bitMaskValue(temp, 50));\n temp >>= 50n;\n // The remaining bits are the value, which should be 64 bits\n const value = bitMaskValue(temp, 64);\n\n return mapBitValuesToAppendix({\n value,\n reserved,\n trigger,\n reduceOnly,\n orderType,\n isolated,\n version,\n });\n}\n"],"mappings":";;;AACA,SAAwB,gBAAgB;AACxC,SAAS,wCAAwC;AACjD,SAAS,oCAAoC;AAC7C,SAAS,oBAAoB;AAG7B,SAAS,uBAAuB,MAA8C;AAC5E,QAAM,eAAe,MAAM;AACzB,YAAQ,KAAK,SAAS;AAAA,MACpB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF,GAAG;AACH,QAAM,sBAAsB,MAAM;AAChC,YAAQ,KAAK,WAAW;AAAA,MACtB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,cAAM,IAAI;AAAA,UACR,gDAAgD,KAAK,SAAS;AAAA,QAChE;AAAA,IACJ;AAAA,EACF,GAAG;AACH,QAAM,kBAAkB,MAAM;AAC5B,QAAI,KAAK,UAAU;AACjB,aAAO,iCAAiC,KAAK,KAAK;AAAA,IACpD;AACA,WAAO;AAAA,EACT,GAAG;AACH,QAAM,cAAc,MAAM;AACxB,QAAI,gBAAgB,UAAU,gBAAgB,uBAAuB;AACnE,aAAO,6BAA6B,KAAK,KAAK;AAAA,IAChD;AAAA,EACF,GAAG;AAEH,SAAO;AAAA,IACL,YAAY,CAAC,CAAC,KAAK;AAAA,IACnB;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,MAAM;AAAA,EACR;AACF;AAMO,SAAS,oBAAoB,QAAsC;AACxE,MAAI,OAAO,SAAS,MAAM;AAE1B,QAAM,UAAU,OAAO,aAAa,MAAM,CAAC,CAAC;AAE5C,WAAS;AAET,QAAM,WAAW,OAAO,aAAa,MAAM,CAAC,CAAC;AAC7C,WAAS;AACT,QAAM,YAAY,OAAO,aAAa,MAAM,CAAC,CAAC;AAC9C,WAAS;AACT,QAAM,aAAa,OAAO,aAAa,MAAM,CAAC,CAAC;AAC/C,WAAS;AACT,QAAM,UAAU,OAAO,aAAa,MAAM,CAAC,CAAC;AAC5C,WAAS;AACT,QAAM,WAAW,OAAO,aAAa,MAAM,EAAE,CAAC;AAC9C,WAAS;AAET,QAAM,QAAQ,aAAa,MAAM,EAAE;AAEnC,SAAO,uBAAuB;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../src/utils/orders/appendix/unpackOrderAppendix.ts"],"sourcesContent":["import { OrderAppendix } from '../../../types/orderAppendixTypes';\nimport { BigDecimalish, toBigInt } from '../../math';\nimport { unpackIsolatedOrderAppendixValue } from './appendixIsolatedValue';\nimport { unpackTwapOrderAppendixValue } from './appendixTwapValue';\nimport { bitMaskValue } from './bitMaskValue';\nimport { PackedOrderAppendixBits } from './types';\n\nfunction mapBitValuesToAppendix(bits: PackedOrderAppendixBits): OrderAppendix {\n const triggerType = (() => {\n switch (bits.trigger) {\n case 1:\n return 'price';\n case 2:\n return 'twap';\n case 3:\n return 'twap_custom_amounts';\n default:\n return undefined;\n }\n })();\n const orderExecutionType = (() => {\n switch (bits.orderType) {\n case 0:\n return 'default';\n case 1:\n return 'ioc';\n case 2:\n return 'fok';\n case 3:\n return 'post_only';\n default:\n throw new Error(\n `[mapBitValuesToAppendix] Unknown order type: ${bits.orderType}`,\n );\n }\n })();\n const isolatedFields = (() => {\n if (bits.isolated) {\n return unpackIsolatedOrderAppendixValue(bits.value);\n }\n return undefined;\n })();\n const twapFields = (() => {\n if (triggerType === 'twap' || triggerType === 'twap_custom_amounts') {\n return unpackTwapOrderAppendixValue(bits.value);\n }\n })();\n const builderFields = (() => {\n if (bits.builderId) {\n return {\n builderId: bits.builderId,\n builderFeeRate: bits.builderFeeRate,\n };\n }\n return undefined;\n })();\n\n return {\n reduceOnly: !!bits.reduceOnly,\n orderExecutionType,\n triggerType,\n isolated: isolatedFields,\n twap: twapFields,\n builder: builderFields,\n };\n}\n\n/**\n * Unpack the OrderAppendix fields from a packed bigint.\n * @param packed\n */\nexport function unpackOrderAppendix(packed: BigDecimalish): OrderAppendix {\n let temp = toBigInt(packed);\n // Bitmasks lowest 8 bits for version\n const version = Number(bitMaskValue(temp, 8));\n // Shift out the version bits\n temp >>= 8n;\n // Repeat for the rest of the fields\n const isolated = Number(bitMaskValue(temp, 1));\n temp >>= 1n;\n const orderType = Number(bitMaskValue(temp, 2));\n temp >>= 2n;\n const reduceOnly = Number(bitMaskValue(temp, 1));\n temp >>= 1n;\n const trigger = Number(bitMaskValue(temp, 2));\n temp >>= 2n;\n const reserved = Number(bitMaskValue(temp, 24));\n temp >>= 24n;\n const builderFeeRate = Number(bitMaskValue(temp, 10));\n temp >>= 10n;\n const builderId = Number(bitMaskValue(temp, 16));\n temp >>= 16n;\n // The remaining bits are the value, which should be 64 bits\n const value = bitMaskValue(temp, 64);\n\n return mapBitValuesToAppendix({\n value,\n builderId,\n builderFeeRate,\n reserved,\n trigger,\n reduceOnly,\n orderType,\n isolated,\n version,\n });\n}\n"],"mappings":";;;AACA,SAAwB,gBAAgB;AACxC,SAAS,wCAAwC;AACjD,SAAS,oCAAoC;AAC7C,SAAS,oBAAoB;AAG7B,SAAS,uBAAuB,MAA8C;AAC5E,QAAM,eAAe,MAAM;AACzB,YAAQ,KAAK,SAAS;AAAA,MACpB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF,GAAG;AACH,QAAM,sBAAsB,MAAM;AAChC,YAAQ,KAAK,WAAW;AAAA,MACtB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,cAAM,IAAI;AAAA,UACR,gDAAgD,KAAK,SAAS;AAAA,QAChE;AAAA,IACJ;AAAA,EACF,GAAG;AACH,QAAM,kBAAkB,MAAM;AAC5B,QAAI,KAAK,UAAU;AACjB,aAAO,iCAAiC,KAAK,KAAK;AAAA,IACpD;AACA,WAAO;AAAA,EACT,GAAG;AACH,QAAM,cAAc,MAAM;AACxB,QAAI,gBAAgB,UAAU,gBAAgB,uBAAuB;AACnE,aAAO,6BAA6B,KAAK,KAAK;AAAA,IAChD;AAAA,EACF,GAAG;AACH,QAAM,iBAAiB,MAAM;AAC3B,QAAI,KAAK,WAAW;AAClB,aAAO;AAAA,QACL,WAAW,KAAK;AAAA,QAChB,gBAAgB,KAAK;AAAA,MACvB;AAAA,IACF;AACA,WAAO;AAAA,EACT,GAAG;AAEH,SAAO;AAAA,IACL,YAAY,CAAC,CAAC,KAAK;AAAA,IACnB;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF;AAMO,SAAS,oBAAoB,QAAsC;AACxE,MAAI,OAAO,SAAS,MAAM;AAE1B,QAAM,UAAU,OAAO,aAAa,MAAM,CAAC,CAAC;AAE5C,WAAS;AAET,QAAM,WAAW,OAAO,aAAa,MAAM,CAAC,CAAC;AAC7C,WAAS;AACT,QAAM,YAAY,OAAO,aAAa,MAAM,CAAC,CAAC;AAC9C,WAAS;AACT,QAAM,aAAa,OAAO,aAAa,MAAM,CAAC,CAAC;AAC/C,WAAS;AACT,QAAM,UAAU,OAAO,aAAa,MAAM,CAAC,CAAC;AAC5C,WAAS;AACT,QAAM,WAAW,OAAO,aAAa,MAAM,EAAE,CAAC;AAC9C,WAAS;AACT,QAAM,iBAAiB,OAAO,aAAa,MAAM,EAAE,CAAC;AACpD,WAAS;AACT,QAAM,YAAY,OAAO,aAAa,MAAM,EAAE,CAAC;AAC/C,WAAS;AAET,QAAM,QAAQ,aAAa,MAAM,EAAE;AAEnC,SAAO,uBAAuB;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -1,5 +1,5 @@
1
- import { Balance, SpotBalance, PerpBalance } from '../types/balanceTypes.cjs';
2
- import { Product, SpotProduct, PerpProduct } from '../types/productTypes.cjs';
1
+ import { Balance, PerpBalance, SpotBalance } from '../types/balanceTypes.cjs';
2
+ import { Product, PerpProduct, SpotProduct } from '../types/productTypes.cjs';
3
3
  import 'bignumber.js';
4
4
  import '../types/healthTypes.cjs';
5
5
 
@@ -1,5 +1,5 @@
1
- import { Balance, SpotBalance, PerpBalance } from '../types/balanceTypes.js';
2
- import { Product, SpotProduct, PerpProduct } from '../types/productTypes.js';
1
+ import { Balance, PerpBalance, SpotBalance } from '../types/balanceTypes.js';
2
+ import { Product, PerpProduct, SpotProduct } from '../types/productTypes.js';
3
3
  import 'bignumber.js';
4
4
  import '../types/healthTypes.js';
5
5
 
@@ -25,7 +25,7 @@ __export(toPrintableObject_exports, {
25
25
  module.exports = __toCommonJS(toPrintableObject_exports);
26
26
  var import_bigDecimal = require("./math/bigDecimal.cjs");
27
27
  function toPrintableObject(obj, seen = /* @__PURE__ */ new WeakSet()) {
28
- if (obj == null) {
28
+ if (obj === null || obj === void 0) {
29
29
  return null;
30
30
  }
31
31
  if (obj instanceof import_bigDecimal.BigDecimal || typeof obj === "bigint") {
@@ -47,7 +47,7 @@ function toPrintableObject(obj, seen = /* @__PURE__ */ new WeakSet()) {
47
47
  ])
48
48
  );
49
49
  } catch {
50
- return "[Unserializable Object]";
50
+ return { error: "[Unserializable Object]" };
51
51
  }
52
52
  }
53
53
  return obj;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/toPrintableObject.ts"],"sourcesContent":["import { BigDecimal } from './math/bigDecimal';\n\n/**\n * Util for converting any BigDecimal types into a string so that it can be logged nicely.\n * Handles cyclic references by returning '[Circular]' for already-visited objects.\n */\nexport function toPrintableObject(obj: unknown, seen = new WeakSet()): unknown {\n if (obj == null) {\n return null;\n }\n if (obj instanceof BigDecimal || typeof obj === 'bigint') {\n return obj.toString();\n }\n if (Array.isArray(obj)) {\n return obj.map((item) => toPrintableObject(item, seen));\n }\n if (typeof obj === 'object') {\n // Detect cyclic references\n if (seen.has(obj)) {\n return '[Circular]';\n }\n seen.add(obj);\n\n try {\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => [\n key,\n toPrintableObject(value, seen),\n ]),\n );\n } catch {\n return '[Unserializable Object]';\n }\n }\n return obj;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAA2B;AAMpB,SAAS,kBAAkB,KAAc,OAAO,oBAAI,QAAQ,GAAY;AAC7E,MAAI,OAAO,MAAM;AACf,WAAO;AAAA,EACT;AACA,MAAI,eAAe,gCAAc,OAAO,QAAQ,UAAU;AACxD,WAAO,IAAI,SAAS;AAAA,EACtB;AACA,MAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,WAAO,IAAI,IAAI,CAAC,SAAS,kBAAkB,MAAM,IAAI,CAAC;AAAA,EACxD;AACA,MAAI,OAAO,QAAQ,UAAU;AAE3B,QAAI,KAAK,IAAI,GAAG,GAAG;AACjB,aAAO;AAAA,IACT;AACA,SAAK,IAAI,GAAG;AAEZ,QAAI;AACF,aAAO,OAAO;AAAA,QACZ,OAAO,QAAQ,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AAAA,UACxC;AAAA,UACA,kBAAkB,OAAO,IAAI;AAAA,QAC/B,CAAC;AAAA,MACH;AAAA,IACF,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../src/utils/toPrintableObject.ts"],"sourcesContent":["import { BigDecimal } from './math/bigDecimal';\n\n/**\n * Util for converting any BigDecimal types into a string so that it can be logged nicely.\n * Handles cyclic references by returning '[Circular]' for already-visited objects.\n */\nexport function toPrintableObject(\n obj: null | undefined,\n seen?: WeakSet<object>,\n): null;\nexport function toPrintableObject(\n obj: BigDecimal | bigint,\n seen?: WeakSet<object>,\n): string;\nexport function toPrintableObject(obj: unknown, seen?: WeakSet<object>): object;\nexport function toPrintableObject(obj: unknown, seen = new WeakSet()): unknown {\n if (obj === null || obj === undefined) {\n return null;\n }\n if (obj instanceof BigDecimal || typeof obj === 'bigint') {\n return obj.toString();\n }\n if (Array.isArray(obj)) {\n return obj.map((item) => toPrintableObject(item, seen));\n }\n if (typeof obj === 'object') {\n // Detect cyclic references\n if (seen.has(obj)) {\n return '[Circular]';\n }\n seen.add(obj);\n\n try {\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => [\n key,\n toPrintableObject(value, seen),\n ]),\n );\n } catch {\n return { error: '[Unserializable Object]' };\n }\n }\n return obj;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAA2B;AAepB,SAAS,kBAAkB,KAAc,OAAO,oBAAI,QAAQ,GAAY;AAC7E,MAAI,QAAQ,QAAQ,QAAQ,QAAW;AACrC,WAAO;AAAA,EACT;AACA,MAAI,eAAe,gCAAc,OAAO,QAAQ,UAAU;AACxD,WAAO,IAAI,SAAS;AAAA,EACtB;AACA,MAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,WAAO,IAAI,IAAI,CAAC,SAAS,kBAAkB,MAAM,IAAI,CAAC;AAAA,EACxD;AACA,MAAI,OAAO,QAAQ,UAAU;AAE3B,QAAI,KAAK,IAAI,GAAG,GAAG;AACjB,aAAO;AAAA,IACT;AACA,SAAK,IAAI,GAAG;AAEZ,QAAI;AACF,aAAO,OAAO;AAAA,QACZ,OAAO,QAAQ,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AAAA,UACxC;AAAA,UACA,kBAAkB,OAAO,IAAI;AAAA,QAC/B,CAAC;AAAA,MACH;AAAA,IACF,QAAQ;AACN,aAAO,EAAE,OAAO,0BAA0B;AAAA,IAC5C;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
@@ -1,7 +1,11 @@
1
+ import BigDecimal from 'bignumber.js';
2
+
1
3
  /**
2
4
  * Util for converting any BigDecimal types into a string so that it can be logged nicely.
3
5
  * Handles cyclic references by returning '[Circular]' for already-visited objects.
4
6
  */
5
- declare function toPrintableObject(obj: unknown, seen?: WeakSet<WeakKey>): unknown;
7
+ declare function toPrintableObject(obj: null | undefined, seen?: WeakSet<object>): null;
8
+ declare function toPrintableObject(obj: BigDecimal | bigint, seen?: WeakSet<object>): string;
9
+ declare function toPrintableObject(obj: unknown, seen?: WeakSet<object>): object;
6
10
 
7
11
  export { toPrintableObject };
@@ -1,7 +1,11 @@
1
+ import BigDecimal from 'bignumber.js';
2
+
1
3
  /**
2
4
  * Util for converting any BigDecimal types into a string so that it can be logged nicely.
3
5
  * Handles cyclic references by returning '[Circular]' for already-visited objects.
4
6
  */
5
- declare function toPrintableObject(obj: unknown, seen?: WeakSet<WeakKey>): unknown;
7
+ declare function toPrintableObject(obj: null | undefined, seen?: WeakSet<object>): null;
8
+ declare function toPrintableObject(obj: BigDecimal | bigint, seen?: WeakSet<object>): string;
9
+ declare function toPrintableObject(obj: unknown, seen?: WeakSet<object>): object;
6
10
 
7
11
  export { toPrintableObject };
@@ -3,7 +3,7 @@ import "../chunk-5WRI5ZAA.js";
3
3
  // src/utils/toPrintableObject.ts
4
4
  import { BigDecimal } from "./math/bigDecimal.js";
5
5
  function toPrintableObject(obj, seen = /* @__PURE__ */ new WeakSet()) {
6
- if (obj == null) {
6
+ if (obj === null || obj === void 0) {
7
7
  return null;
8
8
  }
9
9
  if (obj instanceof BigDecimal || typeof obj === "bigint") {
@@ -25,7 +25,7 @@ function toPrintableObject(obj, seen = /* @__PURE__ */ new WeakSet()) {
25
25
  ])
26
26
  );
27
27
  } catch {
28
- return "[Unserializable Object]";
28
+ return { error: "[Unserializable Object]" };
29
29
  }
30
30
  }
31
31
  return obj;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/toPrintableObject.ts"],"sourcesContent":["import { BigDecimal } from './math/bigDecimal';\n\n/**\n * Util for converting any BigDecimal types into a string so that it can be logged nicely.\n * Handles cyclic references by returning '[Circular]' for already-visited objects.\n */\nexport function toPrintableObject(obj: unknown, seen = new WeakSet()): unknown {\n if (obj == null) {\n return null;\n }\n if (obj instanceof BigDecimal || typeof obj === 'bigint') {\n return obj.toString();\n }\n if (Array.isArray(obj)) {\n return obj.map((item) => toPrintableObject(item, seen));\n }\n if (typeof obj === 'object') {\n // Detect cyclic references\n if (seen.has(obj)) {\n return '[Circular]';\n }\n seen.add(obj);\n\n try {\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => [\n key,\n toPrintableObject(value, seen),\n ]),\n );\n } catch {\n return '[Unserializable Object]';\n }\n }\n return obj;\n}\n"],"mappings":";;;AAAA,SAAS,kBAAkB;AAMpB,SAAS,kBAAkB,KAAc,OAAO,oBAAI,QAAQ,GAAY;AAC7E,MAAI,OAAO,MAAM;AACf,WAAO;AAAA,EACT;AACA,MAAI,eAAe,cAAc,OAAO,QAAQ,UAAU;AACxD,WAAO,IAAI,SAAS;AAAA,EACtB;AACA,MAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,WAAO,IAAI,IAAI,CAAC,SAAS,kBAAkB,MAAM,IAAI,CAAC;AAAA,EACxD;AACA,MAAI,OAAO,QAAQ,UAAU;AAE3B,QAAI,KAAK,IAAI,GAAG,GAAG;AACjB,aAAO;AAAA,IACT;AACA,SAAK,IAAI,GAAG;AAEZ,QAAI;AACF,aAAO,OAAO;AAAA,QACZ,OAAO,QAAQ,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AAAA,UACxC;AAAA,UACA,kBAAkB,OAAO,IAAI;AAAA,QAC/B,CAAC;AAAA,MACH;AAAA,IACF,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../src/utils/toPrintableObject.ts"],"sourcesContent":["import { BigDecimal } from './math/bigDecimal';\n\n/**\n * Util for converting any BigDecimal types into a string so that it can be logged nicely.\n * Handles cyclic references by returning '[Circular]' for already-visited objects.\n */\nexport function toPrintableObject(\n obj: null | undefined,\n seen?: WeakSet<object>,\n): null;\nexport function toPrintableObject(\n obj: BigDecimal | bigint,\n seen?: WeakSet<object>,\n): string;\nexport function toPrintableObject(obj: unknown, seen?: WeakSet<object>): object;\nexport function toPrintableObject(obj: unknown, seen = new WeakSet()): unknown {\n if (obj === null || obj === undefined) {\n return null;\n }\n if (obj instanceof BigDecimal || typeof obj === 'bigint') {\n return obj.toString();\n }\n if (Array.isArray(obj)) {\n return obj.map((item) => toPrintableObject(item, seen));\n }\n if (typeof obj === 'object') {\n // Detect cyclic references\n if (seen.has(obj)) {\n return '[Circular]';\n }\n seen.add(obj);\n\n try {\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => [\n key,\n toPrintableObject(value, seen),\n ]),\n );\n } catch {\n return { error: '[Unserializable Object]' };\n }\n }\n return obj;\n}\n"],"mappings":";;;AAAA,SAAS,kBAAkB;AAepB,SAAS,kBAAkB,KAAc,OAAO,oBAAI,QAAQ,GAAY;AAC7E,MAAI,QAAQ,QAAQ,QAAQ,QAAW;AACrC,WAAO;AAAA,EACT;AACA,MAAI,eAAe,cAAc,OAAO,QAAQ,UAAU;AACxD,WAAO,IAAI,SAAS;AAAA,EACtB;AACA,MAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,WAAO,IAAI,IAAI,CAAC,SAAS,kBAAkB,MAAM,IAAI,CAAC;AAAA,EACxD;AACA,MAAI,OAAO,QAAQ,UAAU;AAE3B,QAAI,KAAK,IAAI,GAAG,GAAG;AACjB,aAAO;AAAA,IACT;AACA,SAAK,IAAI,GAAG;AAEZ,QAAI;AACF,aAAO,OAAO;AAAA,QACZ,OAAO,QAAQ,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AAAA,UACxC;AAAA,UACA,kBAAkB,OAAO,IAAI;AAAA,QAC/B,CAAC;AAAA,MACH;AAAA,IACF,QAAQ;AACN,aAAO,EAAE,OAAO,0BAA0B;AAAA,IAC5C;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nadohq/shared",
3
- "version": "0.1.0-alpha.45",
3
+ "version": "0.1.0-alpha.47",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "description": "Shared utilities, types, and contract helpers for Nado SDK",
@@ -44,10 +44,13 @@
44
44
  "bignumber.js": "^9.3.0",
45
45
  "viem": "*"
46
46
  },
47
+ "dependencies": {
48
+ "abitype": "^1.2.3"
49
+ },
47
50
  "devDependencies": {
48
51
  "@jest/globals": "*",
49
52
  "bignumber.js": "^9.3.0",
50
- "viem": "*"
53
+ "viem": "workspace:*"
51
54
  },
52
- "gitHead": "e260625b2c31928d19845dab67996b81658a54c1"
55
+ "gitHead": "93c4298d459c79383eccad8893b90e0a730e7671"
53
56
  }
@@ -1,4 +1,9 @@
1
- import { encodeAbiParameters, parseAbiParameters } from 'viem';
1
+ import {
2
+ encodeAbiParameters,
3
+ encodePacked,
4
+ parseAbiParameters,
5
+ type Hex,
6
+ } from 'viem';
2
7
  import {
3
8
  EIP712WithdrawCollateralParams,
4
9
  SignedEIP712OrderParams,
@@ -6,6 +11,16 @@ import {
6
11
  } from '../eip712';
7
12
  import { addDecimals, toBigInt } from '../utils';
8
13
 
14
+ /**
15
+ * Transaction type identifiers for slow mode transactions.
16
+ */
17
+ export enum SlowModeTxType {
18
+ DepositCollateral = 1,
19
+ WithdrawCollateral = 2,
20
+ LinkSigner = 13,
21
+ ClaimBuilderFee = 31,
22
+ }
23
+
9
24
  export function encodeSignedWithdrawCollateralTx(
10
25
  signed: SignedTx<EIP712WithdrawCollateralParams>,
11
26
  ) {
@@ -48,3 +63,30 @@ export function encodeSignedOrder(signed: SignedEIP712OrderParams) {
48
63
  ],
49
64
  );
50
65
  }
66
+
67
+ export interface ClaimBuilderFeeParams {
68
+ /** The sender subaccount as bytes32 */
69
+ sender: Hex;
70
+ /** The builder ID to claim fees for */
71
+ builderId: number;
72
+ }
73
+
74
+ /**
75
+ * Encodes a ClaimBuilderFee slow mode transaction.
76
+ *
77
+ * Format: [tx_type_byte] + [abi_encoded_params]
78
+ *
79
+ * @param params - The claim builder fee parameters
80
+ * @returns The encoded transaction bytes ready to submit via endpoint.submitSlowModeTransaction
81
+ */
82
+ export function encodeClaimBuilderFeeTx(params: ClaimBuilderFeeParams): Hex {
83
+ const txBytes = encodeAbiParameters(
84
+ parseAbiParameters('bytes32 sender, uint32 builderId'),
85
+ [params.sender, params.builderId],
86
+ );
87
+
88
+ return encodePacked(
89
+ ['uint8', 'bytes'],
90
+ [SlowModeTxType.ClaimBuilderFee, txBytes],
91
+ );
92
+ }
@@ -39,6 +39,21 @@ export interface OrderAppendixIsolatedFields {
39
39
  margin: BigDecimalish;
40
40
  }
41
41
 
42
+ /**
43
+ * Fields for specifying a builder (fee recipient) for the order
44
+ */
45
+ export interface OrderAppendixBuilderFields {
46
+ /**
47
+ * The builder ID (registered builder identifier)
48
+ */
49
+ builderId: number;
50
+ /**
51
+ * The builder fee rate. This is a raw 10-bit integer (0-1023) where each unit = 0.1 bps.
52
+ * The actual fee is calculated on notional value: builder_fee = price * amount * rate
53
+ */
54
+ builderFeeRate: number;
55
+ }
56
+
42
57
  /**
43
58
  * All the fields encoded by the order appendix
44
59
  */
@@ -59,4 +74,10 @@ export interface OrderAppendix {
59
74
  * An order CANNOT be both a TWAP order and an isolated order.
60
75
  */
61
76
  twap?: OrderAppendixTwapFields;
77
+ /**
78
+ * Specify the builder for fee sharing.
79
+ * Builder ID is encoded in bits 48-63 (16 bits).
80
+ * Builder fee rate is encoded in bits 38-47 (10 bits).
81
+ */
82
+ builder?: OrderAppendixBuilderFields;
62
83
  }
@@ -17,10 +17,12 @@ export type BigDecimalish = BigDecimal | BigDecimal.Value | bigint;
17
17
  * @param val
18
18
  */
19
19
  export function toBigDecimal(val: BigDecimalish): BigDecimal {
20
+ if (BigDecimal.isBigNumber(val)) {
21
+ return val;
22
+ }
23
+
20
24
  const bnConstructorVal = (() => {
21
- if (val instanceof BigDecimal) {
22
- return val;
23
- } else if (typeof val === 'string' || typeof val === 'number') {
25
+ if (typeof val === 'string' || typeof val === 'number') {
24
26
  return val;
25
27
  } else if (typeof val === 'bigint') {
26
28
  return val.toString();
@@ -117,4 +117,62 @@ describe('OrderAppendix packing/unpacking', () => {
117
117
  expect(unpacked.twap?.numOrders).toBe(4294967295);
118
118
  expect(packed).toBe(340282366841710300967557013911933828609n);
119
119
  });
120
+
121
+ it('should handle builder fields', () => {
122
+ const appendix: OrderAppendix = {
123
+ orderExecutionType: 'default',
124
+ builder: { builderId: 123, builderFeeRate: 500 },
125
+ };
126
+ const packed = packOrderAppendix(appendix);
127
+ const unpacked = unpackOrderAppendix(packed);
128
+ expect(unpacked.builder?.builderId).toBe(123);
129
+ expect(unpacked.builder?.builderFeeRate).toBe(500);
130
+ });
131
+
132
+ it('should handle builder with zero fee rate', () => {
133
+ const appendix: OrderAppendix = {
134
+ orderExecutionType: 'default',
135
+ builder: { builderId: 42, builderFeeRate: 0 },
136
+ };
137
+ const packed = packOrderAppendix(appendix);
138
+ const unpacked = unpackOrderAppendix(packed);
139
+ expect(unpacked.builder?.builderId).toBe(42);
140
+ expect(unpacked.builder?.builderFeeRate).toBe(0);
141
+ });
142
+
143
+ it('should handle builder with max values', () => {
144
+ const appendix: OrderAppendix = {
145
+ orderExecutionType: 'default',
146
+ builder: { builderId: 65535, builderFeeRate: 1023 }, // 16 bits, 10 bits max
147
+ };
148
+ const packed = packOrderAppendix(appendix);
149
+ const unpacked = unpackOrderAppendix(packed);
150
+ expect(unpacked.builder?.builderId).toBe(65535);
151
+ expect(unpacked.builder?.builderFeeRate).toBe(1023);
152
+ });
153
+
154
+ it('should handle builder combined with other flags', () => {
155
+ const appendix: OrderAppendix = {
156
+ orderExecutionType: 'ioc',
157
+ reduceOnly: true,
158
+ triggerType: 'price',
159
+ builder: { builderId: 5, builderFeeRate: 100 },
160
+ };
161
+ const packed = packOrderAppendix(appendix);
162
+ const unpacked = unpackOrderAppendix(packed);
163
+ expect(unpacked.orderExecutionType).toBe('ioc');
164
+ expect(unpacked.reduceOnly).toBe(true);
165
+ expect(unpacked.triggerType).toBe('price');
166
+ expect(unpacked.builder?.builderId).toBe(5);
167
+ expect(unpacked.builder?.builderFeeRate).toBe(100);
168
+ });
169
+
170
+ it('should not return builder fields when builderId is 0', () => {
171
+ const appendix: OrderAppendix = {
172
+ orderExecutionType: 'default',
173
+ };
174
+ const packed = packOrderAppendix(appendix);
175
+ const unpacked = unpackOrderAppendix(packed);
176
+ expect(unpacked.builder).toBeUndefined();
177
+ });
120
178
  });