@reyaxyz/common 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/LICENSE.md +1 -0
  2. package/README.md +18 -0
  3. package/dist/commands/exposure/command.js +448 -0
  4. package/dist/commands/exposure/command.js.map +1 -0
  5. package/dist/commands/exposure/index.js +19 -0
  6. package/dist/commands/exposure/index.js.map +1 -0
  7. package/dist/commands/exposure/types.js +3 -0
  8. package/dist/commands/exposure/types.js.map +1 -0
  9. package/dist/commands/index.js +18 -0
  10. package/dist/commands/index.js.map +1 -0
  11. package/dist/index.js +20 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/types/commands/exposure/command.d.ts +58 -0
  14. package/dist/types/commands/exposure/command.d.ts.map +1 -0
  15. package/dist/types/commands/exposure/index.d.ts +3 -0
  16. package/dist/types/commands/exposure/index.d.ts.map +1 -0
  17. package/dist/types/commands/exposure/types.d.ts +113 -0
  18. package/dist/types/commands/exposure/types.d.ts.map +1 -0
  19. package/dist/types/commands/index.d.ts +2 -0
  20. package/dist/types/commands/index.d.ts.map +1 -0
  21. package/dist/types/index.d.ts +4 -0
  22. package/dist/types/index.d.ts.map +1 -0
  23. package/dist/types/types.d.ts +178 -0
  24. package/dist/types/types.d.ts.map +1 -0
  25. package/dist/types/utils/index.d.ts +2 -0
  26. package/dist/types/utils/index.d.ts.map +1 -0
  27. package/dist/types/utils/number.d.ts +3 -0
  28. package/dist/types/utils/number.d.ts.map +1 -0
  29. package/dist/types.js +30 -0
  30. package/dist/types.js.map +1 -0
  31. package/dist/utils/index.js +18 -0
  32. package/dist/utils/index.js.map +1 -0
  33. package/dist/utils/number.js +13 -0
  34. package/dist/utils/number.js.map +1 -0
  35. package/package.json +44 -0
  36. package/src/commands/exposure/command.ts +799 -0
  37. package/src/commands/exposure/index.ts +2 -0
  38. package/src/commands/exposure/types.ts +125 -0
  39. package/src/commands/index.ts +1 -0
  40. package/src/index.ts +3 -0
  41. package/src/types.ts +213 -0
  42. package/src/utils/index.ts +1 -0
  43. package/src/utils/number.ts +8 -0
@@ -0,0 +1,2 @@
1
+ export * from './command';
2
+ export * from './types';
@@ -0,0 +1,125 @@
1
+ import BigNumber from 'bignumber.js';
2
+
3
+ export interface MarketStorage {
4
+ market_id: number;
5
+ quote_collateral: string;
6
+ instrument_address: string;
7
+ name: string;
8
+ risk_block_id: number;
9
+ collateral_pool_id: number;
10
+ block_timestamp: number;
11
+ block_number: number;
12
+ }
13
+
14
+ export interface MarketConfiguration {
15
+ market_id: number;
16
+ risk_matrix_index: number;
17
+ max_open_base: number;
18
+ velocity_multiplier: number;
19
+ minimum_order_base: number;
20
+ base_spacing: number;
21
+ price_spacing: number;
22
+ oracle_node_id: string;
23
+ mtm_window: number;
24
+ dutch_config_lambda: number;
25
+ dutch_config_min_base: number;
26
+ slippage_params_phi: number;
27
+ slippage_params_beta: number;
28
+ block_timestamp: number;
29
+ block_number: number;
30
+ }
31
+
32
+ export type AccountAssetBalance = {
33
+ accountId: number;
34
+ collateral: string;
35
+ amount: number;
36
+ };
37
+
38
+ export interface RiskMultipliersConfiguration {
39
+ collateral_pool_id: number;
40
+ im_multiplier: number;
41
+ mmr_multiplier: number;
42
+ dutch_multiplier: number;
43
+ adl_multiplier: number;
44
+ im_buffer_multiplier: number;
45
+ block_timestamp: number;
46
+ block_number: number;
47
+ }
48
+
49
+ export interface RiskMatrix {
50
+ collateral_pool_id: number;
51
+ risk_block_id: number;
52
+ matrix: BigNumber[][];
53
+ }
54
+ export type MarketIdToOraclePriceMap = {
55
+ [marketId: number]: number;
56
+ };
57
+
58
+ export type CollateralAddressToExchangePriceMap = {
59
+ [address: string]: number;
60
+ };
61
+
62
+ export interface ExchangeInfo {
63
+ price: number;
64
+ priceHaircut: number;
65
+ autoExchangeDiscount: number;
66
+ tokenAddress: string;
67
+ }
68
+
69
+ export interface PositionInfo {
70
+ base: BigNumber;
71
+ realized_pnl: BigNumber;
72
+ last_price: BigNumber;
73
+ last_timestamp: BigNumber;
74
+ funding_value: BigNumber;
75
+ base_multiplier: BigNumber;
76
+ adl_unwind_price: BigNumber;
77
+ market_id: number;
78
+ }
79
+
80
+ export type PositionInfoMarketConfiguration = PositionInfo & {
81
+ market_configuration: MarketConfiguration;
82
+ };
83
+
84
+ export interface MarginInfo {
85
+ assetAddress: string;
86
+ marginBalance: number;
87
+ realBalance: number;
88
+ initialDelta: number;
89
+ maintenanceDelta: number;
90
+ liquidationDelta: number;
91
+ dutchDelta: number;
92
+ adlDelta: number;
93
+ initialBufferDelta: number;
94
+ liquidationMarginRequirement: number;
95
+ }
96
+
97
+ export interface CollateralInfo {
98
+ netDeposits: number;
99
+ marginBalance: number;
100
+ realBalance: number;
101
+ }
102
+
103
+ export type ExposureCommandState = {
104
+ rootCollateralPoolId: number;
105
+ oraclePricePerMarket: MarketIdToOraclePriceMap;
106
+ accountBalancePerAsset: AccountAssetBalance[];
107
+ groupedByCollateral: Record<string, AccountAssetBalance>;
108
+ riskMultipliers: RiskMultipliersConfiguration;
109
+ riskMatrices: RiskMatrix[];
110
+ exchangeInfoPerAsset: ExchangeInfo[];
111
+ positionInfoMarketConfiguration: PositionInfoMarketConfiguration[];
112
+ uniqueTokenAddresses: string[];
113
+ uniqueQuoteCollaterals: string[];
114
+ tokenMarginInfoPerAsset: MarginInfo[];
115
+ realizedPnLSum: BigNumber;
116
+ unrealizedPnLSum: BigNumber;
117
+ };
118
+
119
+ export type TradeSimulationState = {
120
+ feeParameter: BigNumber;
121
+ marketStorage: MarketStorage;
122
+ marketConfiguration: MarketConfiguration;
123
+ exposureDataAccount: ExposureCommandState;
124
+ exposureDataPassivePool: ExposureCommandState;
125
+ };
@@ -0,0 +1 @@
1
+ export * from './exposure';
package/src/index.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './types';
2
+ export * from './commands';
3
+ export * from './utils';
package/src/types.ts ADDED
@@ -0,0 +1,213 @@
1
+ // -- Markets --
2
+ export type MarketOrderInfo = {
3
+ counterpartyAccountIds: number[];
4
+ exchangeId: number;
5
+ };
6
+
7
+ export type MarketEntity = {
8
+ id: number;
9
+ ticker: string;
10
+ underlyingAsset: string;
11
+ quoteToken: string;
12
+ markPrice: number;
13
+ isActive: boolean;
14
+ maxLeverage: number;
15
+ volume24H: number;
16
+ priceChange24H: number;
17
+ priceChange24HPercentage: number;
18
+ openInterest: number;
19
+ fundingRate: number;
20
+ description: string;
21
+ orderInfo: MarketOrderInfo;
22
+ tickSizeDecimals: number;
23
+ chainId: SupportedChainId;
24
+ };
25
+
26
+ export enum SupportedChainId {
27
+ polygonMumbai = 80001,
28
+ reyaCronos = 1729,
29
+ }
30
+
31
+ export enum CandlesResolution {
32
+ ONE_MINUTE = '1MIN',
33
+ FIVE_MINUTES = '5MINS',
34
+ FIFTEEN_MINUTES = '15MINS',
35
+ THIRTY_MINUTES = '30MINS',
36
+ ONE_HOUR = '1HOUR',
37
+ FOUR_HOURS = '4HOURS',
38
+ ONE_DAY = '1DAY',
39
+ }
40
+
41
+ // -- Candles --
42
+ export interface Candle {
43
+ id: string;
44
+ startedAt: string;
45
+ ticker: string;
46
+ resolution: CandlesResolution;
47
+ low: string;
48
+ high: string;
49
+ open: string;
50
+ close: string;
51
+ baseTokenVolume: string;
52
+ usdVolume: string;
53
+ trades: number;
54
+ startingOpenInterest: string;
55
+ }
56
+
57
+ // -- Account --
58
+
59
+ export type Status = 'OPEN' | 'CLOSED' | 'LIQUIDATED' | 'FILLED';
60
+ export type Side = 'long' | 'short';
61
+
62
+ export type MarginAccountEntity = {
63
+ id: number;
64
+ name: string;
65
+ marginRatioHealth: 'danger' | 'healthy' | 'warning';
66
+ marginRatioPercentage: number;
67
+ totalBalance: number;
68
+ totalBalanceUnderlyingAsset: string;
69
+ collaterals: {
70
+ token: string;
71
+ percentage: number;
72
+ balance: number;
73
+ balanceRUSD: number;
74
+ }[];
75
+ };
76
+
77
+ export type PositionEntity = {
78
+ id: number;
79
+ side: Side;
80
+ size: number;
81
+ base: number;
82
+ price: number;
83
+ markPrice: number;
84
+ orderStatus: Status;
85
+ realisedPnl?: number | null;
86
+ unrealisedPnl?: number | null;
87
+ liquidationPrice: number;
88
+ fundingRate: number;
89
+ market: MarketEntity;
90
+ date: Date;
91
+ };
92
+
93
+ export type TradingHistoryEntity = {
94
+ id: number;
95
+ price: number;
96
+ priceUnderlyingToken: string;
97
+ size: number;
98
+ sizeUnderlyingToken: string;
99
+ timestampMillisecondsUTC: number;
100
+ };
101
+
102
+ export type OrderType = 'market';
103
+
104
+ export type PositionHistoryType =
105
+ | 'long-trade'
106
+ | 'short-trade'
107
+ | 'long-liquidation'
108
+ | 'short-liquidation';
109
+
110
+ export type PositionHistoryEntity = {
111
+ id: number;
112
+ action: PositionHistoryType;
113
+ orderType: OrderType;
114
+ size: number;
115
+ executionPrice: number;
116
+ realisedPnl?: number | null;
117
+ fees: number;
118
+ timestamp: number;
119
+ market: MarketEntity;
120
+ };
121
+
122
+ export type LpPoolEntity = {
123
+ id: number;
124
+ name: string;
125
+ description: string;
126
+ longDescription: string;
127
+ readMoreLink: string;
128
+ currentAPY: number;
129
+ balanceSupplied?: number | null;
130
+ apyChange24H: number;
131
+ tokenAddress: string;
132
+ token: string;
133
+ allowedChainsForLiquidity: number[];
134
+ chainId: SupportedChainId;
135
+ };
136
+
137
+ export type TransactionHistoryType = 'deposit' | 'withdrawal';
138
+
139
+ export type LpTransactionHistoryEntity = {
140
+ id: number;
141
+ type: TransactionHistoryType;
142
+ token: string;
143
+ amount: number;
144
+ transactionHash: string;
145
+ timestamp: number;
146
+ };
147
+
148
+ export type LpPositionEntity = {
149
+ id: number;
150
+ deposited: number;
151
+ currentBalance: number;
152
+ pnl: number;
153
+ fundingRate: number;
154
+ lpPool: LpPoolEntity;
155
+ };
156
+
157
+ export type MarginAccountTransactionHistoryType =
158
+ | 'deposit'
159
+ | 'withdrawal'
160
+ | 'transfer'
161
+ | 'auto_exchange';
162
+
163
+ export type MarginAccountTransactionHistoryEntity = {
164
+ id: number;
165
+ type: MarginAccountTransactionHistoryType;
166
+ token: string;
167
+ amount: number;
168
+ transactionHash: string;
169
+ timestamp: number;
170
+ };
171
+
172
+ export type TokenEntity = {
173
+ id: string;
174
+ address: string;
175
+ };
176
+ // TODO: Milan evaluate if these need to be in common. At moment of writting it was shared in api and api-sdk
177
+ // --- Lp Pool Balance ---
178
+ export enum BalanceGranularity {
179
+ ONE_MINUTE = 60 * 1000,
180
+ ONE_HOUR = 60 * 60 * 1000,
181
+ ONE_DAY = 24 * 60 * 60 * 1000,
182
+ ONE_WEEK = 7 * 24 * 60 * 60 * 1000,
183
+ ONE_MONTH = 30 * 24 * 60 * 60 * 1000,
184
+ ONE_YEAR = 365 * 24 * 60 * 60 * 1000,
185
+ }
186
+ // TODO: Milan evaluate if these need to be in common. At moment of writting it was shared in api and api-sdk
187
+ export type GetLpPoolBalanceChartDataResult = {
188
+ data: {
189
+ timestampInMs: number;
190
+ value: number;
191
+ }[];
192
+ tvl: number;
193
+ tvlChangePercentage: number;
194
+ apy: number;
195
+ apyChangePercentage: number;
196
+ };
197
+
198
+ // TODO: Milan evaluate if these need to be in common. At moment of writting it was shared in api and api-sdk
199
+ // - LP Account Performance -
200
+ export type GetLpPoolPerformanceChartDataResult = {
201
+ capitalInvestedData: {
202
+ timestampInMs: number;
203
+ value: number;
204
+ }[];
205
+ balanceData: {
206
+ timestampInMs: number;
207
+ value: number;
208
+ }[];
209
+ balance: number;
210
+ balanceChangePercentage: number;
211
+ capitalInvested: number;
212
+ capitalInvestedChangePercentage: number;
213
+ };
@@ -0,0 +1 @@
1
+ export * from './number';
@@ -0,0 +1,8 @@
1
+ import BigNumber from 'bignumber.js';
2
+
3
+ export function amountNormalizer(
4
+ value: BigNumber | number | string,
5
+ decimals: number = 18,
6
+ ): BigNumber {
7
+ return BigNumber(value).div(BigNumber(10).pow(decimals));
8
+ }