@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.
- package/LICENSE.md +1 -0
- package/README.md +18 -0
- package/dist/commands/exposure/command.js +448 -0
- package/dist/commands/exposure/command.js.map +1 -0
- package/dist/commands/exposure/index.js +19 -0
- package/dist/commands/exposure/index.js.map +1 -0
- package/dist/commands/exposure/types.js +3 -0
- package/dist/commands/exposure/types.js.map +1 -0
- package/dist/commands/index.js +18 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/types/commands/exposure/command.d.ts +58 -0
- package/dist/types/commands/exposure/command.d.ts.map +1 -0
- package/dist/types/commands/exposure/index.d.ts +3 -0
- package/dist/types/commands/exposure/index.d.ts.map +1 -0
- package/dist/types/commands/exposure/types.d.ts +113 -0
- package/dist/types/commands/exposure/types.d.ts.map +1 -0
- package/dist/types/commands/index.d.ts +2 -0
- package/dist/types/commands/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/types.d.ts +178 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +2 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/number.d.ts +3 -0
- package/dist/types/utils/number.d.ts.map +1 -0
- package/dist/types.js +30 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/index.js +18 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/number.js +13 -0
- package/dist/utils/number.js.map +1 -0
- package/package.json +44 -0
- package/src/commands/exposure/command.ts +799 -0
- package/src/commands/exposure/index.ts +2 -0
- package/src/commands/exposure/types.ts +125 -0
- package/src/commands/index.ts +1 -0
- package/src/index.ts +3 -0
- package/src/types.ts +213 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/number.ts +8 -0
|
@@ -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
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';
|