@metamask-previews/perps-controller 15.1.0-preview-00a181c → 15.1.0-preview-a302de5c3

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 (130) hide show
  1. package/CHANGELOG.md +0 -14
  2. package/dist/PerpsController-method-action-types.cjs.map +1 -1
  3. package/dist/PerpsController-method-action-types.d.cts +1 -20
  4. package/dist/PerpsController-method-action-types.d.cts.map +1 -1
  5. package/dist/PerpsController-method-action-types.d.mts +1 -20
  6. package/dist/PerpsController-method-action-types.d.mts.map +1 -1
  7. package/dist/PerpsController-method-action-types.mjs.map +1 -1
  8. package/dist/PerpsController.cjs +154 -65
  9. package/dist/PerpsController.cjs.map +1 -1
  10. package/dist/PerpsController.d.cts +43 -37
  11. package/dist/PerpsController.d.cts.map +1 -1
  12. package/dist/PerpsController.d.mts +43 -37
  13. package/dist/PerpsController.d.mts.map +1 -1
  14. package/dist/PerpsController.mjs +151 -64
  15. package/dist/PerpsController.mjs.map +1 -1
  16. package/dist/aggregation/SubscriptionMultiplexer.cjs +1 -1
  17. package/dist/aggregation/SubscriptionMultiplexer.cjs.map +1 -1
  18. package/dist/aggregation/SubscriptionMultiplexer.d.cts +1 -1
  19. package/dist/aggregation/SubscriptionMultiplexer.d.mts +1 -1
  20. package/dist/aggregation/SubscriptionMultiplexer.mjs +1 -1
  21. package/dist/aggregation/SubscriptionMultiplexer.mjs.map +1 -1
  22. package/dist/constants/index.cjs +1 -0
  23. package/dist/constants/index.cjs.map +1 -1
  24. package/dist/constants/index.d.cts +1 -0
  25. package/dist/constants/index.d.cts.map +1 -1
  26. package/dist/constants/index.d.mts +1 -0
  27. package/dist/constants/index.d.mts.map +1 -1
  28. package/dist/constants/index.mjs +1 -0
  29. package/dist/constants/index.mjs.map +1 -1
  30. package/dist/constants/myxConfig.cjs +253 -0
  31. package/dist/constants/myxConfig.cjs.map +1 -0
  32. package/dist/constants/myxConfig.d.cts +145 -0
  33. package/dist/constants/myxConfig.d.cts.map +1 -0
  34. package/dist/constants/myxConfig.d.mts +145 -0
  35. package/dist/constants/myxConfig.d.mts.map +1 -0
  36. package/dist/constants/myxConfig.mjs +243 -0
  37. package/dist/constants/myxConfig.mjs.map +1 -0
  38. package/dist/constants/perpsConfig.cjs +9 -4
  39. package/dist/constants/perpsConfig.cjs.map +1 -1
  40. package/dist/constants/perpsConfig.d.cts +5 -3
  41. package/dist/constants/perpsConfig.d.cts.map +1 -1
  42. package/dist/constants/perpsConfig.d.mts +5 -3
  43. package/dist/constants/perpsConfig.d.mts.map +1 -1
  44. package/dist/constants/perpsConfig.mjs +9 -4
  45. package/dist/constants/perpsConfig.mjs.map +1 -1
  46. package/dist/index.cjs +175 -146
  47. package/dist/index.cjs.map +1 -1
  48. package/dist/index.d.cts +2 -2
  49. package/dist/index.d.cts.map +1 -1
  50. package/dist/index.d.mts +2 -2
  51. package/dist/index.d.mts.map +1 -1
  52. package/dist/index.mjs +1 -0
  53. package/dist/index.mjs.map +1 -1
  54. package/dist/providers/AggregatedPerpsProvider.cjs +2 -8
  55. package/dist/providers/AggregatedPerpsProvider.cjs.map +1 -1
  56. package/dist/providers/AggregatedPerpsProvider.d.cts +2 -3
  57. package/dist/providers/AggregatedPerpsProvider.d.cts.map +1 -1
  58. package/dist/providers/AggregatedPerpsProvider.d.mts +2 -3
  59. package/dist/providers/AggregatedPerpsProvider.d.mts.map +1 -1
  60. package/dist/providers/AggregatedPerpsProvider.mjs +2 -8
  61. package/dist/providers/AggregatedPerpsProvider.mjs.map +1 -1
  62. package/dist/providers/HyperLiquidProvider.cjs +22 -118
  63. package/dist/providers/HyperLiquidProvider.cjs.map +1 -1
  64. package/dist/providers/HyperLiquidProvider.d.cts +0 -31
  65. package/dist/providers/HyperLiquidProvider.d.cts.map +1 -1
  66. package/dist/providers/HyperLiquidProvider.d.mts +0 -31
  67. package/dist/providers/HyperLiquidProvider.d.mts.map +1 -1
  68. package/dist/providers/HyperLiquidProvider.mjs +22 -118
  69. package/dist/providers/HyperLiquidProvider.mjs.map +1 -1
  70. package/dist/providers/LighterProvider.cjs +1 -1
  71. package/dist/providers/LighterProvider.cjs.map +1 -1
  72. package/dist/providers/LighterProvider.mjs +1 -1
  73. package/dist/providers/LighterProvider.mjs.map +1 -1
  74. package/dist/routing/ProviderRouter.cjs +1 -1
  75. package/dist/routing/ProviderRouter.cjs.map +1 -1
  76. package/dist/routing/ProviderRouter.d.cts +1 -1
  77. package/dist/routing/ProviderRouter.d.mts +1 -1
  78. package/dist/routing/ProviderRouter.mjs +1 -1
  79. package/dist/routing/ProviderRouter.mjs.map +1 -1
  80. package/dist/services/HyperLiquidClientService.cjs.map +1 -1
  81. package/dist/services/HyperLiquidClientService.d.cts +16 -26
  82. package/dist/services/HyperLiquidClientService.d.cts.map +1 -1
  83. package/dist/services/HyperLiquidClientService.d.mts +16 -26
  84. package/dist/services/HyperLiquidClientService.d.mts.map +1 -1
  85. package/dist/services/HyperLiquidClientService.mjs.map +1 -1
  86. package/dist/services/HyperLiquidWalletService.cjs +30 -80
  87. package/dist/services/HyperLiquidWalletService.cjs.map +1 -1
  88. package/dist/services/HyperLiquidWalletService.d.cts +22 -48
  89. package/dist/services/HyperLiquidWalletService.d.cts.map +1 -1
  90. package/dist/services/HyperLiquidWalletService.d.mts +22 -48
  91. package/dist/services/HyperLiquidWalletService.d.mts.map +1 -1
  92. package/dist/services/HyperLiquidWalletService.mjs +30 -80
  93. package/dist/services/HyperLiquidWalletService.mjs.map +1 -1
  94. package/dist/services/LighterWalletService.cjs +1 -1
  95. package/dist/services/LighterWalletService.cjs.map +1 -1
  96. package/dist/services/LighterWalletService.d.cts +1 -1
  97. package/dist/services/LighterWalletService.d.mts +1 -1
  98. package/dist/services/LighterWalletService.mjs +1 -1
  99. package/dist/services/LighterWalletService.mjs.map +1 -1
  100. package/dist/types/index.cjs.map +1 -1
  101. package/dist/types/index.d.cts +16 -10
  102. package/dist/types/index.d.cts.map +1 -1
  103. package/dist/types/index.d.mts +16 -10
  104. package/dist/types/index.d.mts.map +1 -1
  105. package/dist/types/index.mjs.map +1 -1
  106. package/dist/types/myx-types.cjs +41 -0
  107. package/dist/types/myx-types.cjs.map +1 -0
  108. package/dist/types/myx-types.d.cts +94 -0
  109. package/dist/types/myx-types.d.cts.map +1 -0
  110. package/dist/types/myx-types.d.mts +94 -0
  111. package/dist/types/myx-types.d.mts.map +1 -0
  112. package/dist/types/myx-types.mjs +26 -0
  113. package/dist/types/myx-types.mjs.map +1 -0
  114. package/dist/utils/lighterAdapter.cjs +2 -1
  115. package/dist/utils/lighterAdapter.cjs.map +1 -1
  116. package/dist/utils/lighterAdapter.d.cts +2 -1
  117. package/dist/utils/lighterAdapter.d.cts.map +1 -1
  118. package/dist/utils/lighterAdapter.d.mts +2 -1
  119. package/dist/utils/lighterAdapter.d.mts.map +1 -1
  120. package/dist/utils/lighterAdapter.mjs +2 -1
  121. package/dist/utils/lighterAdapter.mjs.map +1 -1
  122. package/dist/utils/myxAdapter.cjs +569 -0
  123. package/dist/utils/myxAdapter.cjs.map +1 -0
  124. package/dist/utils/myxAdapter.d.cts +168 -0
  125. package/dist/utils/myxAdapter.d.cts.map +1 -0
  126. package/dist/utils/myxAdapter.d.mts +168 -0
  127. package/dist/utils/myxAdapter.d.mts.map +1 -0
  128. package/dist/utils/myxAdapter.mjs +548 -0
  129. package/dist/utils/myxAdapter.mjs.map +1 -0
  130. package/package.json +8 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"myxConfig.cjs","sourceRoot":"","sources":["../../src/constants/myxConfig.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * MYX Protocol Configuration Constants\n *\n * Configuration for market display, price fetching, and trading.\n * Based on MYX SDK patterns.\n */\n\nimport type { CaipChainId } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport type {\n MYXNetwork,\n MYXEndpoints,\n MYXAssetConfigs,\n} from '../types/myx-types.js';\n\n// ============================================================================\n// Network Constants\n// ============================================================================\n\n/**\n * MYX Chain IDs\n * Mainnet: BNB Chain (56)\n * Testnet: Linea Sepolia (59141) — primary testnet chain with most active pools.\n * The testnet API also has one pool on Arbitrum Sepolia (421614) but it has no\n * ticker data, so Linea Sepolia is the effective testnet chain.\n */\nexport const MYX_MAINNET_CHAIN_ID = '56' as const;\nexport const MYX_TESTNET_CHAIN_ID = '59141' as const;\nexport const MYX_MAINNET_CAIP_CHAIN_ID =\n `eip155:${MYX_MAINNET_CHAIN_ID}` as CaipChainId;\nexport const MYX_TESTNET_CAIP_CHAIN_ID =\n `eip155:${MYX_TESTNET_CHAIN_ID}` as CaipChainId;\n\n/**\n * Get numeric chain ID for MYX network\n *\n * @param network - The MYX network environment (mainnet or testnet).\n * @returns The numeric chain ID for the specified network.\n */\nexport function getMYXChainId(network: MYXNetwork): number {\n return network === 'testnet'\n ? parseInt(MYX_TESTNET_CHAIN_ID, 10)\n : parseInt(MYX_MAINNET_CHAIN_ID, 10);\n}\n\n// ============================================================================\n// API Endpoints\n// ============================================================================\n\n/**\n * MYX REST and WebSocket endpoints\n */\nexport const MYX_ENDPOINTS: MYXEndpoints = {\n mainnet: {\n http: 'https://api.myx.finance',\n ws: 'wss://oapi.myx.finance/ws',\n },\n testnet: {\n http: 'https://api-test.myx.cash',\n ws: 'wss://oapi-test.myx.cash/ws',\n },\n};\n\n/**\n * Get HTTP endpoint for network\n *\n * @param network - The MYX network environment (mainnet or testnet).\n * @returns The HTTP API endpoint URL for the specified network.\n */\nexport function getMYXHttpEndpoint(network: MYXNetwork): string {\n return MYX_ENDPOINTS[network].http;\n}\n\n// ============================================================================\n// Decimal Constants\n// ============================================================================\n\n/**\n * MYX API returns prices as normal floating-point strings (e.g. \"64854.76\").\n * No decimal scaling is needed for prices from the REST/WS API.\n *\n * Note: The SDK's internal contract layer uses 30 decimals, but the API\n * endpoints (tickers, candles, order history) return human-readable values.\n */\nexport const MYX_PRICE_DECIMALS = 0;\n\n/**\n * MYX uses 18 decimals for position sizes\n */\nexport const MYX_SIZE_DECIMALS = 18;\n\n/**\n * MYX uses 18 decimals for collateral amounts (USDT on BNB)\n */\nexport const MYX_COLLATERAL_DECIMALS = 18;\n\n// ============================================================================\n// Token Addresses\n// ============================================================================\n\n/**\n * Collateral token address — testnet (USDC on Linea Sepolia)\n * From SDK: LINEA_SEPOLIA.USDC\n */\nexport const MYX_COLLATERAL_TOKEN_TESTNET =\n '0xD984fd34f91F92DA0586e1bE82E262fF27DC431b' as const;\n\n/**\n * Collateral token address — mainnet (BUSD on BNB, per pool quoteToken)\n * Note: individual pools may use different quote tokens\n */\nexport const MYX_COLLATERAL_TOKEN_MAINNET =\n '0x8bfc51e1928e91e47c6734983ac018b2fc0adf4e' as const;\n\n/** @deprecated Use MYX_COLLATERAL_TOKEN_TESTNET */\nexport const USDT_BNB_TESTNET = MYX_COLLATERAL_TOKEN_TESTNET;\n/** @deprecated Use MYX_COLLATERAL_TOKEN_MAINNET */\nexport const USDT_BNB_MAINNET = MYX_COLLATERAL_TOKEN_MAINNET;\n\n/**\n * Collateral token configuration by network\n */\nexport const MYX_ASSET_CONFIGS: MYXAssetConfigs = {\n USDT: {\n mainnet: {\n chainId: MYX_MAINNET_CAIP_CHAIN_ID,\n tokenAddress: MYX_COLLATERAL_TOKEN_MAINNET,\n },\n testnet: {\n chainId: MYX_TESTNET_CAIP_CHAIN_ID,\n tokenAddress: MYX_COLLATERAL_TOKEN_TESTNET,\n },\n },\n};\n\n// ============================================================================\n// Decimal Conversion Helpers\n// ============================================================================\n\n/**\n * Convert MYX API price string to standard number.\n *\n * MYX API returns normal floating-point price strings (e.g. \"64854.76\"),\n * NOT 30-decimal scaled integers. This is a simple parseFloat.\n *\n * @param myxPrice - Price string from MYX API (e.g. \"64854.760266796727\")\n * @returns Standard decimal number\n */\nexport function fromMYXPrice(myxPrice: string): number {\n if (!myxPrice || myxPrice === '0') {\n return 0;\n }\n\n const parsed = parseFloat(myxPrice);\n return isNaN(parsed) ? 0 : parsed;\n}\n\n/**\n * Convert standard number to MYX API price string.\n *\n * MYX API uses normal floating-point strings, so this is a simple toString.\n *\n * @param price - Standard decimal number\n * @returns Price string for MYX API\n */\nexport function toMYXPrice(price: number | string): string {\n const parsed = typeof price === 'string' ? parseFloat(price) : price;\n return isNaN(parsed) ? '0' : parsed.toString();\n}\n\n/**\n * Convert MYX SDK size (18 decimals) to standard number\n *\n * @param myxSize - Size string in 18-decimal format from SDK\n * @returns Standard decimal number\n */\nexport function fromMYXSize(myxSize: string): number {\n if (!myxSize || myxSize === '0') {\n return 0;\n }\n\n try {\n const bn = new BigNumber(myxSize);\n if (bn.isNaN()) {\n return 0;\n }\n const divisor = new BigNumber(10).pow(MYX_SIZE_DECIMALS);\n return bn.dividedBy(divisor).toNumber();\n } catch {\n return 0;\n }\n}\n\n/**\n * Convert standard number to MYX SDK size format (18 decimals)\n *\n * @param size - Standard decimal number\n * @returns Size string in 18-decimal format for SDK\n */\nexport function toMYXSize(size: number | string): string {\n try {\n const bn = new BigNumber(size);\n if (bn.isNaN()) {\n return '0';\n }\n const multiplier = new BigNumber(10).pow(MYX_SIZE_DECIMALS);\n return bn.multipliedBy(multiplier).toFixed(0);\n } catch {\n return '0';\n }\n}\n\n/**\n * Convert MYX SDK collateral (18 decimals) to standard number\n *\n * @param myxCollateral - Collateral string in 18-decimal format from SDK\n * @returns Standard decimal number\n */\nexport function fromMYXCollateral(myxCollateral: string): number {\n if (!myxCollateral || myxCollateral === '0') {\n return 0;\n }\n\n try {\n const bn = new BigNumber(myxCollateral);\n if (bn.isNaN()) {\n return 0;\n }\n const divisor = new BigNumber(10).pow(MYX_COLLATERAL_DECIMALS);\n return bn.dividedBy(divisor).toNumber();\n } catch {\n return 0;\n }\n}\n\n// ============================================================================\n// REST API Configuration\n// ============================================================================\n\n/**\n * Price polling interval in milliseconds\n * Using 5 seconds as a fallback for unreliable WebSocket\n */\nexport const MYX_PRICE_POLLING_INTERVAL_MS = 5000;\n\n/**\n * HTTP request timeout in milliseconds\n */\nexport const MYX_HTTP_TIMEOUT_MS = 10000;\n\n/**\n * Maximum retries for failed API requests\n */\nexport const MYX_MAX_RETRIES = 3;\n\n/**\n * Default slippage in basis points for MYX orders (1% — matches SDK default)\n */\nexport const MYX_DEFAULT_SLIPPAGE_BPS = 100;\n\n/**\n * Maximum leverage supported by MYX (most markets)\n */\nexport const MYX_MAX_LEVERAGE = 100;\n\n/**\n * Minimum order size in USD\n */\nexport const MYX_MINIMUM_ORDER_SIZE_USD = 10;\n\n/**\n * MYX fee rates (placeholder — will be replaced with per-market rates)\n */\nexport const MYX_FEE_RATE = 0.0005; // 0.05% total fee rate\nexport const MYX_PROTOCOL_FEE_RATE = 0.0005; // Protocol taker fee\n\n/**\n * USDT execution fee token address per network (used for order execution fees)\n */\nexport const MYX_EXECUTION_FEE_TOKEN: Record<MYXNetwork, string> = {\n testnet: MYX_COLLATERAL_TOKEN_TESTNET,\n mainnet: MYX_COLLATERAL_TOKEN_MAINNET,\n};\n"]}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * MYX Protocol Configuration Constants
3
+ *
4
+ * Configuration for market display, price fetching, and trading.
5
+ * Based on MYX SDK patterns.
6
+ */
7
+ import type { MYXNetwork, MYXEndpoints, MYXAssetConfigs } from "../types/myx-types.cjs";
8
+ /**
9
+ * MYX Chain IDs
10
+ * Mainnet: BNB Chain (56)
11
+ * Testnet: Linea Sepolia (59141) — primary testnet chain with most active pools.
12
+ * The testnet API also has one pool on Arbitrum Sepolia (421614) but it has no
13
+ * ticker data, so Linea Sepolia is the effective testnet chain.
14
+ */
15
+ export declare const MYX_MAINNET_CHAIN_ID: "56";
16
+ export declare const MYX_TESTNET_CHAIN_ID: "59141";
17
+ export declare const MYX_MAINNET_CAIP_CHAIN_ID: `${string}:${string}`;
18
+ export declare const MYX_TESTNET_CAIP_CHAIN_ID: `${string}:${string}`;
19
+ /**
20
+ * Get numeric chain ID for MYX network
21
+ *
22
+ * @param network - The MYX network environment (mainnet or testnet).
23
+ * @returns The numeric chain ID for the specified network.
24
+ */
25
+ export declare function getMYXChainId(network: MYXNetwork): number;
26
+ /**
27
+ * MYX REST and WebSocket endpoints
28
+ */
29
+ export declare const MYX_ENDPOINTS: MYXEndpoints;
30
+ /**
31
+ * Get HTTP endpoint for network
32
+ *
33
+ * @param network - The MYX network environment (mainnet or testnet).
34
+ * @returns The HTTP API endpoint URL for the specified network.
35
+ */
36
+ export declare function getMYXHttpEndpoint(network: MYXNetwork): string;
37
+ /**
38
+ * MYX API returns prices as normal floating-point strings (e.g. "64854.76").
39
+ * No decimal scaling is needed for prices from the REST/WS API.
40
+ *
41
+ * Note: The SDK's internal contract layer uses 30 decimals, but the API
42
+ * endpoints (tickers, candles, order history) return human-readable values.
43
+ */
44
+ export declare const MYX_PRICE_DECIMALS = 0;
45
+ /**
46
+ * MYX uses 18 decimals for position sizes
47
+ */
48
+ export declare const MYX_SIZE_DECIMALS = 18;
49
+ /**
50
+ * MYX uses 18 decimals for collateral amounts (USDT on BNB)
51
+ */
52
+ export declare const MYX_COLLATERAL_DECIMALS = 18;
53
+ /**
54
+ * Collateral token address — testnet (USDC on Linea Sepolia)
55
+ * From SDK: LINEA_SEPOLIA.USDC
56
+ */
57
+ export declare const MYX_COLLATERAL_TOKEN_TESTNET: "0xD984fd34f91F92DA0586e1bE82E262fF27DC431b";
58
+ /**
59
+ * Collateral token address — mainnet (BUSD on BNB, per pool quoteToken)
60
+ * Note: individual pools may use different quote tokens
61
+ */
62
+ export declare const MYX_COLLATERAL_TOKEN_MAINNET: "0x8bfc51e1928e91e47c6734983ac018b2fc0adf4e";
63
+ /** @deprecated Use MYX_COLLATERAL_TOKEN_TESTNET */
64
+ export declare const USDT_BNB_TESTNET: "0xD984fd34f91F92DA0586e1bE82E262fF27DC431b";
65
+ /** @deprecated Use MYX_COLLATERAL_TOKEN_MAINNET */
66
+ export declare const USDT_BNB_MAINNET: "0x8bfc51e1928e91e47c6734983ac018b2fc0adf4e";
67
+ /**
68
+ * Collateral token configuration by network
69
+ */
70
+ export declare const MYX_ASSET_CONFIGS: MYXAssetConfigs;
71
+ /**
72
+ * Convert MYX API price string to standard number.
73
+ *
74
+ * MYX API returns normal floating-point price strings (e.g. "64854.76"),
75
+ * NOT 30-decimal scaled integers. This is a simple parseFloat.
76
+ *
77
+ * @param myxPrice - Price string from MYX API (e.g. "64854.760266796727")
78
+ * @returns Standard decimal number
79
+ */
80
+ export declare function fromMYXPrice(myxPrice: string): number;
81
+ /**
82
+ * Convert standard number to MYX API price string.
83
+ *
84
+ * MYX API uses normal floating-point strings, so this is a simple toString.
85
+ *
86
+ * @param price - Standard decimal number
87
+ * @returns Price string for MYX API
88
+ */
89
+ export declare function toMYXPrice(price: number | string): string;
90
+ /**
91
+ * Convert MYX SDK size (18 decimals) to standard number
92
+ *
93
+ * @param myxSize - Size string in 18-decimal format from SDK
94
+ * @returns Standard decimal number
95
+ */
96
+ export declare function fromMYXSize(myxSize: string): number;
97
+ /**
98
+ * Convert standard number to MYX SDK size format (18 decimals)
99
+ *
100
+ * @param size - Standard decimal number
101
+ * @returns Size string in 18-decimal format for SDK
102
+ */
103
+ export declare function toMYXSize(size: number | string): string;
104
+ /**
105
+ * Convert MYX SDK collateral (18 decimals) to standard number
106
+ *
107
+ * @param myxCollateral - Collateral string in 18-decimal format from SDK
108
+ * @returns Standard decimal number
109
+ */
110
+ export declare function fromMYXCollateral(myxCollateral: string): number;
111
+ /**
112
+ * Price polling interval in milliseconds
113
+ * Using 5 seconds as a fallback for unreliable WebSocket
114
+ */
115
+ export declare const MYX_PRICE_POLLING_INTERVAL_MS = 5000;
116
+ /**
117
+ * HTTP request timeout in milliseconds
118
+ */
119
+ export declare const MYX_HTTP_TIMEOUT_MS = 10000;
120
+ /**
121
+ * Maximum retries for failed API requests
122
+ */
123
+ export declare const MYX_MAX_RETRIES = 3;
124
+ /**
125
+ * Default slippage in basis points for MYX orders (1% — matches SDK default)
126
+ */
127
+ export declare const MYX_DEFAULT_SLIPPAGE_BPS = 100;
128
+ /**
129
+ * Maximum leverage supported by MYX (most markets)
130
+ */
131
+ export declare const MYX_MAX_LEVERAGE = 100;
132
+ /**
133
+ * Minimum order size in USD
134
+ */
135
+ export declare const MYX_MINIMUM_ORDER_SIZE_USD = 10;
136
+ /**
137
+ * MYX fee rates (placeholder — will be replaced with per-market rates)
138
+ */
139
+ export declare const MYX_FEE_RATE = 0.0005;
140
+ export declare const MYX_PROTOCOL_FEE_RATE = 0.0005;
141
+ /**
142
+ * USDT execution fee token address per network (used for order execution fees)
143
+ */
144
+ export declare const MYX_EXECUTION_FEE_TOKEN: Record<MYXNetwork, string>;
145
+ //# sourceMappingURL=myxConfig.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"myxConfig.d.cts","sourceRoot":"","sources":["../../src/constants/myxConfig.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,eAAe,EAChB,+BAA8B;AAM/B;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,MAAgB,CAAC;AAClD,eAAO,MAAM,oBAAoB,SAAmB,CAAC;AACrD,eAAO,MAAM,yBAAyB,uBACW,CAAC;AAClD,eAAO,MAAM,yBAAyB,uBACW,CAAC;AAElD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAIzD;AAMD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,YAS3B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAE9D;AAMD;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAM1C;;;GAGG;AACH,eAAO,MAAM,4BAA4B,8CACc,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,4BAA4B,8CACc,CAAC;AAExD,mDAAmD;AACnD,eAAO,MAAM,gBAAgB,8CAA+B,CAAC;AAC7D,mDAAmD;AACnD,eAAO,MAAM,gBAAgB,8CAA+B,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,eAW/B,CAAC;AAMF;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOrD;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAGzD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAenD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAWvD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAe/D;AAMD;;;GAGG;AACH,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,YAAY,SAAS,CAAC;AACnC,eAAO,MAAM,qBAAqB,SAAS,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAG9D,CAAC"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * MYX Protocol Configuration Constants
3
+ *
4
+ * Configuration for market display, price fetching, and trading.
5
+ * Based on MYX SDK patterns.
6
+ */
7
+ import type { MYXNetwork, MYXEndpoints, MYXAssetConfigs } from "../types/myx-types.mjs";
8
+ /**
9
+ * MYX Chain IDs
10
+ * Mainnet: BNB Chain (56)
11
+ * Testnet: Linea Sepolia (59141) — primary testnet chain with most active pools.
12
+ * The testnet API also has one pool on Arbitrum Sepolia (421614) but it has no
13
+ * ticker data, so Linea Sepolia is the effective testnet chain.
14
+ */
15
+ export declare const MYX_MAINNET_CHAIN_ID: "56";
16
+ export declare const MYX_TESTNET_CHAIN_ID: "59141";
17
+ export declare const MYX_MAINNET_CAIP_CHAIN_ID: `${string}:${string}`;
18
+ export declare const MYX_TESTNET_CAIP_CHAIN_ID: `${string}:${string}`;
19
+ /**
20
+ * Get numeric chain ID for MYX network
21
+ *
22
+ * @param network - The MYX network environment (mainnet or testnet).
23
+ * @returns The numeric chain ID for the specified network.
24
+ */
25
+ export declare function getMYXChainId(network: MYXNetwork): number;
26
+ /**
27
+ * MYX REST and WebSocket endpoints
28
+ */
29
+ export declare const MYX_ENDPOINTS: MYXEndpoints;
30
+ /**
31
+ * Get HTTP endpoint for network
32
+ *
33
+ * @param network - The MYX network environment (mainnet or testnet).
34
+ * @returns The HTTP API endpoint URL for the specified network.
35
+ */
36
+ export declare function getMYXHttpEndpoint(network: MYXNetwork): string;
37
+ /**
38
+ * MYX API returns prices as normal floating-point strings (e.g. "64854.76").
39
+ * No decimal scaling is needed for prices from the REST/WS API.
40
+ *
41
+ * Note: The SDK's internal contract layer uses 30 decimals, but the API
42
+ * endpoints (tickers, candles, order history) return human-readable values.
43
+ */
44
+ export declare const MYX_PRICE_DECIMALS = 0;
45
+ /**
46
+ * MYX uses 18 decimals for position sizes
47
+ */
48
+ export declare const MYX_SIZE_DECIMALS = 18;
49
+ /**
50
+ * MYX uses 18 decimals for collateral amounts (USDT on BNB)
51
+ */
52
+ export declare const MYX_COLLATERAL_DECIMALS = 18;
53
+ /**
54
+ * Collateral token address — testnet (USDC on Linea Sepolia)
55
+ * From SDK: LINEA_SEPOLIA.USDC
56
+ */
57
+ export declare const MYX_COLLATERAL_TOKEN_TESTNET: "0xD984fd34f91F92DA0586e1bE82E262fF27DC431b";
58
+ /**
59
+ * Collateral token address — mainnet (BUSD on BNB, per pool quoteToken)
60
+ * Note: individual pools may use different quote tokens
61
+ */
62
+ export declare const MYX_COLLATERAL_TOKEN_MAINNET: "0x8bfc51e1928e91e47c6734983ac018b2fc0adf4e";
63
+ /** @deprecated Use MYX_COLLATERAL_TOKEN_TESTNET */
64
+ export declare const USDT_BNB_TESTNET: "0xD984fd34f91F92DA0586e1bE82E262fF27DC431b";
65
+ /** @deprecated Use MYX_COLLATERAL_TOKEN_MAINNET */
66
+ export declare const USDT_BNB_MAINNET: "0x8bfc51e1928e91e47c6734983ac018b2fc0adf4e";
67
+ /**
68
+ * Collateral token configuration by network
69
+ */
70
+ export declare const MYX_ASSET_CONFIGS: MYXAssetConfigs;
71
+ /**
72
+ * Convert MYX API price string to standard number.
73
+ *
74
+ * MYX API returns normal floating-point price strings (e.g. "64854.76"),
75
+ * NOT 30-decimal scaled integers. This is a simple parseFloat.
76
+ *
77
+ * @param myxPrice - Price string from MYX API (e.g. "64854.760266796727")
78
+ * @returns Standard decimal number
79
+ */
80
+ export declare function fromMYXPrice(myxPrice: string): number;
81
+ /**
82
+ * Convert standard number to MYX API price string.
83
+ *
84
+ * MYX API uses normal floating-point strings, so this is a simple toString.
85
+ *
86
+ * @param price - Standard decimal number
87
+ * @returns Price string for MYX API
88
+ */
89
+ export declare function toMYXPrice(price: number | string): string;
90
+ /**
91
+ * Convert MYX SDK size (18 decimals) to standard number
92
+ *
93
+ * @param myxSize - Size string in 18-decimal format from SDK
94
+ * @returns Standard decimal number
95
+ */
96
+ export declare function fromMYXSize(myxSize: string): number;
97
+ /**
98
+ * Convert standard number to MYX SDK size format (18 decimals)
99
+ *
100
+ * @param size - Standard decimal number
101
+ * @returns Size string in 18-decimal format for SDK
102
+ */
103
+ export declare function toMYXSize(size: number | string): string;
104
+ /**
105
+ * Convert MYX SDK collateral (18 decimals) to standard number
106
+ *
107
+ * @param myxCollateral - Collateral string in 18-decimal format from SDK
108
+ * @returns Standard decimal number
109
+ */
110
+ export declare function fromMYXCollateral(myxCollateral: string): number;
111
+ /**
112
+ * Price polling interval in milliseconds
113
+ * Using 5 seconds as a fallback for unreliable WebSocket
114
+ */
115
+ export declare const MYX_PRICE_POLLING_INTERVAL_MS = 5000;
116
+ /**
117
+ * HTTP request timeout in milliseconds
118
+ */
119
+ export declare const MYX_HTTP_TIMEOUT_MS = 10000;
120
+ /**
121
+ * Maximum retries for failed API requests
122
+ */
123
+ export declare const MYX_MAX_RETRIES = 3;
124
+ /**
125
+ * Default slippage in basis points for MYX orders (1% — matches SDK default)
126
+ */
127
+ export declare const MYX_DEFAULT_SLIPPAGE_BPS = 100;
128
+ /**
129
+ * Maximum leverage supported by MYX (most markets)
130
+ */
131
+ export declare const MYX_MAX_LEVERAGE = 100;
132
+ /**
133
+ * Minimum order size in USD
134
+ */
135
+ export declare const MYX_MINIMUM_ORDER_SIZE_USD = 10;
136
+ /**
137
+ * MYX fee rates (placeholder — will be replaced with per-market rates)
138
+ */
139
+ export declare const MYX_FEE_RATE = 0.0005;
140
+ export declare const MYX_PROTOCOL_FEE_RATE = 0.0005;
141
+ /**
142
+ * USDT execution fee token address per network (used for order execution fees)
143
+ */
144
+ export declare const MYX_EXECUTION_FEE_TOKEN: Record<MYXNetwork, string>;
145
+ //# sourceMappingURL=myxConfig.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"myxConfig.d.mts","sourceRoot":"","sources":["../../src/constants/myxConfig.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,eAAe,EAChB,+BAA8B;AAM/B;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,MAAgB,CAAC;AAClD,eAAO,MAAM,oBAAoB,SAAmB,CAAC;AACrD,eAAO,MAAM,yBAAyB,uBACW,CAAC;AAClD,eAAO,MAAM,yBAAyB,uBACW,CAAC;AAElD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAIzD;AAMD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,YAS3B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAE9D;AAMD;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAM1C;;;GAGG;AACH,eAAO,MAAM,4BAA4B,8CACc,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,4BAA4B,8CACc,CAAC;AAExD,mDAAmD;AACnD,eAAO,MAAM,gBAAgB,8CAA+B,CAAC;AAC7D,mDAAmD;AACnD,eAAO,MAAM,gBAAgB,8CAA+B,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,eAW/B,CAAC;AAMF;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOrD;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAGzD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAenD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAWvD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAe/D;AAMD;;;GAGG;AACH,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,YAAY,SAAS,CAAC;AACnC,eAAO,MAAM,qBAAqB,SAAS,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAG9D,CAAC"}
@@ -0,0 +1,243 @@
1
+ /**
2
+ * MYX Protocol Configuration Constants
3
+ *
4
+ * Configuration for market display, price fetching, and trading.
5
+ * Based on MYX SDK patterns.
6
+ */
7
+ import { BigNumber } from "bignumber.js";
8
+ // ============================================================================
9
+ // Network Constants
10
+ // ============================================================================
11
+ /**
12
+ * MYX Chain IDs
13
+ * Mainnet: BNB Chain (56)
14
+ * Testnet: Linea Sepolia (59141) — primary testnet chain with most active pools.
15
+ * The testnet API also has one pool on Arbitrum Sepolia (421614) but it has no
16
+ * ticker data, so Linea Sepolia is the effective testnet chain.
17
+ */
18
+ export const MYX_MAINNET_CHAIN_ID = '56';
19
+ export const MYX_TESTNET_CHAIN_ID = '59141';
20
+ export const MYX_MAINNET_CAIP_CHAIN_ID = `eip155:${MYX_MAINNET_CHAIN_ID}`;
21
+ export const MYX_TESTNET_CAIP_CHAIN_ID = `eip155:${MYX_TESTNET_CHAIN_ID}`;
22
+ /**
23
+ * Get numeric chain ID for MYX network
24
+ *
25
+ * @param network - The MYX network environment (mainnet or testnet).
26
+ * @returns The numeric chain ID for the specified network.
27
+ */
28
+ export function getMYXChainId(network) {
29
+ return network === 'testnet'
30
+ ? parseInt(MYX_TESTNET_CHAIN_ID, 10)
31
+ : parseInt(MYX_MAINNET_CHAIN_ID, 10);
32
+ }
33
+ // ============================================================================
34
+ // API Endpoints
35
+ // ============================================================================
36
+ /**
37
+ * MYX REST and WebSocket endpoints
38
+ */
39
+ export const MYX_ENDPOINTS = {
40
+ mainnet: {
41
+ http: 'https://api.myx.finance',
42
+ ws: 'wss://oapi.myx.finance/ws',
43
+ },
44
+ testnet: {
45
+ http: 'https://api-test.myx.cash',
46
+ ws: 'wss://oapi-test.myx.cash/ws',
47
+ },
48
+ };
49
+ /**
50
+ * Get HTTP endpoint for network
51
+ *
52
+ * @param network - The MYX network environment (mainnet or testnet).
53
+ * @returns The HTTP API endpoint URL for the specified network.
54
+ */
55
+ export function getMYXHttpEndpoint(network) {
56
+ return MYX_ENDPOINTS[network].http;
57
+ }
58
+ // ============================================================================
59
+ // Decimal Constants
60
+ // ============================================================================
61
+ /**
62
+ * MYX API returns prices as normal floating-point strings (e.g. "64854.76").
63
+ * No decimal scaling is needed for prices from the REST/WS API.
64
+ *
65
+ * Note: The SDK's internal contract layer uses 30 decimals, but the API
66
+ * endpoints (tickers, candles, order history) return human-readable values.
67
+ */
68
+ export const MYX_PRICE_DECIMALS = 0;
69
+ /**
70
+ * MYX uses 18 decimals for position sizes
71
+ */
72
+ export const MYX_SIZE_DECIMALS = 18;
73
+ /**
74
+ * MYX uses 18 decimals for collateral amounts (USDT on BNB)
75
+ */
76
+ export const MYX_COLLATERAL_DECIMALS = 18;
77
+ // ============================================================================
78
+ // Token Addresses
79
+ // ============================================================================
80
+ /**
81
+ * Collateral token address — testnet (USDC on Linea Sepolia)
82
+ * From SDK: LINEA_SEPOLIA.USDC
83
+ */
84
+ export const MYX_COLLATERAL_TOKEN_TESTNET = '0xD984fd34f91F92DA0586e1bE82E262fF27DC431b';
85
+ /**
86
+ * Collateral token address — mainnet (BUSD on BNB, per pool quoteToken)
87
+ * Note: individual pools may use different quote tokens
88
+ */
89
+ export const MYX_COLLATERAL_TOKEN_MAINNET = '0x8bfc51e1928e91e47c6734983ac018b2fc0adf4e';
90
+ /** @deprecated Use MYX_COLLATERAL_TOKEN_TESTNET */
91
+ export const USDT_BNB_TESTNET = MYX_COLLATERAL_TOKEN_TESTNET;
92
+ /** @deprecated Use MYX_COLLATERAL_TOKEN_MAINNET */
93
+ export const USDT_BNB_MAINNET = MYX_COLLATERAL_TOKEN_MAINNET;
94
+ /**
95
+ * Collateral token configuration by network
96
+ */
97
+ export const MYX_ASSET_CONFIGS = {
98
+ USDT: {
99
+ mainnet: {
100
+ chainId: MYX_MAINNET_CAIP_CHAIN_ID,
101
+ tokenAddress: MYX_COLLATERAL_TOKEN_MAINNET,
102
+ },
103
+ testnet: {
104
+ chainId: MYX_TESTNET_CAIP_CHAIN_ID,
105
+ tokenAddress: MYX_COLLATERAL_TOKEN_TESTNET,
106
+ },
107
+ },
108
+ };
109
+ // ============================================================================
110
+ // Decimal Conversion Helpers
111
+ // ============================================================================
112
+ /**
113
+ * Convert MYX API price string to standard number.
114
+ *
115
+ * MYX API returns normal floating-point price strings (e.g. "64854.76"),
116
+ * NOT 30-decimal scaled integers. This is a simple parseFloat.
117
+ *
118
+ * @param myxPrice - Price string from MYX API (e.g. "64854.760266796727")
119
+ * @returns Standard decimal number
120
+ */
121
+ export function fromMYXPrice(myxPrice) {
122
+ if (!myxPrice || myxPrice === '0') {
123
+ return 0;
124
+ }
125
+ const parsed = parseFloat(myxPrice);
126
+ return isNaN(parsed) ? 0 : parsed;
127
+ }
128
+ /**
129
+ * Convert standard number to MYX API price string.
130
+ *
131
+ * MYX API uses normal floating-point strings, so this is a simple toString.
132
+ *
133
+ * @param price - Standard decimal number
134
+ * @returns Price string for MYX API
135
+ */
136
+ export function toMYXPrice(price) {
137
+ const parsed = typeof price === 'string' ? parseFloat(price) : price;
138
+ return isNaN(parsed) ? '0' : parsed.toString();
139
+ }
140
+ /**
141
+ * Convert MYX SDK size (18 decimals) to standard number
142
+ *
143
+ * @param myxSize - Size string in 18-decimal format from SDK
144
+ * @returns Standard decimal number
145
+ */
146
+ export function fromMYXSize(myxSize) {
147
+ if (!myxSize || myxSize === '0') {
148
+ return 0;
149
+ }
150
+ try {
151
+ const bn = new BigNumber(myxSize);
152
+ if (bn.isNaN()) {
153
+ return 0;
154
+ }
155
+ const divisor = new BigNumber(10).pow(MYX_SIZE_DECIMALS);
156
+ return bn.dividedBy(divisor).toNumber();
157
+ }
158
+ catch {
159
+ return 0;
160
+ }
161
+ }
162
+ /**
163
+ * Convert standard number to MYX SDK size format (18 decimals)
164
+ *
165
+ * @param size - Standard decimal number
166
+ * @returns Size string in 18-decimal format for SDK
167
+ */
168
+ export function toMYXSize(size) {
169
+ try {
170
+ const bn = new BigNumber(size);
171
+ if (bn.isNaN()) {
172
+ return '0';
173
+ }
174
+ const multiplier = new BigNumber(10).pow(MYX_SIZE_DECIMALS);
175
+ return bn.multipliedBy(multiplier).toFixed(0);
176
+ }
177
+ catch {
178
+ return '0';
179
+ }
180
+ }
181
+ /**
182
+ * Convert MYX SDK collateral (18 decimals) to standard number
183
+ *
184
+ * @param myxCollateral - Collateral string in 18-decimal format from SDK
185
+ * @returns Standard decimal number
186
+ */
187
+ export function fromMYXCollateral(myxCollateral) {
188
+ if (!myxCollateral || myxCollateral === '0') {
189
+ return 0;
190
+ }
191
+ try {
192
+ const bn = new BigNumber(myxCollateral);
193
+ if (bn.isNaN()) {
194
+ return 0;
195
+ }
196
+ const divisor = new BigNumber(10).pow(MYX_COLLATERAL_DECIMALS);
197
+ return bn.dividedBy(divisor).toNumber();
198
+ }
199
+ catch {
200
+ return 0;
201
+ }
202
+ }
203
+ // ============================================================================
204
+ // REST API Configuration
205
+ // ============================================================================
206
+ /**
207
+ * Price polling interval in milliseconds
208
+ * Using 5 seconds as a fallback for unreliable WebSocket
209
+ */
210
+ export const MYX_PRICE_POLLING_INTERVAL_MS = 5000;
211
+ /**
212
+ * HTTP request timeout in milliseconds
213
+ */
214
+ export const MYX_HTTP_TIMEOUT_MS = 10000;
215
+ /**
216
+ * Maximum retries for failed API requests
217
+ */
218
+ export const MYX_MAX_RETRIES = 3;
219
+ /**
220
+ * Default slippage in basis points for MYX orders (1% — matches SDK default)
221
+ */
222
+ export const MYX_DEFAULT_SLIPPAGE_BPS = 100;
223
+ /**
224
+ * Maximum leverage supported by MYX (most markets)
225
+ */
226
+ export const MYX_MAX_LEVERAGE = 100;
227
+ /**
228
+ * Minimum order size in USD
229
+ */
230
+ export const MYX_MINIMUM_ORDER_SIZE_USD = 10;
231
+ /**
232
+ * MYX fee rates (placeholder — will be replaced with per-market rates)
233
+ */
234
+ export const MYX_FEE_RATE = 0.0005; // 0.05% total fee rate
235
+ export const MYX_PROTOCOL_FEE_RATE = 0.0005; // Protocol taker fee
236
+ /**
237
+ * USDT execution fee token address per network (used for order execution fees)
238
+ */
239
+ export const MYX_EXECUTION_FEE_TOKEN = {
240
+ testnet: MYX_COLLATERAL_TOKEN_TESTNET,
241
+ mainnet: MYX_COLLATERAL_TOKEN_MAINNET,
242
+ };
243
+ //# sourceMappingURL=myxConfig.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"myxConfig.mjs","sourceRoot":"","sources":["../../src/constants/myxConfig.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * MYX Protocol Configuration Constants\n *\n * Configuration for market display, price fetching, and trading.\n * Based on MYX SDK patterns.\n */\n\nimport type { CaipChainId } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport type {\n MYXNetwork,\n MYXEndpoints,\n MYXAssetConfigs,\n} from '../types/myx-types.js';\n\n// ============================================================================\n// Network Constants\n// ============================================================================\n\n/**\n * MYX Chain IDs\n * Mainnet: BNB Chain (56)\n * Testnet: Linea Sepolia (59141) — primary testnet chain with most active pools.\n * The testnet API also has one pool on Arbitrum Sepolia (421614) but it has no\n * ticker data, so Linea Sepolia is the effective testnet chain.\n */\nexport const MYX_MAINNET_CHAIN_ID = '56' as const;\nexport const MYX_TESTNET_CHAIN_ID = '59141' as const;\nexport const MYX_MAINNET_CAIP_CHAIN_ID =\n `eip155:${MYX_MAINNET_CHAIN_ID}` as CaipChainId;\nexport const MYX_TESTNET_CAIP_CHAIN_ID =\n `eip155:${MYX_TESTNET_CHAIN_ID}` as CaipChainId;\n\n/**\n * Get numeric chain ID for MYX network\n *\n * @param network - The MYX network environment (mainnet or testnet).\n * @returns The numeric chain ID for the specified network.\n */\nexport function getMYXChainId(network: MYXNetwork): number {\n return network === 'testnet'\n ? parseInt(MYX_TESTNET_CHAIN_ID, 10)\n : parseInt(MYX_MAINNET_CHAIN_ID, 10);\n}\n\n// ============================================================================\n// API Endpoints\n// ============================================================================\n\n/**\n * MYX REST and WebSocket endpoints\n */\nexport const MYX_ENDPOINTS: MYXEndpoints = {\n mainnet: {\n http: 'https://api.myx.finance',\n ws: 'wss://oapi.myx.finance/ws',\n },\n testnet: {\n http: 'https://api-test.myx.cash',\n ws: 'wss://oapi-test.myx.cash/ws',\n },\n};\n\n/**\n * Get HTTP endpoint for network\n *\n * @param network - The MYX network environment (mainnet or testnet).\n * @returns The HTTP API endpoint URL for the specified network.\n */\nexport function getMYXHttpEndpoint(network: MYXNetwork): string {\n return MYX_ENDPOINTS[network].http;\n}\n\n// ============================================================================\n// Decimal Constants\n// ============================================================================\n\n/**\n * MYX API returns prices as normal floating-point strings (e.g. \"64854.76\").\n * No decimal scaling is needed for prices from the REST/WS API.\n *\n * Note: The SDK's internal contract layer uses 30 decimals, but the API\n * endpoints (tickers, candles, order history) return human-readable values.\n */\nexport const MYX_PRICE_DECIMALS = 0;\n\n/**\n * MYX uses 18 decimals for position sizes\n */\nexport const MYX_SIZE_DECIMALS = 18;\n\n/**\n * MYX uses 18 decimals for collateral amounts (USDT on BNB)\n */\nexport const MYX_COLLATERAL_DECIMALS = 18;\n\n// ============================================================================\n// Token Addresses\n// ============================================================================\n\n/**\n * Collateral token address — testnet (USDC on Linea Sepolia)\n * From SDK: LINEA_SEPOLIA.USDC\n */\nexport const MYX_COLLATERAL_TOKEN_TESTNET =\n '0xD984fd34f91F92DA0586e1bE82E262fF27DC431b' as const;\n\n/**\n * Collateral token address — mainnet (BUSD on BNB, per pool quoteToken)\n * Note: individual pools may use different quote tokens\n */\nexport const MYX_COLLATERAL_TOKEN_MAINNET =\n '0x8bfc51e1928e91e47c6734983ac018b2fc0adf4e' as const;\n\n/** @deprecated Use MYX_COLLATERAL_TOKEN_TESTNET */\nexport const USDT_BNB_TESTNET = MYX_COLLATERAL_TOKEN_TESTNET;\n/** @deprecated Use MYX_COLLATERAL_TOKEN_MAINNET */\nexport const USDT_BNB_MAINNET = MYX_COLLATERAL_TOKEN_MAINNET;\n\n/**\n * Collateral token configuration by network\n */\nexport const MYX_ASSET_CONFIGS: MYXAssetConfigs = {\n USDT: {\n mainnet: {\n chainId: MYX_MAINNET_CAIP_CHAIN_ID,\n tokenAddress: MYX_COLLATERAL_TOKEN_MAINNET,\n },\n testnet: {\n chainId: MYX_TESTNET_CAIP_CHAIN_ID,\n tokenAddress: MYX_COLLATERAL_TOKEN_TESTNET,\n },\n },\n};\n\n// ============================================================================\n// Decimal Conversion Helpers\n// ============================================================================\n\n/**\n * Convert MYX API price string to standard number.\n *\n * MYX API returns normal floating-point price strings (e.g. \"64854.76\"),\n * NOT 30-decimal scaled integers. This is a simple parseFloat.\n *\n * @param myxPrice - Price string from MYX API (e.g. \"64854.760266796727\")\n * @returns Standard decimal number\n */\nexport function fromMYXPrice(myxPrice: string): number {\n if (!myxPrice || myxPrice === '0') {\n return 0;\n }\n\n const parsed = parseFloat(myxPrice);\n return isNaN(parsed) ? 0 : parsed;\n}\n\n/**\n * Convert standard number to MYX API price string.\n *\n * MYX API uses normal floating-point strings, so this is a simple toString.\n *\n * @param price - Standard decimal number\n * @returns Price string for MYX API\n */\nexport function toMYXPrice(price: number | string): string {\n const parsed = typeof price === 'string' ? parseFloat(price) : price;\n return isNaN(parsed) ? '0' : parsed.toString();\n}\n\n/**\n * Convert MYX SDK size (18 decimals) to standard number\n *\n * @param myxSize - Size string in 18-decimal format from SDK\n * @returns Standard decimal number\n */\nexport function fromMYXSize(myxSize: string): number {\n if (!myxSize || myxSize === '0') {\n return 0;\n }\n\n try {\n const bn = new BigNumber(myxSize);\n if (bn.isNaN()) {\n return 0;\n }\n const divisor = new BigNumber(10).pow(MYX_SIZE_DECIMALS);\n return bn.dividedBy(divisor).toNumber();\n } catch {\n return 0;\n }\n}\n\n/**\n * Convert standard number to MYX SDK size format (18 decimals)\n *\n * @param size - Standard decimal number\n * @returns Size string in 18-decimal format for SDK\n */\nexport function toMYXSize(size: number | string): string {\n try {\n const bn = new BigNumber(size);\n if (bn.isNaN()) {\n return '0';\n }\n const multiplier = new BigNumber(10).pow(MYX_SIZE_DECIMALS);\n return bn.multipliedBy(multiplier).toFixed(0);\n } catch {\n return '0';\n }\n}\n\n/**\n * Convert MYX SDK collateral (18 decimals) to standard number\n *\n * @param myxCollateral - Collateral string in 18-decimal format from SDK\n * @returns Standard decimal number\n */\nexport function fromMYXCollateral(myxCollateral: string): number {\n if (!myxCollateral || myxCollateral === '0') {\n return 0;\n }\n\n try {\n const bn = new BigNumber(myxCollateral);\n if (bn.isNaN()) {\n return 0;\n }\n const divisor = new BigNumber(10).pow(MYX_COLLATERAL_DECIMALS);\n return bn.dividedBy(divisor).toNumber();\n } catch {\n return 0;\n }\n}\n\n// ============================================================================\n// REST API Configuration\n// ============================================================================\n\n/**\n * Price polling interval in milliseconds\n * Using 5 seconds as a fallback for unreliable WebSocket\n */\nexport const MYX_PRICE_POLLING_INTERVAL_MS = 5000;\n\n/**\n * HTTP request timeout in milliseconds\n */\nexport const MYX_HTTP_TIMEOUT_MS = 10000;\n\n/**\n * Maximum retries for failed API requests\n */\nexport const MYX_MAX_RETRIES = 3;\n\n/**\n * Default slippage in basis points for MYX orders (1% — matches SDK default)\n */\nexport const MYX_DEFAULT_SLIPPAGE_BPS = 100;\n\n/**\n * Maximum leverage supported by MYX (most markets)\n */\nexport const MYX_MAX_LEVERAGE = 100;\n\n/**\n * Minimum order size in USD\n */\nexport const MYX_MINIMUM_ORDER_SIZE_USD = 10;\n\n/**\n * MYX fee rates (placeholder — will be replaced with per-market rates)\n */\nexport const MYX_FEE_RATE = 0.0005; // 0.05% total fee rate\nexport const MYX_PROTOCOL_FEE_RATE = 0.0005; // Protocol taker fee\n\n/**\n * USDT execution fee token address per network (used for order execution fees)\n */\nexport const MYX_EXECUTION_FEE_TOKEN: Record<MYXNetwork, string> = {\n testnet: MYX_COLLATERAL_TOKEN_TESTNET,\n mainnet: MYX_COLLATERAL_TOKEN_MAINNET,\n};\n"]}
@@ -503,6 +503,8 @@ exports.FUNDING_RATE_CONFIG = {
503
503
  exports.PROVIDER_CONFIG = {
504
504
  /** Default perpetual DEX provider when no explicit selection exists */
505
505
  DefaultProvider: 'hyperliquid',
506
+ /** Force MYX to testnet only (mainnet credentials not yet available) */
507
+ MYX_TESTNET_ONLY: false,
506
508
  /**
507
509
  * Force Lighter to testnet only. Off: Lighter follows the global network
508
510
  * toggle — mainnet reads AND writes are enabled (the initial rollout
@@ -542,16 +544,19 @@ function getProviderNetworkKey(state) {
542
544
  exports.getProviderNetworkKey = getProviderNetworkKey;
543
545
  /**
544
546
  * Build a provider:network cache key for a specific provider id.
545
- * Accounts for LIGHTER_TESTNET_ONLY: when set, Lighter stays on testnet
546
- * regardless of the global network flag.
547
+ * Accounts for MYX_TESTNET_ONLY: MYX is always on testnet regardless of the
548
+ * global network flag.
547
549
  *
548
- * @param providerId - The provider identifier (e.g. "hyperliquid", "lighter").
550
+ * @param providerId - The provider identifier (e.g. "hyperliquid", "myx").
549
551
  * @param isTestnet - Global testnet flag from controller state.
550
552
  * @returns Cache key in the format "provider:mainnet" or "provider:testnet".
551
553
  */
552
554
  function buildProviderCacheKey(providerId, isTestnet) {
553
555
  let effectiveTestnet = isTestnet;
554
- if (providerId === 'lighter') {
556
+ if (providerId === 'myx') {
557
+ effectiveTestnet = exports.PROVIDER_CONFIG.MYX_TESTNET_ONLY || isTestnet;
558
+ }
559
+ else if (providerId === 'lighter') {
555
560
  effectiveTestnet = exports.PROVIDER_CONFIG.LIGHTER_TESTNET_ONLY || isTestnet;
556
561
  }
557
562
  return `${providerId}:${effectiveTestnet ? 'testnet' : 'mainnet'}`;