@metamask-previews/perps-controller 15.1.0-preview-00a181c → 15.1.0-preview-cfd35b8dd
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -14
- package/dist/PerpsController-method-action-types.cjs.map +1 -1
- package/dist/PerpsController-method-action-types.d.cts +1 -20
- package/dist/PerpsController-method-action-types.d.cts.map +1 -1
- package/dist/PerpsController-method-action-types.d.mts +1 -20
- package/dist/PerpsController-method-action-types.d.mts.map +1 -1
- package/dist/PerpsController-method-action-types.mjs.map +1 -1
- package/dist/PerpsController.cjs +154 -65
- package/dist/PerpsController.cjs.map +1 -1
- package/dist/PerpsController.d.cts +43 -37
- package/dist/PerpsController.d.cts.map +1 -1
- package/dist/PerpsController.d.mts +43 -37
- package/dist/PerpsController.d.mts.map +1 -1
- package/dist/PerpsController.mjs +151 -64
- package/dist/PerpsController.mjs.map +1 -1
- package/dist/aggregation/SubscriptionMultiplexer.cjs +1 -1
- package/dist/aggregation/SubscriptionMultiplexer.cjs.map +1 -1
- package/dist/aggregation/SubscriptionMultiplexer.d.cts +1 -1
- package/dist/aggregation/SubscriptionMultiplexer.d.mts +1 -1
- package/dist/aggregation/SubscriptionMultiplexer.mjs +1 -1
- package/dist/aggregation/SubscriptionMultiplexer.mjs.map +1 -1
- package/dist/constants/index.cjs +1 -0
- package/dist/constants/index.cjs.map +1 -1
- package/dist/constants/index.d.cts +1 -0
- package/dist/constants/index.d.cts.map +1 -1
- package/dist/constants/index.d.mts +1 -0
- package/dist/constants/index.d.mts.map +1 -1
- package/dist/constants/index.mjs +1 -0
- package/dist/constants/index.mjs.map +1 -1
- package/dist/constants/myxConfig.cjs +253 -0
- package/dist/constants/myxConfig.cjs.map +1 -0
- package/dist/constants/myxConfig.d.cts +145 -0
- package/dist/constants/myxConfig.d.cts.map +1 -0
- package/dist/constants/myxConfig.d.mts +145 -0
- package/dist/constants/myxConfig.d.mts.map +1 -0
- package/dist/constants/myxConfig.mjs +243 -0
- package/dist/constants/myxConfig.mjs.map +1 -0
- package/dist/constants/perpsConfig.cjs +9 -4
- package/dist/constants/perpsConfig.cjs.map +1 -1
- package/dist/constants/perpsConfig.d.cts +5 -3
- package/dist/constants/perpsConfig.d.cts.map +1 -1
- package/dist/constants/perpsConfig.d.mts +5 -3
- package/dist/constants/perpsConfig.d.mts.map +1 -1
- package/dist/constants/perpsConfig.mjs +9 -4
- package/dist/constants/perpsConfig.mjs.map +1 -1
- package/dist/index.cjs +175 -146
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -1
- package/dist/providers/AggregatedPerpsProvider.cjs +2 -8
- package/dist/providers/AggregatedPerpsProvider.cjs.map +1 -1
- package/dist/providers/AggregatedPerpsProvider.d.cts +2 -3
- package/dist/providers/AggregatedPerpsProvider.d.cts.map +1 -1
- package/dist/providers/AggregatedPerpsProvider.d.mts +2 -3
- package/dist/providers/AggregatedPerpsProvider.d.mts.map +1 -1
- package/dist/providers/AggregatedPerpsProvider.mjs +2 -8
- package/dist/providers/AggregatedPerpsProvider.mjs.map +1 -1
- package/dist/providers/HyperLiquidProvider.cjs +22 -118
- package/dist/providers/HyperLiquidProvider.cjs.map +1 -1
- package/dist/providers/HyperLiquidProvider.d.cts +0 -31
- package/dist/providers/HyperLiquidProvider.d.cts.map +1 -1
- package/dist/providers/HyperLiquidProvider.d.mts +0 -31
- package/dist/providers/HyperLiquidProvider.d.mts.map +1 -1
- package/dist/providers/HyperLiquidProvider.mjs +22 -118
- package/dist/providers/HyperLiquidProvider.mjs.map +1 -1
- package/dist/providers/LighterProvider.cjs +1 -1
- package/dist/providers/LighterProvider.cjs.map +1 -1
- package/dist/providers/LighterProvider.mjs +1 -1
- package/dist/providers/LighterProvider.mjs.map +1 -1
- package/dist/routing/ProviderRouter.cjs +1 -1
- package/dist/routing/ProviderRouter.cjs.map +1 -1
- package/dist/routing/ProviderRouter.d.cts +1 -1
- package/dist/routing/ProviderRouter.d.mts +1 -1
- package/dist/routing/ProviderRouter.mjs +1 -1
- package/dist/routing/ProviderRouter.mjs.map +1 -1
- package/dist/services/HyperLiquidClientService.cjs.map +1 -1
- package/dist/services/HyperLiquidClientService.d.cts +16 -26
- package/dist/services/HyperLiquidClientService.d.cts.map +1 -1
- package/dist/services/HyperLiquidClientService.d.mts +16 -26
- package/dist/services/HyperLiquidClientService.d.mts.map +1 -1
- package/dist/services/HyperLiquidClientService.mjs.map +1 -1
- package/dist/services/HyperLiquidWalletService.cjs +30 -80
- package/dist/services/HyperLiquidWalletService.cjs.map +1 -1
- package/dist/services/HyperLiquidWalletService.d.cts +22 -48
- package/dist/services/HyperLiquidWalletService.d.cts.map +1 -1
- package/dist/services/HyperLiquidWalletService.d.mts +22 -48
- package/dist/services/HyperLiquidWalletService.d.mts.map +1 -1
- package/dist/services/HyperLiquidWalletService.mjs +30 -80
- package/dist/services/HyperLiquidWalletService.mjs.map +1 -1
- package/dist/services/LighterWalletService.cjs +1 -1
- package/dist/services/LighterWalletService.cjs.map +1 -1
- package/dist/services/LighterWalletService.d.cts +1 -1
- package/dist/services/LighterWalletService.d.mts +1 -1
- package/dist/services/LighterWalletService.mjs +1 -1
- package/dist/services/LighterWalletService.mjs.map +1 -1
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.cts +16 -10
- package/dist/types/index.d.cts.map +1 -1
- package/dist/types/index.d.mts +16 -10
- package/dist/types/index.d.mts.map +1 -1
- package/dist/types/index.mjs.map +1 -1
- package/dist/types/myx-types.cjs +41 -0
- package/dist/types/myx-types.cjs.map +1 -0
- package/dist/types/myx-types.d.cts +94 -0
- package/dist/types/myx-types.d.cts.map +1 -0
- package/dist/types/myx-types.d.mts +94 -0
- package/dist/types/myx-types.d.mts.map +1 -0
- package/dist/types/myx-types.mjs +26 -0
- package/dist/types/myx-types.mjs.map +1 -0
- package/dist/utils/lighterAdapter.cjs +2 -1
- package/dist/utils/lighterAdapter.cjs.map +1 -1
- package/dist/utils/lighterAdapter.d.cts +2 -1
- package/dist/utils/lighterAdapter.d.cts.map +1 -1
- package/dist/utils/lighterAdapter.d.mts +2 -1
- package/dist/utils/lighterAdapter.d.mts.map +1 -1
- package/dist/utils/lighterAdapter.mjs +2 -1
- package/dist/utils/lighterAdapter.mjs.map +1 -1
- package/dist/utils/myxAdapter.cjs +569 -0
- package/dist/utils/myxAdapter.cjs.map +1 -0
- package/dist/utils/myxAdapter.d.cts +168 -0
- package/dist/utils/myxAdapter.d.cts.map +1 -0
- package/dist/utils/myxAdapter.d.mts +168 -0
- package/dist/utils/myxAdapter.d.mts.map +1 -0
- package/dist/utils/myxAdapter.mjs +548 -0
- package/dist/utils/myxAdapter.mjs.map +1 -0
- package/package.json +8 -2
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MYX SDK Adapter Utilities
|
|
3
|
+
*
|
|
4
|
+
* Adapters for transforming between MetaMask Perps API types and MYX SDK types.
|
|
5
|
+
* Includes adapters for market display, positions, orders, account state, and fills.
|
|
6
|
+
*
|
|
7
|
+
* Portable: no mobile-specific imports.
|
|
8
|
+
* Formatters are injected via MarketDataFormatters interface (same pattern as marketDataTransform.ts).
|
|
9
|
+
*
|
|
10
|
+
* Key differences from HyperLiquid:
|
|
11
|
+
* - API prices are normal floats (SDK contract layer uses 30 decimals internally)
|
|
12
|
+
* - Sizes use 18 decimals (vs HyperLiquid's szDecimals per asset)
|
|
13
|
+
* - Multiple pools can exist per symbol (MPM model)
|
|
14
|
+
* - USDT collateral (vs USDC)
|
|
15
|
+
*/
|
|
16
|
+
import type { AccountState, CandleStick, Funding, MarketInfo, Order, OrderFill, PerpsMarketData, Position, MarketDataFormatters, UserHistoryItem } from "../types/index.cjs";
|
|
17
|
+
import type { MYXPoolSymbol, MYXTicker, MYXPositionType, MYXHistoryOrderItem, MYXTradeFlowItem, MYXKlineData, MYXKlineWsData } from "../types/myx-types.cjs";
|
|
18
|
+
/**
|
|
19
|
+
* Transform MYX Pool/Market info to MetaMask Perps API MarketInfo format
|
|
20
|
+
*
|
|
21
|
+
* @param pool - Pool symbol data from MYX SDK (PoolSymbolAllResponse)
|
|
22
|
+
* @returns MetaMask Perps API market info object
|
|
23
|
+
*/
|
|
24
|
+
export declare function adaptMarketFromMYX(pool: MYXPoolSymbol): MarketInfo;
|
|
25
|
+
/**
|
|
26
|
+
* Convert MYX ticker data to price and change values
|
|
27
|
+
*
|
|
28
|
+
* @param ticker - Ticker data from MYX SDK
|
|
29
|
+
* @returns Object with price string and 24h change percentage
|
|
30
|
+
*/
|
|
31
|
+
export declare function adaptPriceFromMYX(ticker: MYXTicker): {
|
|
32
|
+
price: string;
|
|
33
|
+
change24h: number;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Transform MYX pool and ticker to PerpsMarketData for UI display
|
|
37
|
+
*
|
|
38
|
+
* @param pool - Pool symbol data from MYX SDK
|
|
39
|
+
* @param ticker - Optional ticker data for price info
|
|
40
|
+
* @param formatters - Injectable formatters for platform-agnostic formatting
|
|
41
|
+
* @returns Formatted market data for UI display
|
|
42
|
+
*/
|
|
43
|
+
export declare function adaptMarketDataFromMYX(pool: MYXPoolSymbol, ticker: MYXTicker | undefined, formatters: MarketDataFormatters): PerpsMarketData;
|
|
44
|
+
/**
|
|
45
|
+
* Filter MYX markets to only include MYX-exclusive markets
|
|
46
|
+
* Removes markets that overlap with HyperLiquid
|
|
47
|
+
*
|
|
48
|
+
* @param pools - Array of MYX pool symbols
|
|
49
|
+
* @returns Filtered array with only MYX-exclusive markets
|
|
50
|
+
*/
|
|
51
|
+
export declare function filterMYXExclusiveMarkets(pools: MYXPoolSymbol[]): MYXPoolSymbol[];
|
|
52
|
+
/**
|
|
53
|
+
* Check if a symbol overlaps with HyperLiquid markets
|
|
54
|
+
*
|
|
55
|
+
* @param symbol - Market symbol to check
|
|
56
|
+
* @returns true if the symbol is available on both MYX and HyperLiquid
|
|
57
|
+
*/
|
|
58
|
+
export declare function isOverlappingMarket(symbol: string): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Build a map of poolId to symbol for quick lookup
|
|
61
|
+
*
|
|
62
|
+
* @param pools - Array of MYX pool symbols
|
|
63
|
+
* @returns Map of poolId to symbol
|
|
64
|
+
*/
|
|
65
|
+
export declare function buildPoolSymbolMap(pools: MYXPoolSymbol[]): Map<string, string>;
|
|
66
|
+
/**
|
|
67
|
+
* Build a map of symbol to poolIds (for multi-pool support)
|
|
68
|
+
*
|
|
69
|
+
* @param pools - Array of MYX pool symbols
|
|
70
|
+
* @returns Map of symbol to array of poolIds
|
|
71
|
+
*/
|
|
72
|
+
export declare function buildSymbolPoolsMap(pools: MYXPoolSymbol[]): Map<string, string[]>;
|
|
73
|
+
/**
|
|
74
|
+
* Extract symbol from pool ID
|
|
75
|
+
* Pool IDs typically contain the symbol as a suffix or can be parsed.
|
|
76
|
+
* When baseSymbol is unavailable, returns a truncated address for UI display.
|
|
77
|
+
*
|
|
78
|
+
* @param poolId - MYX pool ID string
|
|
79
|
+
* @returns Extracted symbol or truncated poolId as fallback
|
|
80
|
+
*/
|
|
81
|
+
export declare function extractSymbolFromPoolId(poolId: string): string;
|
|
82
|
+
/**
|
|
83
|
+
* Adapt MYX SDK PositionType to MetaMask Position
|
|
84
|
+
*
|
|
85
|
+
* @param pos - MYX position from SDK
|
|
86
|
+
* @param poolSymbolMap - Map of poolId to symbol
|
|
87
|
+
* @returns MetaMask Position object
|
|
88
|
+
*/
|
|
89
|
+
export declare function adaptPositionFromMYX(pos: MYXPositionType, poolSymbolMap: Map<string, string>): Position;
|
|
90
|
+
/**
|
|
91
|
+
* Adapt MYX SDK open order (PositionType-shaped from getOrders) to MetaMask Order.
|
|
92
|
+
* Note: getOrders returns PositionType[] per the SDK types.
|
|
93
|
+
* For richer order data, use getOrderHistory.
|
|
94
|
+
*
|
|
95
|
+
* @param historyOrder - MYX history order item
|
|
96
|
+
* @param poolSymbolMap - Map of poolId to symbol
|
|
97
|
+
* @returns MetaMask Order object
|
|
98
|
+
*/
|
|
99
|
+
export declare function adaptOrderFromMYX(historyOrder: MYXHistoryOrderItem, poolSymbolMap: Map<string, string>): Order;
|
|
100
|
+
/**
|
|
101
|
+
* Adapt MYX account info response to MetaMask AccountState.
|
|
102
|
+
*
|
|
103
|
+
* @param accountInfo - Raw account info from MYX SDK
|
|
104
|
+
* @param walletBalance - Wallet USDT balance (from getWalletQuoteTokenBalance)
|
|
105
|
+
* @returns MetaMask AccountState
|
|
106
|
+
*/
|
|
107
|
+
export declare function adaptAccountStateFromMYX(accountInfo: Record<string, unknown> | undefined, walletBalance?: string): AccountState;
|
|
108
|
+
/**
|
|
109
|
+
* Adapt MYX history order item (filled) to MetaMask OrderFill
|
|
110
|
+
*
|
|
111
|
+
* @param order - MYX history order item
|
|
112
|
+
* @param poolSymbolMap - Map of poolId to symbol
|
|
113
|
+
* @returns MetaMask OrderFill
|
|
114
|
+
*/
|
|
115
|
+
export declare function adaptOrderFillFromMYX(order: MYXHistoryOrderItem, poolSymbolMap: Map<string, string>): OrderFill;
|
|
116
|
+
/**
|
|
117
|
+
* Adapt MYX trade flow items (funding type) to MetaMask Funding
|
|
118
|
+
*
|
|
119
|
+
* @param flows - MYX trade flow items filtered to funding type
|
|
120
|
+
* @param poolSymbolMap - Map of poolId to symbol
|
|
121
|
+
* @returns Array of MetaMask Funding objects
|
|
122
|
+
*/
|
|
123
|
+
export declare function adaptFundingFromMYX(flows: MYXTradeFlowItem[], poolSymbolMap: Map<string, string>): Funding[];
|
|
124
|
+
/**
|
|
125
|
+
* Adapt MYX trade flow items to MetaMask UserHistoryItem
|
|
126
|
+
*
|
|
127
|
+
* @param flows - MYX trade flow items
|
|
128
|
+
* @returns Array of UserHistoryItem
|
|
129
|
+
*/
|
|
130
|
+
export declare function adaptUserHistoryFromMYX(flows: MYXTradeFlowItem[]): UserHistoryItem[];
|
|
131
|
+
/**
|
|
132
|
+
* Adapt MYX KlineDataItemType to MetaMask CandleStick.
|
|
133
|
+
* KlineDataItemType fields (time, open, close, high, low) are already
|
|
134
|
+
* human-readable strings — no 30-decimal conversion needed.
|
|
135
|
+
*
|
|
136
|
+
* @param item - MYX kline data item from SDK
|
|
137
|
+
* @returns MetaMask CandleStick object
|
|
138
|
+
*/
|
|
139
|
+
export declare function adaptCandleFromMYX(item: MYXKlineData): CandleStick;
|
|
140
|
+
/**
|
|
141
|
+
* Adapt MYX WebSocket KlineData to MetaMask CandleStick.
|
|
142
|
+
* WS KlineData uses single-letter fields: {t, o, h, l, c, v}.
|
|
143
|
+
*
|
|
144
|
+
* @param data - MYX WebSocket kline data
|
|
145
|
+
* @returns MetaMask CandleStick object
|
|
146
|
+
*/
|
|
147
|
+
export declare function adaptCandleFromMYXWebSocket(data: MYXKlineWsData): CandleStick;
|
|
148
|
+
/**
|
|
149
|
+
* Convert a CandlePeriod string to MYX KlineResolution.
|
|
150
|
+
*
|
|
151
|
+
* @param period - CandlePeriod value (e.g., '1m', '3m', '1h')
|
|
152
|
+
* @returns MYX KlineResolution string
|
|
153
|
+
*/
|
|
154
|
+
export declare function toMYXKlineResolution(period: string): string;
|
|
155
|
+
/**
|
|
156
|
+
* Assert MYX API response is successful.
|
|
157
|
+
* MYX uses code 9200 or 0 for success.
|
|
158
|
+
*
|
|
159
|
+
* @param response - MYX API response with code field
|
|
160
|
+
* @param response.code - Response code (9200 or 0 = success)
|
|
161
|
+
* @param response.message - Optional error message
|
|
162
|
+
* @param context - Context string for error messages
|
|
163
|
+
*/
|
|
164
|
+
export declare function assertMYXSuccess(response: {
|
|
165
|
+
code: number;
|
|
166
|
+
message?: string | null;
|
|
167
|
+
}, context: string): void;
|
|
168
|
+
//# sourceMappingURL=myxAdapter.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"myxAdapter.d.cts","sourceRoot":"","sources":["../../src/utils/myxAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MYX SDK Adapter Utilities
|
|
3
|
+
*
|
|
4
|
+
* Adapters for transforming between MetaMask Perps API types and MYX SDK types.
|
|
5
|
+
* Includes adapters for market display, positions, orders, account state, and fills.
|
|
6
|
+
*
|
|
7
|
+
* Portable: no mobile-specific imports.
|
|
8
|
+
* Formatters are injected via MarketDataFormatters interface (same pattern as marketDataTransform.ts).
|
|
9
|
+
*
|
|
10
|
+
* Key differences from HyperLiquid:
|
|
11
|
+
* - API prices are normal floats (SDK contract layer uses 30 decimals internally)
|
|
12
|
+
* - Sizes use 18 decimals (vs HyperLiquid's szDecimals per asset)
|
|
13
|
+
* - Multiple pools can exist per symbol (MPM model)
|
|
14
|
+
* - USDT collateral (vs USDC)
|
|
15
|
+
*/
|
|
16
|
+
import type { AccountState, CandleStick, Funding, MarketInfo, Order, OrderFill, PerpsMarketData, Position, MarketDataFormatters, UserHistoryItem } from "../types/index.mjs";
|
|
17
|
+
import type { MYXPoolSymbol, MYXTicker, MYXPositionType, MYXHistoryOrderItem, MYXTradeFlowItem, MYXKlineData, MYXKlineWsData } from "../types/myx-types.mjs";
|
|
18
|
+
/**
|
|
19
|
+
* Transform MYX Pool/Market info to MetaMask Perps API MarketInfo format
|
|
20
|
+
*
|
|
21
|
+
* @param pool - Pool symbol data from MYX SDK (PoolSymbolAllResponse)
|
|
22
|
+
* @returns MetaMask Perps API market info object
|
|
23
|
+
*/
|
|
24
|
+
export declare function adaptMarketFromMYX(pool: MYXPoolSymbol): MarketInfo;
|
|
25
|
+
/**
|
|
26
|
+
* Convert MYX ticker data to price and change values
|
|
27
|
+
*
|
|
28
|
+
* @param ticker - Ticker data from MYX SDK
|
|
29
|
+
* @returns Object with price string and 24h change percentage
|
|
30
|
+
*/
|
|
31
|
+
export declare function adaptPriceFromMYX(ticker: MYXTicker): {
|
|
32
|
+
price: string;
|
|
33
|
+
change24h: number;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Transform MYX pool and ticker to PerpsMarketData for UI display
|
|
37
|
+
*
|
|
38
|
+
* @param pool - Pool symbol data from MYX SDK
|
|
39
|
+
* @param ticker - Optional ticker data for price info
|
|
40
|
+
* @param formatters - Injectable formatters for platform-agnostic formatting
|
|
41
|
+
* @returns Formatted market data for UI display
|
|
42
|
+
*/
|
|
43
|
+
export declare function adaptMarketDataFromMYX(pool: MYXPoolSymbol, ticker: MYXTicker | undefined, formatters: MarketDataFormatters): PerpsMarketData;
|
|
44
|
+
/**
|
|
45
|
+
* Filter MYX markets to only include MYX-exclusive markets
|
|
46
|
+
* Removes markets that overlap with HyperLiquid
|
|
47
|
+
*
|
|
48
|
+
* @param pools - Array of MYX pool symbols
|
|
49
|
+
* @returns Filtered array with only MYX-exclusive markets
|
|
50
|
+
*/
|
|
51
|
+
export declare function filterMYXExclusiveMarkets(pools: MYXPoolSymbol[]): MYXPoolSymbol[];
|
|
52
|
+
/**
|
|
53
|
+
* Check if a symbol overlaps with HyperLiquid markets
|
|
54
|
+
*
|
|
55
|
+
* @param symbol - Market symbol to check
|
|
56
|
+
* @returns true if the symbol is available on both MYX and HyperLiquid
|
|
57
|
+
*/
|
|
58
|
+
export declare function isOverlappingMarket(symbol: string): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Build a map of poolId to symbol for quick lookup
|
|
61
|
+
*
|
|
62
|
+
* @param pools - Array of MYX pool symbols
|
|
63
|
+
* @returns Map of poolId to symbol
|
|
64
|
+
*/
|
|
65
|
+
export declare function buildPoolSymbolMap(pools: MYXPoolSymbol[]): Map<string, string>;
|
|
66
|
+
/**
|
|
67
|
+
* Build a map of symbol to poolIds (for multi-pool support)
|
|
68
|
+
*
|
|
69
|
+
* @param pools - Array of MYX pool symbols
|
|
70
|
+
* @returns Map of symbol to array of poolIds
|
|
71
|
+
*/
|
|
72
|
+
export declare function buildSymbolPoolsMap(pools: MYXPoolSymbol[]): Map<string, string[]>;
|
|
73
|
+
/**
|
|
74
|
+
* Extract symbol from pool ID
|
|
75
|
+
* Pool IDs typically contain the symbol as a suffix or can be parsed.
|
|
76
|
+
* When baseSymbol is unavailable, returns a truncated address for UI display.
|
|
77
|
+
*
|
|
78
|
+
* @param poolId - MYX pool ID string
|
|
79
|
+
* @returns Extracted symbol or truncated poolId as fallback
|
|
80
|
+
*/
|
|
81
|
+
export declare function extractSymbolFromPoolId(poolId: string): string;
|
|
82
|
+
/**
|
|
83
|
+
* Adapt MYX SDK PositionType to MetaMask Position
|
|
84
|
+
*
|
|
85
|
+
* @param pos - MYX position from SDK
|
|
86
|
+
* @param poolSymbolMap - Map of poolId to symbol
|
|
87
|
+
* @returns MetaMask Position object
|
|
88
|
+
*/
|
|
89
|
+
export declare function adaptPositionFromMYX(pos: MYXPositionType, poolSymbolMap: Map<string, string>): Position;
|
|
90
|
+
/**
|
|
91
|
+
* Adapt MYX SDK open order (PositionType-shaped from getOrders) to MetaMask Order.
|
|
92
|
+
* Note: getOrders returns PositionType[] per the SDK types.
|
|
93
|
+
* For richer order data, use getOrderHistory.
|
|
94
|
+
*
|
|
95
|
+
* @param historyOrder - MYX history order item
|
|
96
|
+
* @param poolSymbolMap - Map of poolId to symbol
|
|
97
|
+
* @returns MetaMask Order object
|
|
98
|
+
*/
|
|
99
|
+
export declare function adaptOrderFromMYX(historyOrder: MYXHistoryOrderItem, poolSymbolMap: Map<string, string>): Order;
|
|
100
|
+
/**
|
|
101
|
+
* Adapt MYX account info response to MetaMask AccountState.
|
|
102
|
+
*
|
|
103
|
+
* @param accountInfo - Raw account info from MYX SDK
|
|
104
|
+
* @param walletBalance - Wallet USDT balance (from getWalletQuoteTokenBalance)
|
|
105
|
+
* @returns MetaMask AccountState
|
|
106
|
+
*/
|
|
107
|
+
export declare function adaptAccountStateFromMYX(accountInfo: Record<string, unknown> | undefined, walletBalance?: string): AccountState;
|
|
108
|
+
/**
|
|
109
|
+
* Adapt MYX history order item (filled) to MetaMask OrderFill
|
|
110
|
+
*
|
|
111
|
+
* @param order - MYX history order item
|
|
112
|
+
* @param poolSymbolMap - Map of poolId to symbol
|
|
113
|
+
* @returns MetaMask OrderFill
|
|
114
|
+
*/
|
|
115
|
+
export declare function adaptOrderFillFromMYX(order: MYXHistoryOrderItem, poolSymbolMap: Map<string, string>): OrderFill;
|
|
116
|
+
/**
|
|
117
|
+
* Adapt MYX trade flow items (funding type) to MetaMask Funding
|
|
118
|
+
*
|
|
119
|
+
* @param flows - MYX trade flow items filtered to funding type
|
|
120
|
+
* @param poolSymbolMap - Map of poolId to symbol
|
|
121
|
+
* @returns Array of MetaMask Funding objects
|
|
122
|
+
*/
|
|
123
|
+
export declare function adaptFundingFromMYX(flows: MYXTradeFlowItem[], poolSymbolMap: Map<string, string>): Funding[];
|
|
124
|
+
/**
|
|
125
|
+
* Adapt MYX trade flow items to MetaMask UserHistoryItem
|
|
126
|
+
*
|
|
127
|
+
* @param flows - MYX trade flow items
|
|
128
|
+
* @returns Array of UserHistoryItem
|
|
129
|
+
*/
|
|
130
|
+
export declare function adaptUserHistoryFromMYX(flows: MYXTradeFlowItem[]): UserHistoryItem[];
|
|
131
|
+
/**
|
|
132
|
+
* Adapt MYX KlineDataItemType to MetaMask CandleStick.
|
|
133
|
+
* KlineDataItemType fields (time, open, close, high, low) are already
|
|
134
|
+
* human-readable strings — no 30-decimal conversion needed.
|
|
135
|
+
*
|
|
136
|
+
* @param item - MYX kline data item from SDK
|
|
137
|
+
* @returns MetaMask CandleStick object
|
|
138
|
+
*/
|
|
139
|
+
export declare function adaptCandleFromMYX(item: MYXKlineData): CandleStick;
|
|
140
|
+
/**
|
|
141
|
+
* Adapt MYX WebSocket KlineData to MetaMask CandleStick.
|
|
142
|
+
* WS KlineData uses single-letter fields: {t, o, h, l, c, v}.
|
|
143
|
+
*
|
|
144
|
+
* @param data - MYX WebSocket kline data
|
|
145
|
+
* @returns MetaMask CandleStick object
|
|
146
|
+
*/
|
|
147
|
+
export declare function adaptCandleFromMYXWebSocket(data: MYXKlineWsData): CandleStick;
|
|
148
|
+
/**
|
|
149
|
+
* Convert a CandlePeriod string to MYX KlineResolution.
|
|
150
|
+
*
|
|
151
|
+
* @param period - CandlePeriod value (e.g., '1m', '3m', '1h')
|
|
152
|
+
* @returns MYX KlineResolution string
|
|
153
|
+
*/
|
|
154
|
+
export declare function toMYXKlineResolution(period: string): string;
|
|
155
|
+
/**
|
|
156
|
+
* Assert MYX API response is successful.
|
|
157
|
+
* MYX uses code 9200 or 0 for success.
|
|
158
|
+
*
|
|
159
|
+
* @param response - MYX API response with code field
|
|
160
|
+
* @param response.code - Response code (9200 or 0 = success)
|
|
161
|
+
* @param response.message - Optional error message
|
|
162
|
+
* @param context - Context string for error messages
|
|
163
|
+
*/
|
|
164
|
+
export declare function assertMYXSuccess(response: {
|
|
165
|
+
code: number;
|
|
166
|
+
message?: string | null;
|
|
167
|
+
}, context: string): void;
|
|
168
|
+
//# sourceMappingURL=myxAdapter.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"myxAdapter.d.mts","sourceRoot":"","sources":["../../src/utils/myxAdapter.ts"],"names":[],"mappings":"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"}
|