@reyaxyz/common 0.313.0 → 0.314.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/README.md CHANGED
@@ -6,5 +6,5 @@
6
6
 
7
7
  | Statements | Branches | Functions | Lines |
8
8
  | --------------------------- | ----------------------- | ------------------------- | ----------------- |
9
- | ![Statements](https://img.shields.io/badge/statements-20.49%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-18.18%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-10.31%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-22.23%25-red.svg?style=flat) |
9
+ | ![Statements](https://img.shields.io/badge/statements-21.18%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-18.12%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-11.06%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-22.8%25-red.svg?style=flat) |
10
10
 
@@ -1 +1 @@
1
- {"version":3,"file":"trading-api-types.js","sourceRoot":"/","sources":["trading-api-types.ts"],"names":[],"mappings":";;;AAYa,QAAA,mBAAmB,GAAG;IACjC,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;CACjB,CAAC","sourcesContent":["import { ParamsDictionary, Query } from 'express-serve-static-core';\nimport { AssetPair, CollateralPrice, MarketPrice } from './types';\nimport {\n AddressParam,\n ApiEndpoint,\n ApiInfiniteListEndpoint,\n ApiListEndpoint,\n Decimal,\n PaginatedQueryParams,\n Stringified,\n} from './api-types';\n\nexport const AccountStatusValues = {\n OPEN: 'OPEN',\n CLOSED: 'CLOSED',\n};\n\nexport type AccountStatus =\n (typeof AccountStatusValues)[keyof typeof AccountStatusValues];\n\ntype CandleResolution = '1' | '5' | '15' | '30' | '60' | '240' | '1D';\n\ntype Candle = {\n time: number;\n open: number;\n high: number;\n low: number;\n close: number;\n assetPairId: AssetPair;\n resolution: CandleResolution;\n};\n\ntype Order = {\n id: string;\n market_id: Decimal | null;\n account_id: Decimal | null;\n executed_base: Decimal | null;\n fee: Decimal | null;\n price: Decimal | null;\n is_match_order: boolean | null;\n liquidation_type: Decimal | null;\n transaction_hash: string;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n unique_id: bigint | null;\n event_sequence_number: bigint | null;\n exchange_id: Decimal | null;\n created_at: Date;\n counterparty_account_id: Decimal | null;\n counterparty_adl_unwind_price: Decimal | null;\n counterparty_average_entry_funding_value: Decimal | null;\n counterparty_base: Decimal | null;\n counterparty_base_multiplier: Decimal | null;\n counterparty_funding_value: Decimal | null;\n counterparty_last_price: Decimal | null;\n counterparty_last_price_timestamp: Decimal | null;\n counterparty_realized_pnl: Decimal | null;\n counterparty_session: Decimal | null;\n position_adl_unwind_price: Decimal | null;\n position_average_entry_funding_value: Decimal | null;\n position_base: Decimal | null;\n position_base_multiplier: Decimal | null;\n position_funding_value: Decimal | null;\n position_last_price: Decimal | null;\n position_last_price_timestamp: Decimal | null;\n position_realized_pnl: Decimal | null;\n position_session: Decimal | null;\n referrer_account_id: Decimal | null;\n referrer_fee_credit: Decimal | null;\n};\n\ntype Position = {\n market_id: Decimal;\n account_id: Decimal;\n base: Decimal | null;\n realized_pnl: Decimal | null;\n last_price: Decimal | null;\n last_price_timestamp: Decimal | null;\n funding_value: Decimal | null;\n base_multiplier: Decimal | null;\n adl_unwind_price: Decimal | null;\n average_entry_funding_value: Decimal | null;\n session: Decimal | null;\n exchange_id: Decimal | null;\n event_sequence_number: bigint | null;\n referrer_account_id: Decimal | null;\n referrer_fee_credit: Decimal | null;\n transaction_hash: string;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n unique_id: bigint | null;\n};\n\ntype ConditionalOrder = {\n id: string;\n account_id: Decimal;\n market_id: Decimal;\n order_type: string;\n is_long: boolean;\n trigger_price: number;\n order_base: Decimal;\n status: string;\n creation_timestamp_ms: bigint;\n last_update_timestamp_ms: bigint;\n transaction_hash: string | null;\n};\n\ntype ConditionalOrderSensitive = ConditionalOrder & {\n exchange_id: bigint;\n inputs: string;\n counterparty_account_id: bigint;\n reya_chain_id: bigint;\n deadline: bigint;\n signer_address: string;\n nonce: Decimal;\n signature: string;\n};\n\ntype Market = {\n id: Decimal;\n assetPairId: AssetPair;\n ticker: string;\n isActive: boolean;\n maxLeverage: number;\n description: string;\n name: string;\n tickSizeDecimals: number;\n priority: number;\n underlyingAssetId: string;\n quoteTokenId: string;\n};\n\ntype Account = {\n account_id: Decimal;\n name: string;\n status: AccountStatus;\n updated_timestamp_ms: Decimal;\n source: string | null;\n};\n\ntype AccountBalance = {\n account_id: number | null;\n collateral: string | null;\n balance?: Decimal | null;\n delta?: Decimal | null;\n};\n\ntype AutoExchange = {\n id: string;\n liquidated_account_id: Decimal | null;\n liquidator_account_id: Decimal | null;\n requested_quote_amount: Decimal | null;\n collateral_out_address: string | null;\n collateral_in_address: string | null;\n collateral_amount_to_liquidator: Decimal | null;\n quote_amount_to_insurance_fund: Decimal | null;\n quote_amount_to_account: Decimal | null;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n transaction_hash: string;\n unique_id: bigint | null;\n};\n\ntype Leverage = {\n accountId: Decimal;\n marketId: Decimal;\n leverage: number;\n createdAt: Date;\n updatedAt: Date;\n};\n\ntype WalletStats = {\n volume_14d: Decimal;\n};\n\ntype MarketData = {\n marketId: string;\n updatedAt: number;\n longOI: number;\n shortOI: number;\n longSkewPercentage: number;\n shortSkewPercentage: number;\n openInterest?: number;\n fundingRate?: number;\n fundingRateVelocity?: number;\n longFundingValue?: number;\n shortFundingValue?: number;\n last24hVolume: number;\n priceChange24H?: number;\n priceChange24HPercentage?: number;\n maxAmountBaseLong?: number;\n maxAmountSizeLong?: number;\n maxAmountBaseShort?: number;\n maxAmountSizeShort?: number;\n oraclePrice?: number;\n poolPrice?: number;\n pricesUpdatedAt?: number;\n longBaseMultiplier?: number;\n shortBaseMultiplier?: number;\n longAdlUnwindPrice?: number;\n shortAdlUnwindPrice?: number;\n};\n\ntype MarketTrackers = {\n market_data_id: Decimal;\n passive_pool_id: Decimal | null;\n pool_account_id: Decimal | null;\n quote_token: string | null;\n quote_token_decimals: Decimal | null;\n last_funding_velocity: Decimal | null;\n last_funding_timestamp: Decimal | null;\n last_mtm_price: Decimal | null;\n last_mtm_timestamp: Decimal | null;\n long_trackers_funding_value: Decimal | null;\n last_funding_rate: Decimal | null;\n long_trackers_base_multiplier: Decimal | null;\n long_trackers_adl_unwind_price: Decimal | null;\n short_trackers_funding_value: Decimal | null;\n short_trackers_base_multiplier: Decimal | null;\n short_trackers_adl_unwind_price: Decimal | null;\n open_interest: Decimal | null;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n unique_id: bigint | null;\n};\n\nexport type TradingApiReplication<\n ReplicationTable extends ReplicationModel = never,\n Replication = never,\n> = {\n replication: ReplicationTable extends never\n ? never\n : GenericReplicationMessage<Replication, ReplicationTable>;\n};\n\nexport type TradingApiEndpoint<\n Response,\n Params,\n ReplicationTable extends ReplicationModel = never,\n Replication = Response,\n Query = never,\n> = ApiEndpoint<Response, Params, Query> &\n TradingApiReplication<ReplicationTable, Replication>;\n\nexport type TradingApiListEndpoint<\n Response,\n Params = never,\n ReplicationTable extends ReplicationModel = never,\n Replication = Response,\n Query = never,\n> = ApiListEndpoint<Response, Params, Query> &\n TradingApiReplication<ReplicationTable, Replication>;\n\nexport type TradingApiInfiniteListEndpoint<\n Response,\n Params = never,\n ReplicationTable extends ReplicationModel = never,\n Replication = Response,\n Query = PaginatedQueryParams,\n> = ApiInfiniteListEndpoint<Response, Params, Query> &\n TradingApiReplication<ReplicationTable, Replication>;\n\nexport type TradingApiSource = {\n 'poolBalance/:poolId': TradingApiEndpoint<\n {\n id: number;\n timestamp: bigint;\n pool_id: number;\n value: Decimal;\n apy: Decimal;\n share_price: Decimal;\n share_price_index: Decimal;\n } | null,\n {\n poolId?: string;\n }\n >;\n 'wallet/:address/leverages': TradingApiListEndpoint<\n Leverage,\n { address: string },\n 'accountLeveragePerMarket'\n >;\n markets: TradingApiListEndpoint<Market>;\n 'markets/data': TradingApiListEndpoint<MarketData, never, 'marketData'>;\n 'markets/configuration': TradingApiListEndpoint<{\n market_id: Decimal;\n risk_matrix_index: Decimal | null;\n max_open_base: Decimal | null;\n velocity_multiplier: Decimal | null;\n minimum_order_base: Decimal | null;\n base_spacing: Decimal | null;\n price_spacing: Decimal | null;\n oracle_node_id: string | null;\n mtm_window: Decimal | null;\n dutch_config_lambda: Decimal | null;\n dutch_config_min_base: Decimal | null;\n slippage_params_phi: Decimal | null;\n slippage_params_beta: Decimal | null;\n depth_factor: Decimal | null;\n max_exposure_factor: Decimal | null;\n max_p_slippage: Decimal | null;\n price_spread: Decimal | null;\n volatility_index_multiplier: Decimal | null;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n unique_id: bigint | null;\n }>;\n 'markets/storage': TradingApiListEndpoint<{\n market_id: Decimal;\n quote_collateral: string | null;\n instrument_address: string | null;\n name: string | null;\n risk_block_id: Decimal | null;\n collateral_pool_id: Decimal | null;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n unique_id: bigint | null;\n }>;\n 'markets/trackers': TradingApiListEndpoint<\n MarketTrackers,\n never,\n 'marketTrackers'\n >;\n 'market/:marketId/trackers': TradingApiEndpoint<\n MarketTrackers,\n {\n marketId: string;\n },\n 'marketTrackers'\n >;\n 'market/:marketId': TradingApiEndpoint<\n Market,\n {\n marketId: string;\n }\n >;\n 'market/:marketId/data': TradingApiEndpoint<\n MarketData,\n {\n marketId: string;\n },\n 'marketData'\n >;\n 'market/:marketId/trades': TradingApiInfiniteListEndpoint<\n Order,\n {\n marketId: string;\n },\n 'orders'\n >;\n 'wallet/:address/positions': TradingApiListEndpoint<\n Position,\n AddressParam,\n 'position'\n >;\n 'wallet/:address/openOrders': TradingApiListEndpoint<\n ConditionalOrder,\n AddressParam,\n 'ConditionalOrders'\n >;\n assets: TradingApiListEndpoint<{\n address: string;\n name: string;\n short: string;\n createdAt: Date;\n updatedAt: Date;\n asset_price_contract_id: string | null;\n asset_price_usdc_contract_id: string | null;\n decimals: number;\n }>;\n prices: TradingApiEndpoint<\n Partial<Record<AssetPair, MarketPrice | CollateralPrice>>,\n never\n >;\n 'prices/:assetPairId': TradingApiEndpoint<\n MarketPrice | CollateralPrice | undefined,\n {\n assetPairId: string;\n },\n 'price'\n >;\n 'wallet/:address/accounts': TradingApiListEndpoint<\n Account,\n AddressParam,\n 'AccountProfile'\n >;\n 'wallet/:address/accounts/tiers': TradingApiListEndpoint<\n {\n market_id: Decimal;\n account_id: Decimal;\n tier_id: Decimal | null;\n },\n AddressParam\n >;\n 'wallet/:address/accounts/balances': TradingApiListEndpoint<\n AccountBalance,\n AddressParam,\n 'account_balances'\n >;\n 'wallet/:address/autoExchange': TradingApiInfiniteListEndpoint<\n AutoExchange,\n AddressParam,\n 'auto_exchange'\n >;\n 'wallet/:address/balanceHistory/:timestamp': TradingApiListEndpoint<\n {\n timestamp: number;\n balance: number;\n },\n {\n address: string;\n timestamp: string;\n }\n >;\n 'wallet/:address/trades': TradingApiInfiniteListEndpoint<\n Order,\n {\n address: string;\n },\n 'order_history'\n >;\n 'wallet/:address/trades/:type': TradingApiInfiniteListEndpoint<\n Order,\n {\n address: string;\n type?: 'matchOrder' | 'liquidation';\n },\n 'order_history'\n >;\n riskMatrices: TradingApiListEndpoint<\n {\n blockId: Decimal;\n matrix: string[][];\n },\n {\n poolId: string;\n }\n >;\n tierFees: TradingApiListEndpoint<{\n market_id: Decimal;\n tier_id: Decimal;\n fee_parameter: Decimal | null;\n }>;\n collateralConfiguration: TradingApiListEndpoint<{\n assetPairId?: AssetPair;\n name?: string;\n collateral_pool_id: Decimal;\n collateral_address: string;\n price_haircut: Decimal | null;\n auto_exchange_discount: Decimal | null;\n oracle_node_id: string | null;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n unique_id: bigint | null;\n }>;\n 'candle/:assetPairId/:resolution': TradingApiEndpoint<\n Candle | null,\n {\n resolution: CandleResolution;\n assetPairId: AssetPair;\n },\n 'storkPriceCandle',\n Candle\n >;\n 'candles/:assetPairId/:resolution': TradingApiEndpoint<\n {\n t: number[];\n o: number[];\n h: number[];\n l: number[];\n c: number[];\n },\n {\n resolution: CandleResolution;\n assetPairId: AssetPair;\n },\n never,\n never,\n {\n to: string;\n from: string;\n countBack?: string;\n }\n >;\n feeTierParameters: TradingApiListEndpoint<{\n tier_id: Decimal;\n taker_fee: Decimal;\n maker_fee: Decimal;\n volume: Decimal;\n }>;\n globalFeeParameters: TradingApiEndpoint<\n {\n og_discount: Decimal;\n vltz_discount: Decimal;\n referee_discount: Decimal;\n referrer_rebate: Decimal;\n affiliate_referrer_rebate: Decimal;\n },\n never\n >;\n 'wallet/:address/configuration': TradingApiEndpoint<\n {\n tier_id: Decimal;\n og_status: boolean;\n vltz_status: boolean;\n affiliate_status: boolean;\n referee_status: boolean;\n main_account_id: Decimal;\n },\n {\n address: string;\n }\n >;\n 'wallet/:address/stats': TradingApiEndpoint<\n WalletStats,\n {\n address: string;\n }\n >;\n};\n\nexport type Req<P = ParamsDictionary, ReqQuery = Query> = {\n params: P;\n query: ReqQuery;\n};\n\nexport type TradingApi = {\n [K in keyof TradingApiSource as K]: {\n params: TradingApiSource[K]['params'];\n query: TradingApiSource[K]['query'];\n response: Stringified<TradingApiSource[K]['response']>;\n replication: Stringified<TradingApiSource[K]['replication']>;\n };\n};\n\ntype ReplicationModel = string | never;\n\nexport type GenericReplicationMessage<T, model extends ReplicationModel> =\n | {\n model: model;\n result: T;\n operation: 'create' | 'update' | 'upsert' | 'delete';\n }\n | {\n model: model;\n result: T[];\n operation: 'updateMany';\n }\n | {\n model: model;\n result: T[];\n operation: 'createMany';\n };\n\ntype account_collateral_balance_entries = {\n id: string;\n account_id: Decimal | null;\n collateral: string | null;\n amount: Decimal | null;\n transaction_hash: string;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n unique_id: bigint | null;\n};\n\ntype account_owner_updated_snapshot = {\n account_id: Decimal;\n transaction_hash: string;\n new_owner: string | null;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n unique_id: bigint | null;\n};\n\ntype positions_migration = {\n market_id: Decimal;\n account_id: Decimal;\n base: Decimal | null;\n realized_pnl: Decimal | null;\n last_price: Decimal | null;\n last_price_timestamp: Decimal | null;\n funding_value: Decimal | null;\n base_multiplier: Decimal | null;\n adl_unwind_price: Decimal | null;\n average_entry_funding_value: Decimal | null;\n session: Decimal | null;\n exchange_id: Decimal | null;\n transaction_hash: string;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n unique_id: bigint | null;\n event_sequence_number: bigint | null;\n referrer_account_id: Decimal | null;\n referrer_fee_credit: Decimal | null;\n};\n\ntype ReplicationMessage =\n // Extract the union of all `replication` values from TradingApiSource\n | Exclude<TradingApiSource[keyof TradingApiSource]['replication'], never>\n // add messages that do not exists in TradingApiSource\n | GenericReplicationMessage<\n account_owner_updated_snapshot,\n 'account_owner_updated_snapshot'\n >\n | GenericReplicationMessage<\n account_collateral_balance_entries,\n 'account_collateral_balance_entries'\n >\n | GenericReplicationMessage<\n ConditionalOrderSensitive,\n 'ConditionalOrdersSensitive'\n >\n | GenericReplicationMessage<\n // Todo: remove after migration\n positions_migration,\n 'positions_migration'\n >;\n\nexport type Replication = {\n [K in ReplicationMessage as `replication:${K['model']}`]: Extract<\n ReplicationMessage,\n { model: K['model'] }\n >;\n};\n"]}
1
+ {"version":3,"file":"trading-api-types.js","sourceRoot":"/","sources":["trading-api-types.ts"],"names":[],"mappings":";;;AAYa,QAAA,mBAAmB,GAAG;IACjC,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;CACjB,CAAC","sourcesContent":["import { ParamsDictionary, Query } from 'express-serve-static-core';\nimport { AssetPair, CollateralPrice, MarketPrice } from './types';\nimport {\n AddressParam,\n ApiEndpoint,\n ApiInfiniteListEndpoint,\n ApiListEndpoint,\n Decimal,\n PaginatedQueryParams,\n Stringified,\n} from './api-types';\n\nexport const AccountStatusValues = {\n OPEN: 'OPEN',\n CLOSED: 'CLOSED',\n};\n\nexport type AccountStatus =\n (typeof AccountStatusValues)[keyof typeof AccountStatusValues];\n\ntype CandleResolution = '1' | '5' | '15' | '30' | '60' | '240' | '1D';\n\ntype Candle = {\n time: number;\n open: number;\n high: number;\n low: number;\n close: number;\n assetPairId: AssetPair;\n resolution: CandleResolution;\n};\n\ntype Order = {\n id: string;\n market_id: Decimal | null;\n account_id: Decimal | null;\n executed_base: Decimal | null;\n fee: Decimal | null;\n price: Decimal | null;\n is_match_order: boolean | null;\n liquidation_type: Decimal | null;\n transaction_hash: string;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n unique_id: bigint | null;\n event_sequence_number: bigint | null;\n exchange_id: Decimal | null;\n created_at: Date;\n counterparty_account_id: Decimal | null;\n counterparty_adl_unwind_price: Decimal | null;\n counterparty_average_entry_funding_value: Decimal | null;\n counterparty_base: Decimal | null;\n counterparty_base_multiplier: Decimal | null;\n counterparty_funding_value: Decimal | null;\n counterparty_last_price: Decimal | null;\n counterparty_last_price_timestamp: Decimal | null;\n counterparty_realized_pnl: Decimal | null;\n counterparty_session: Decimal | null;\n position_adl_unwind_price: Decimal | null;\n position_average_entry_funding_value: Decimal | null;\n position_base: Decimal | null;\n position_base_multiplier: Decimal | null;\n position_funding_value: Decimal | null;\n position_last_price: Decimal | null;\n position_last_price_timestamp: Decimal | null;\n position_realized_pnl: Decimal | null;\n position_session: Decimal | null;\n referrer_account_id: Decimal | null;\n referrer_fee_credit: Decimal | null;\n};\n\ntype Position = {\n market_id: Decimal;\n account_id: Decimal;\n base: Decimal | null;\n realized_pnl: Decimal | null;\n last_price: Decimal | null;\n last_price_timestamp: Decimal | null;\n funding_value: Decimal | null;\n base_multiplier: Decimal | null;\n adl_unwind_price: Decimal | null;\n average_entry_funding_value: Decimal | null;\n session: Decimal | null;\n exchange_id: Decimal | null;\n event_sequence_number: bigint | null;\n referrer_account_id: Decimal | null;\n referrer_fee_credit: Decimal | null;\n transaction_hash: string;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n unique_id: bigint | null;\n adjusted_base: Decimal | null;\n adl_realized_pnl: Decimal | null;\n};\n\ntype ConditionalOrder = {\n id: string;\n account_id: Decimal;\n market_id: Decimal;\n order_type: string;\n is_long: boolean;\n trigger_price: number;\n order_base: Decimal;\n status: string;\n creation_timestamp_ms: bigint;\n last_update_timestamp_ms: bigint;\n transaction_hash: string | null;\n};\n\ntype ConditionalOrderSensitive = ConditionalOrder & {\n exchange_id: bigint;\n inputs: string;\n counterparty_account_id: bigint;\n reya_chain_id: bigint;\n deadline: bigint;\n signer_address: string;\n nonce: Decimal;\n signature: string;\n};\n\ntype Market = {\n id: Decimal;\n assetPairId: AssetPair;\n ticker: string;\n isActive: boolean;\n maxLeverage: number;\n description: string;\n name: string;\n tickSizeDecimals: number;\n priority: number;\n underlyingAssetId: string;\n quoteTokenId: string;\n};\n\ntype Account = {\n account_id: Decimal;\n name: string;\n status: AccountStatus;\n updated_timestamp_ms: Decimal;\n source: string | null;\n};\n\ntype AccountBalance = {\n account_id: number | null;\n collateral: string | null;\n balance?: Decimal | null;\n delta?: Decimal | null;\n};\n\ntype AutoExchange = {\n id: string;\n liquidated_account_id: Decimal | null;\n liquidator_account_id: Decimal | null;\n requested_quote_amount: Decimal | null;\n collateral_out_address: string | null;\n collateral_in_address: string | null;\n collateral_amount_to_liquidator: Decimal | null;\n quote_amount_to_insurance_fund: Decimal | null;\n quote_amount_to_account: Decimal | null;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n transaction_hash: string;\n unique_id: bigint | null;\n};\n\ntype Leverage = {\n accountId: Decimal;\n marketId: Decimal;\n leverage: number;\n createdAt: Date;\n updatedAt: Date;\n};\n\ntype WalletStats = {\n volume_14d: Decimal;\n};\n\ntype MarketData = {\n marketId: string;\n updatedAt: number;\n longOI: number;\n shortOI: number;\n longSkewPercentage: number;\n shortSkewPercentage: number;\n openInterest?: number;\n fundingRate?: number;\n fundingRateVelocity?: number;\n longFundingValue?: number;\n shortFundingValue?: number;\n last24hVolume: number;\n priceChange24H?: number;\n priceChange24HPercentage?: number;\n maxAmountBaseLong?: number;\n maxAmountSizeLong?: number;\n maxAmountBaseShort?: number;\n maxAmountSizeShort?: number;\n oraclePrice?: number;\n poolPrice?: number;\n pricesUpdatedAt?: number;\n longBaseMultiplier?: number;\n shortBaseMultiplier?: number;\n longAdlUnwindPrice?: number;\n shortAdlUnwindPrice?: number;\n};\n\ntype MarketTrackers = {\n market_data_id: Decimal;\n passive_pool_id: Decimal | null;\n pool_account_id: Decimal | null;\n quote_token: string | null;\n quote_token_decimals: Decimal | null;\n last_funding_velocity: Decimal | null;\n last_funding_timestamp: Decimal | null;\n last_mtm_price: Decimal | null;\n last_mtm_timestamp: Decimal | null;\n long_trackers_funding_value: Decimal | null;\n last_funding_rate: Decimal | null;\n long_trackers_base_multiplier: Decimal | null;\n long_trackers_adl_unwind_price: Decimal | null;\n short_trackers_funding_value: Decimal | null;\n short_trackers_base_multiplier: Decimal | null;\n short_trackers_adl_unwind_price: Decimal | null;\n open_interest: Decimal | null;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n unique_id: bigint | null;\n};\n\nexport type TradingApiReplication<\n ReplicationTable extends ReplicationModel = never,\n Replication = never,\n> = {\n replication: ReplicationTable extends never\n ? never\n : GenericReplicationMessage<Replication, ReplicationTable>;\n};\n\nexport type TradingApiEndpoint<\n Response,\n Params,\n ReplicationTable extends ReplicationModel = never,\n Replication = Response,\n Query = never,\n> = ApiEndpoint<Response, Params, Query> &\n TradingApiReplication<ReplicationTable, Replication>;\n\nexport type TradingApiListEndpoint<\n Response,\n Params = never,\n ReplicationTable extends ReplicationModel = never,\n Replication = Response,\n Query = never,\n> = ApiListEndpoint<Response, Params, Query> &\n TradingApiReplication<ReplicationTable, Replication>;\n\nexport type TradingApiInfiniteListEndpoint<\n Response,\n Params = never,\n ReplicationTable extends ReplicationModel = never,\n Replication = Response,\n Query = PaginatedQueryParams,\n> = ApiInfiniteListEndpoint<Response, Params, Query> &\n TradingApiReplication<ReplicationTable, Replication>;\n\nexport type TradingApiSource = {\n 'poolBalance/:poolId': TradingApiEndpoint<\n {\n id: number;\n timestamp: bigint;\n pool_id: number;\n value: Decimal;\n apy: Decimal;\n share_price: Decimal;\n share_price_index: Decimal;\n } | null,\n {\n poolId?: string;\n }\n >;\n 'wallet/:address/leverages': TradingApiListEndpoint<\n Leverage,\n { address: string },\n 'accountLeveragePerMarket'\n >;\n markets: TradingApiListEndpoint<Market>;\n 'markets/data': TradingApiListEndpoint<MarketData, never, 'marketData'>;\n 'markets/configuration': TradingApiListEndpoint<{\n market_id: Decimal;\n risk_matrix_index: Decimal | null;\n max_open_base: Decimal | null;\n velocity_multiplier: Decimal | null;\n minimum_order_base: Decimal | null;\n base_spacing: Decimal | null;\n price_spacing: Decimal | null;\n oracle_node_id: string | null;\n mtm_window: Decimal | null;\n dutch_config_lambda: Decimal | null;\n dutch_config_min_base: Decimal | null;\n slippage_params_phi: Decimal | null;\n slippage_params_beta: Decimal | null;\n depth_factor: Decimal | null;\n max_exposure_factor: Decimal | null;\n max_p_slippage: Decimal | null;\n price_spread: Decimal | null;\n volatility_index_multiplier: Decimal | null;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n unique_id: bigint | null;\n }>;\n 'markets/storage': TradingApiListEndpoint<{\n market_id: Decimal;\n quote_collateral: string | null;\n instrument_address: string | null;\n name: string | null;\n risk_block_id: Decimal | null;\n collateral_pool_id: Decimal | null;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n unique_id: bigint | null;\n }>;\n 'markets/trackers': TradingApiListEndpoint<\n MarketTrackers,\n never,\n 'marketTrackers'\n >;\n 'market/:marketId/trackers': TradingApiEndpoint<\n MarketTrackers,\n {\n marketId: string;\n },\n 'marketTrackers'\n >;\n 'market/:marketId': TradingApiEndpoint<\n Market,\n {\n marketId: string;\n }\n >;\n 'market/:marketId/data': TradingApiEndpoint<\n MarketData,\n {\n marketId: string;\n },\n 'marketData'\n >;\n 'market/:marketId/trades': TradingApiInfiniteListEndpoint<\n Order,\n {\n marketId: string;\n },\n 'orders'\n >;\n 'wallet/:address/positions': TradingApiListEndpoint<\n Position,\n AddressParam,\n 'position',\n Omit<Position, 'adjusted_base' | 'adl_realized_pnl'>\n >;\n 'wallet/:address/openOrders': TradingApiListEndpoint<\n ConditionalOrder,\n AddressParam,\n 'ConditionalOrders'\n >;\n assets: TradingApiListEndpoint<{\n address: string;\n name: string;\n short: string;\n createdAt: Date;\n updatedAt: Date;\n asset_price_contract_id: string | null;\n asset_price_usdc_contract_id: string | null;\n decimals: number;\n }>;\n prices: TradingApiEndpoint<\n Partial<Record<AssetPair, MarketPrice | CollateralPrice>>,\n never\n >;\n 'prices/:assetPairId': TradingApiEndpoint<\n MarketPrice | CollateralPrice | undefined,\n {\n assetPairId: string;\n },\n 'price'\n >;\n 'wallet/:address/accounts': TradingApiListEndpoint<\n Account,\n AddressParam,\n 'AccountProfile'\n >;\n 'wallet/:address/accounts/tiers': TradingApiListEndpoint<\n {\n market_id: Decimal;\n account_id: Decimal;\n tier_id: Decimal | null;\n },\n AddressParam\n >;\n 'wallet/:address/accounts/balances': TradingApiListEndpoint<\n AccountBalance,\n AddressParam,\n 'account_balances'\n >;\n 'wallet/:address/autoExchange': TradingApiInfiniteListEndpoint<\n AutoExchange,\n AddressParam,\n 'auto_exchange'\n >;\n 'wallet/:address/balanceHistory/:timestamp': TradingApiListEndpoint<\n {\n timestamp: number;\n balance: number;\n },\n {\n address: string;\n timestamp: string;\n }\n >;\n 'wallet/:address/trades': TradingApiInfiniteListEndpoint<\n Order,\n {\n address: string;\n },\n 'order_history'\n >;\n 'wallet/:address/trades/:type': TradingApiInfiniteListEndpoint<\n Order,\n {\n address: string;\n type?: 'matchOrder' | 'liquidation';\n },\n 'order_history'\n >;\n riskMatrices: TradingApiListEndpoint<\n {\n blockId: Decimal;\n matrix: string[][];\n },\n {\n poolId: string;\n }\n >;\n tierFees: TradingApiListEndpoint<{\n market_id: Decimal;\n tier_id: Decimal;\n fee_parameter: Decimal | null;\n }>;\n collateralConfiguration: TradingApiListEndpoint<{\n assetPairId?: AssetPair;\n name?: string;\n collateral_pool_id: Decimal;\n collateral_address: string;\n price_haircut: Decimal | null;\n auto_exchange_discount: Decimal | null;\n oracle_node_id: string | null;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n unique_id: bigint | null;\n }>;\n 'candle/:assetPairId/:resolution': TradingApiEndpoint<\n Candle | null,\n {\n resolution: CandleResolution;\n assetPairId: AssetPair;\n },\n 'storkPriceCandle',\n Candle\n >;\n 'candles/:assetPairId/:resolution': TradingApiEndpoint<\n {\n t: number[];\n o: number[];\n h: number[];\n l: number[];\n c: number[];\n },\n {\n resolution: CandleResolution;\n assetPairId: AssetPair;\n },\n never,\n never,\n {\n to: string;\n from: string;\n countBack?: string;\n }\n >;\n feeTierParameters: TradingApiListEndpoint<{\n tier_id: Decimal;\n taker_fee: Decimal;\n maker_fee: Decimal;\n volume: Decimal;\n }>;\n globalFeeParameters: TradingApiEndpoint<\n {\n og_discount: Decimal;\n vltz_discount: Decimal;\n referee_discount: Decimal;\n referrer_rebate: Decimal;\n affiliate_referrer_rebate: Decimal;\n },\n never\n >;\n 'wallet/:address/configuration': TradingApiEndpoint<\n {\n tier_id: Decimal;\n og_status: boolean;\n vltz_status: boolean;\n affiliate_status: boolean;\n referee_status: boolean;\n main_account_id: Decimal;\n },\n {\n address: string;\n }\n >;\n 'wallet/:address/stats': TradingApiEndpoint<\n WalletStats,\n {\n address: string;\n }\n >;\n};\n\nexport type Req<P = ParamsDictionary, ReqQuery = Query> = {\n params: P;\n query: ReqQuery;\n};\n\nexport type TradingApi = {\n [K in keyof TradingApiSource as K]: {\n params: TradingApiSource[K]['params'];\n query: TradingApiSource[K]['query'];\n response: Stringified<TradingApiSource[K]['response']>;\n replication: Stringified<TradingApiSource[K]['replication']>;\n };\n};\n\ntype ReplicationModel = string | never;\n\nexport type GenericReplicationMessage<T, model extends ReplicationModel> =\n | {\n model: model;\n result: T;\n operation: 'create' | 'update' | 'upsert' | 'delete';\n }\n | {\n model: model;\n result: T[];\n operation: 'updateMany';\n }\n | {\n model: model;\n result: T[];\n operation: 'createMany';\n };\n\ntype account_collateral_balance_entries = {\n id: string;\n account_id: Decimal | null;\n collateral: string | null;\n amount: Decimal | null;\n transaction_hash: string;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n unique_id: bigint | null;\n};\n\ntype account_owner_updated_snapshot = {\n account_id: Decimal;\n transaction_hash: string;\n new_owner: string | null;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n unique_id: bigint | null;\n};\n\ntype positions_migration = {\n market_id: Decimal;\n account_id: Decimal;\n base: Decimal | null;\n realized_pnl: Decimal | null;\n last_price: Decimal | null;\n last_price_timestamp: Decimal | null;\n funding_value: Decimal | null;\n base_multiplier: Decimal | null;\n adl_unwind_price: Decimal | null;\n average_entry_funding_value: Decimal | null;\n session: Decimal | null;\n exchange_id: Decimal | null;\n transaction_hash: string;\n block_timestamp: Decimal | null;\n block_number: Decimal;\n unique_id: bigint | null;\n event_sequence_number: bigint | null;\n referrer_account_id: Decimal | null;\n referrer_fee_credit: Decimal | null;\n};\n\ntype ReplicationMessage =\n // Extract the union of all `replication` values from TradingApiSource\n | Exclude<TradingApiSource[keyof TradingApiSource]['replication'], never>\n // add messages that do not exists in TradingApiSource\n | GenericReplicationMessage<\n account_owner_updated_snapshot,\n 'account_owner_updated_snapshot'\n >\n | GenericReplicationMessage<\n account_collateral_balance_entries,\n 'account_collateral_balance_entries'\n >\n | GenericReplicationMessage<\n ConditionalOrderSensitive,\n 'ConditionalOrdersSensitive'\n >\n | GenericReplicationMessage<\n // Todo: remove after migration\n positions_migration,\n 'positions_migration'\n >;\n\nexport type Replication = {\n [K in ReplicationMessage as `replication:${K['model']}`]: Extract<\n ReplicationMessage,\n { model: K['model'] }\n >;\n};\n"]}
@@ -74,6 +74,8 @@ type Position = {
74
74
  block_timestamp: Decimal | null;
75
75
  block_number: Decimal;
76
76
  unique_id: bigint | null;
77
+ adjusted_base: Decimal | null;
78
+ adl_realized_pnl: Decimal | null;
77
79
  };
78
80
  type ConditionalOrder = {
79
81
  id: string;
@@ -268,7 +270,7 @@ export type TradingApiSource = {
268
270
  'market/:marketId/trades': TradingApiInfiniteListEndpoint<Order, {
269
271
  marketId: string;
270
272
  }, 'orders'>;
271
- 'wallet/:address/positions': TradingApiListEndpoint<Position, AddressParam, 'position'>;
273
+ 'wallet/:address/positions': TradingApiListEndpoint<Position, AddressParam, 'position', Omit<Position, 'adjusted_base' | 'adl_realized_pnl'>>;
272
274
  'wallet/:address/openOrders': TradingApiListEndpoint<ConditionalOrder, AddressParam, 'ConditionalOrders'>;
273
275
  assets: TradingApiListEndpoint<{
274
276
  address: string;
@@ -1 +1 @@
1
- {"version":3,"file":"trading-api-types.d.ts","sourceRoot":"/","sources":["trading-api-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trading-api-types.d.ts","sourceRoot":"/","sources":["trading-api-types.ts"],"names":[],"mappings":"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"}
@@ -92,11 +92,22 @@ export declare const calculateTotalMargin: ({ marketsTrackers, accountBalances,
92
92
  }[];
93
93
  rUSDAddress?: string | undefined;
94
94
  }) => number;
95
- export declare const calculatePositionAdjustedQty: (origQty: BigNumber, marketBaseMultiplier: BigNumber, positionBaseMultiplier: BigNumber) => BigNumber;
96
95
  export declare const calculateAdjustedPositionBase: (positionBase: number, positionBaseMultiplier: number, marketBaseMultiplier: number) => number;
97
96
  export declare const calculateFundingPnl: (fundingValue: number, positionAvgEntryFundingValue: number, positionBase: number, positionBaseMultiplier: number) => number;
98
97
  export declare const calculatePricePnl: (price: number, positionAvgEntryPrice: number, positionBase: number, positionBaseMultiplier: number, marketBaseMultiplier: number) => number;
99
98
  export declare const calculateAdlPnl: (adlUnwindPrice: number, baseMultiplier: number, positionAvgEntryPrice: number, positionAdlUnwindPrice: number, positionBaseMultiplier: number, positionBase: number) => number;
100
99
  export declare const calculateRealBalance: (netDeposits: BigNumber, realized_pnl: BigNumber) => BigNumber;
100
+ export declare const calculatePositionAdjustedQty: (origQty: BigNumber, marketBaseMultiplier: BigNumber, positionBaseMultiplier: BigNumber) => BigNumber;
101
+ /**
102
+ * Note: This function assumes all the inputs are scaled by 10^18.
103
+ */
104
+ export declare const calculatePositionAdlPnL: ({ marketTrackerAdlUnwindPrice, marketTrackerBaseMultiplier, positionBase, positionAvgEntryPrice, positionTrackerBaseMultiplier, positionTrackerAdlUnwindPrice, }: {
105
+ marketTrackerAdlUnwindPrice: BigNumber;
106
+ marketTrackerBaseMultiplier: BigNumber;
107
+ positionBase: BigNumber;
108
+ positionAvgEntryPrice: BigNumber;
109
+ positionTrackerBaseMultiplier: BigNumber;
110
+ positionTrackerAdlUnwindPrice: BigNumber;
111
+ }) => BigNumber;
101
112
  export {};
102
113
  //# sourceMappingURL=calculate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"calculate.d.ts","sourceRoot":"/","sources":["utils/calculate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calculate.d.ts","sourceRoot":"/","sources":["utils/calculate.ts"],"names":[],"mappings":"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"}
@@ -4,4 +4,6 @@ export declare const mergeMap: <T, K>(m: Map<K, T>, o: Map<K, T> | [K, T][]) =>
4
4
  export declare const filterBy: <T, K extends keyof T, V>(a: T[], k: K, v: V) => T[];
5
5
  export declare const findBy: <T, K extends keyof T, V>(a: T[], k: K, v: V) => T | undefined;
6
6
  export declare const groupBy: <T, K>(items: T[], key: (item: T) => K) => Map<K, T[]>;
7
+ export declare const isNonNullable: <T>(p: T) => p is NonNullable<T>;
8
+ export declare function assertValueExists<T>(value: T | null | undefined): T;
7
9
  //# sourceMappingURL=struct.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"struct.d.ts","sourceRoot":"/","sources":["utils/struct.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,gEACqB,CAAC;AAE5C,eAAO,MAAM,KAAK,kEAKf,CAAC;AAEJ,eAAO,MAAM,QAAQ,4DAKlB,CAAC;AAEJ,eAAO,MAAM,QAAQ,sDACQ,CAAC;AAE9B,eAAO,MAAM,MAAM,gEACQ,CAAC;AAE5B,eAAO,MAAM,OAAO,wDAWnB,CAAC"}
1
+ {"version":3,"file":"struct.d.ts","sourceRoot":"/","sources":["utils/struct.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,gEACqB,CAAC;AAE5C,eAAO,MAAM,KAAK,kEAKf,CAAC;AAEJ,eAAO,MAAM,QAAQ,4DAKlB,CAAC;AAEJ,eAAO,MAAM,QAAQ,sDACQ,CAAC;AAE9B,eAAO,MAAM,MAAM,gEACQ,CAAC;AAE5B,eAAO,MAAM,OAAO,wDAWnB,CAAC;AAEF,eAAO,MAAM,aAAa,kCACd,CAAC;AAEb,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,CAKnE"}
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateRealBalance = exports.calculateAdlPnl = exports.calculatePricePnl = exports.calculateFundingPnl = exports.calculateAdjustedPositionBase = exports.calculatePositionAdjustedQty = exports.calculateTotalMargin = exports.calculateMarginRatio = exports.calculateLMR = exports.calculateIMR = exports.calculateMaxOrderSize = exports.calculateRequiredMargin = exports.calculateLeverage = exports.calculateEstimatedLiquidationPrice = exports.calculateSpread = exports.calculateTradeFee = exports.calculateEstimatedExecutionPrice = exports.calculateMaxExposure = exports.POOL_IMR = void 0;
6
+ exports.calculatePositionAdlPnL = exports.calculatePositionAdjustedQty = exports.calculateRealBalance = exports.calculateAdlPnl = exports.calculatePricePnl = exports.calculateFundingPnl = exports.calculateAdjustedPositionBase = exports.calculateTotalMargin = exports.calculateMarginRatio = exports.calculateLMR = exports.calculateIMR = exports.calculateMaxOrderSize = exports.calculateRequiredMargin = exports.calculateLeverage = exports.calculateEstimatedLiquidationPrice = exports.calculateSpread = exports.calculateTradeFee = exports.calculateEstimatedExecutionPrice = exports.calculateMaxExposure = exports.POOL_IMR = void 0;
4
7
  var struct_1 = require("./struct");
8
+ var bignumber_js_1 = __importDefault(require("bignumber.js"));
5
9
  exports.POOL_IMR = 9.1;
6
10
  var calculateMaxExposure = function (_a) {
7
11
  var poolBalance = _a.poolBalance, riskFactor = _a.riskFactor, _b = _a.poolIMR, poolIMR = _b === void 0 ? exports.POOL_IMR : _b;
@@ -163,10 +167,6 @@ var calculateTotalMargin = function (_a) {
163
167
  }, 0);
164
168
  };
165
169
  exports.calculateTotalMargin = calculateTotalMargin;
166
- var calculatePositionAdjustedQty = function (origQty, marketBaseMultiplier, positionBaseMultiplier) {
167
- return origQty.times(marketBaseMultiplier).div(positionBaseMultiplier);
168
- };
169
- exports.calculatePositionAdjustedQty = calculatePositionAdjustedQty;
170
170
  var calculateAdjustedPositionBase = function (positionBase, positionBaseMultiplier, marketBaseMultiplier) {
171
171
  return positionBase * (marketBaseMultiplier / positionBaseMultiplier);
172
172
  };
@@ -192,4 +192,28 @@ var calculateRealBalance = function (netDeposits, realized_pnl) {
192
192
  return netDeposits.plus(realized_pnl);
193
193
  };
194
194
  exports.calculateRealBalance = calculateRealBalance;
195
+ var calculatePositionAdjustedQty = function (origQty, marketBaseMultiplier, positionBaseMultiplier) {
196
+ return origQty.times(marketBaseMultiplier).div(positionBaseMultiplier);
197
+ };
198
+ exports.calculatePositionAdjustedQty = calculatePositionAdjustedQty;
199
+ /**
200
+ * Note: This function assumes all the inputs are scaled by 10^18.
201
+ */
202
+ var calculatePositionAdlPnL = function (_a) {
203
+ var marketTrackerAdlUnwindPrice = _a.marketTrackerAdlUnwindPrice, marketTrackerBaseMultiplier = _a.marketTrackerBaseMultiplier, positionBase = _a.positionBase, positionAvgEntryPrice = _a.positionAvgEntryPrice, positionTrackerBaseMultiplier = _a.positionTrackerBaseMultiplier, positionTrackerAdlUnwindPrice = _a.positionTrackerAdlUnwindPrice;
204
+ var currentAdlUnwindPrice = marketTrackerAdlUnwindPrice
205
+ .minus(positionTrackerAdlUnwindPrice)
206
+ .multipliedBy(1e18)
207
+ .div(positionTrackerBaseMultiplier);
208
+ var initialPrice = positionAvgEntryPrice
209
+ .times((0, bignumber_js_1.default)(1e18).minus(marketTrackerBaseMultiplier
210
+ .multipliedBy(1e18)
211
+ .div(positionTrackerBaseMultiplier)))
212
+ .div(1e18);
213
+ var adlPnL = positionBase
214
+ .times(currentAdlUnwindPrice.minus(initialPrice))
215
+ .div(1e18);
216
+ return adlPnL;
217
+ };
218
+ exports.calculatePositionAdlPnL = calculatePositionAdlPnL;
195
219
  //# sourceMappingURL=calculate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calculate.js","sourceRoot":"/","sources":["utils/calculate.ts"],"names":[],"mappings":"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","sourcesContent":["import { mergeMap } from './struct';\nimport BigNumber from 'bignumber.js';\n\nexport const POOL_IMR = 9.1;\n\ntype MarketId = string;\ntype Address = string;\n\nexport const calculateMaxExposure = ({\n poolBalance,\n riskFactor,\n poolIMR = POOL_IMR,\n}: {\n poolBalance: number;\n poolIMR?: number;\n riskFactor: number;\n}) => poolBalance / (poolIMR * Math.sqrt(riskFactor));\n\nexport const calculateEstimatedExecutionPrice = (\n poolPrice: number,\n size: number,\n oraclePrice: number,\n maxExposure: number,\n depth: number,\n) =>\n Math.max(0, poolPrice * (1 + (size * oraclePrice) / (depth * maxExposure)));\n\nexport const calculateTradeFee = ({\n feeRate,\n tradeNotional,\n}: {\n feeRate: number;\n tradeNotional: number;\n}) => feeRate * Math.abs(tradeNotional);\n\nexport const calculateSpread = ({\n depthFactor,\n maxExposure,\n oraclePrice,\n poolPrice,\n tradeNotional,\n}: {\n depthFactor: number;\n maxExposure: number;\n oraclePrice: number;\n poolPrice: number;\n tradeNotional: number;\n}) =>\n (poolPrice / oraclePrice) *\n (1 + tradeNotional / (depthFactor * maxExposure) - 1) *\n tradeNotional;\n\nexport const calculateEstimatedLiquidationPrice = ({\n LMR,\n accountBalance,\n isShort,\n notional,\n oraclePrice,\n}: {\n LMR: number;\n accountBalance: number;\n isShort: boolean;\n notional: number;\n oraclePrice: number;\n}) =>\n Math.max(\n 0,\n oraclePrice *\n (1 - ((accountBalance - LMR) / notional) * (isShort ? -1 : 1)),\n );\n\nexport const calculateLeverage = ({\n imrMultiplier,\n riskFactor,\n}: {\n imrMultiplier: number;\n riskFactor: number;\n}) => 1 / (imrMultiplier * Math.sqrt(riskFactor));\n\nexport const calculateRequiredMargin = ({\n currIMR,\n currentNotional,\n leverage,\n tradeNotional,\n}: {\n currIMR: number;\n currentNotional: number;\n leverage: number;\n tradeNotional: number;\n}) =>\n currIMR +\n (Math.abs(currentNotional + tradeNotional) - Math.abs(currentNotional)) /\n leverage;\n\nexport const calculateMaxOrderSize = ({\n currIMR,\n currNodeBalance,\n currNotional,\n depthFactor,\n extendingPosition,\n feeRate,\n isShortTrade,\n leverage,\n maxExposure,\n oraclePrice,\n poolPrice,\n}: {\n currIMR: number;\n currNodeBalance: number;\n currNotional: number;\n depthFactor: number;\n extendingPosition: boolean;\n feeRate: number;\n isShortTrade: boolean;\n leverage: number;\n maxExposure: number;\n oraclePrice: number;\n poolPrice: number;\n}) => {\n const a = poolPrice / oraclePrice;\n const c = 1 / (depthFactor * maxExposure);\n const R = a - 1 - feeRate * (isShortTrade ? -1 : 1);\n const SN = currNotional < 0 ? -1 : 1;\n const Q = R - (SN / leverage) * (extendingPosition ? 1 : -1);\n return Math.abs(\n (-1 * Q +\n Math.sqrt(\n Math.pow(Q, 2) -\n 4 *\n a *\n c *\n (currNodeBalance -\n currIMR +\n (extendingPosition ? 0 : ((2 * SN) / leverage) * currNotional)),\n ) *\n (isShortTrade ? 1 : -1)) /\n (2 * a * c),\n );\n};\n\nexport const calculateIMR = ({\n marketLeverages,\n marketPrices,\n positions,\n}: {\n marketLeverages: Map<MarketId, number>;\n marketPrices: Map<MarketId, number>;\n positions: Map<MarketId, number>;\n}) => {\n return Array.from(positions.entries()).reduce(\n (sum, [marketId, positionSize]) => {\n const leverage = marketLeverages.get(marketId);\n return leverage\n ? sum +\n (Math.abs(positionSize) * (marketPrices.get(marketId) ?? 0)) /\n leverage\n : sum;\n },\n 0,\n );\n};\n\nexport const calculateLMR = ({\n marketPrices,\n positions,\n riskFactors,\n marketId,\n tradeSize,\n}: {\n marketId?: string;\n marketPrices: Map<MarketId, number>;\n positions: Map<MarketId, number>;\n riskFactors: Map<MarketId, number>;\n tradeSize?: number;\n}) =>\n Array.from(\n (marketId && tradeSize\n ? mergeMap(positions, [\n [marketId, (positions.get(marketId) ?? 0) + tradeSize],\n ])\n : positions\n ).entries(),\n ).reduce((sum, [marketId, positionSize]) => {\n const riskFactor = riskFactors.get(marketId);\n return riskFactor\n ? sum +\n Math.abs(positionSize) *\n (marketPrices.get(marketId) ?? 0) *\n Math.sqrt(riskFactor)\n : sum;\n }, 0);\n\n// if account balance is below LMR position is liquidable\n\nexport const calculateMarginRatio = ({\n LMR,\n totalBalance,\n tradeCost,\n}: {\n LMR: number;\n totalBalance: number;\n tradeCost: number;\n}) => {\n if (LMR === 0) {\n return 0;\n }\n if (tradeCost > totalBalance) {\n return 1;\n }\n if (totalBalance === tradeCost) {\n return Infinity;\n }\n return Math.min(1, LMR / (totalBalance - tradeCost));\n};\n\nexport const calculateTotalMargin = ({\n marketsTrackers,\n accountBalances,\n assetPrices,\n marketsTokenInfo,\n positions,\n rUSDAddress,\n}: {\n accountBalances: Map<Address, number>;\n assetPrices: Map<Address, number>;\n marketsTokenInfo: Map<\n MarketId,\n {\n quoteTokenId: string;\n underlyingAssetId: string;\n }\n >;\n marketsTrackers: Map<\n MarketId,\n {\n longADLUnwindPrice: number;\n longBaseMultiplier: number;\n longFundingValue: number;\n shortADLUnwindPrice: number;\n shortBaseMultiplier: number;\n shortFundingValue: number;\n }\n >;\n positions: {\n adlUnwindPrice: number;\n base: number;\n baseMultiplier: number;\n fundingValue: number;\n lastPrice: number;\n marketId: string;\n realizedPnl: number;\n }[];\n rUSDAddress?: string;\n}) => {\n const pnl = new Map<Address, number>();\n const rUSDPrice = (rUSDAddress && assetPrices.get(rUSDAddress)) ?? 1;\n positions.forEach((position) => {\n const marketTracker = marketsTrackers?.get(position.marketId);\n const tokenInfo = marketsTokenInfo.get(position.marketId);\n if (!tokenInfo) return;\n let fundingCashFlow = 0;\n let adlCashFlow = 0;\n\n if (marketTracker) {\n // fundingCashFlow\n const marketTrackerFundingValue =\n position.base < 0\n ? marketTracker.shortFundingValue\n : marketTracker.longFundingValue;\n const trackerDelta = marketTrackerFundingValue - position.fundingValue;\n fundingCashFlow =\n (trackerDelta / position.baseMultiplier) * -1 * position.base;\n\n // adlCashFlow\n const adlUnwindPrice =\n ((position.base < 0\n ? marketTracker.shortADLUnwindPrice\n : marketTracker.longADLUnwindPrice) -\n position.adlUnwindPrice) /\n position.baseMultiplier;\n const baseMultiplier =\n (position.base < 0\n ? marketTracker.shortBaseMultiplier\n : marketTracker.longBaseMultiplier) / position.baseMultiplier;\n const lastPriceCoefficient = 1 - baseMultiplier;\n const initialPrice = lastPriceCoefficient * position.lastPrice;\n adlCashFlow = (adlUnwindPrice - initialPrice) * position.base;\n }\n\n const unrealizedPnl =\n ((assetPrices.get(tokenInfo.quoteTokenId) ?? 0) - position.lastPrice) *\n position.base;\n\n pnl.set(\n tokenInfo.underlyingAssetId,\n (pnl.get(tokenInfo.underlyingAssetId) ?? 0) +\n position.realizedPnl +\n fundingCashFlow +\n adlCashFlow +\n unrealizedPnl,\n );\n });\n\n return Array.from(accountBalances.entries()).reduce(\n (sum, [address, balance]) =>\n sum +\n (balance + (pnl.get(address) ?? 0)) *\n (address === rUSDAddress\n ? 1\n : (assetPrices.get(address) ?? 0) / (rUSDPrice || 1)),\n 0,\n );\n};\n\nexport const calculatePositionAdjustedQty = (\n origQty: BigNumber,\n marketBaseMultiplier: BigNumber,\n positionBaseMultiplier: BigNumber,\n) => {\n return origQty.times(marketBaseMultiplier).div(positionBaseMultiplier);\n};\n\nexport const calculateAdjustedPositionBase = (\n positionBase: number,\n positionBaseMultiplier: number,\n marketBaseMultiplier: number,\n): number => {\n return positionBase * (marketBaseMultiplier / positionBaseMultiplier);\n};\n\nexport const calculateFundingPnl = (\n fundingValue: number,\n positionAvgEntryFundingValue: number,\n positionBase: number,\n positionBaseMultiplier: number,\n): number => {\n return (\n -1 *\n (((fundingValue - positionAvgEntryFundingValue) * positionBase) /\n positionBaseMultiplier)\n );\n};\n\nexport const calculatePricePnl = (\n price: number,\n positionAvgEntryPrice: number,\n positionBase: number,\n positionBaseMultiplier: number,\n marketBaseMultiplier: number,\n): number => {\n const adjustedPositionBase = calculateAdjustedPositionBase(\n positionBase,\n positionBaseMultiplier,\n marketBaseMultiplier,\n );\n return (price - positionAvgEntryPrice) * adjustedPositionBase;\n};\n\nexport const calculateAdlPnl = (\n adlUnwindPrice: number,\n baseMultiplier: number,\n positionAvgEntryPrice: number,\n positionAdlUnwindPrice: number,\n positionBaseMultiplier: number,\n positionBase: number,\n): number => {\n const currentAdlUnwindPrice =\n (adlUnwindPrice - positionAdlUnwindPrice) / positionBaseMultiplier;\n const initialPrice =\n (1 - baseMultiplier / positionBaseMultiplier) * positionAvgEntryPrice;\n return (currentAdlUnwindPrice - initialPrice) * positionBase;\n};\n\nexport const calculateRealBalance = (\n netDeposits: BigNumber,\n realized_pnl: BigNumber,\n) => {\n return netDeposits.plus(realized_pnl);\n};\n"]}
1
+ {"version":3,"file":"calculate.js","sourceRoot":"/","sources":["utils/calculate.ts"],"names":[],"mappings":"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","sourcesContent":["import { mergeMap } from './struct';\nimport BigNumber from 'bignumber.js';\n\nexport const POOL_IMR = 9.1;\n\ntype MarketId = string;\ntype Address = string;\n\nexport const calculateMaxExposure = ({\n poolBalance,\n riskFactor,\n poolIMR = POOL_IMR,\n}: {\n poolBalance: number;\n poolIMR?: number;\n riskFactor: number;\n}) => poolBalance / (poolIMR * Math.sqrt(riskFactor));\n\nexport const calculateEstimatedExecutionPrice = (\n poolPrice: number,\n size: number,\n oraclePrice: number,\n maxExposure: number,\n depth: number,\n) =>\n Math.max(0, poolPrice * (1 + (size * oraclePrice) / (depth * maxExposure)));\n\nexport const calculateTradeFee = ({\n feeRate,\n tradeNotional,\n}: {\n feeRate: number;\n tradeNotional: number;\n}) => feeRate * Math.abs(tradeNotional);\n\nexport const calculateSpread = ({\n depthFactor,\n maxExposure,\n oraclePrice,\n poolPrice,\n tradeNotional,\n}: {\n depthFactor: number;\n maxExposure: number;\n oraclePrice: number;\n poolPrice: number;\n tradeNotional: number;\n}) =>\n (poolPrice / oraclePrice) *\n (1 + tradeNotional / (depthFactor * maxExposure) - 1) *\n tradeNotional;\n\nexport const calculateEstimatedLiquidationPrice = ({\n LMR,\n accountBalance,\n isShort,\n notional,\n oraclePrice,\n}: {\n LMR: number;\n accountBalance: number;\n isShort: boolean;\n notional: number;\n oraclePrice: number;\n}) =>\n Math.max(\n 0,\n oraclePrice *\n (1 - ((accountBalance - LMR) / notional) * (isShort ? -1 : 1)),\n );\n\nexport const calculateLeverage = ({\n imrMultiplier,\n riskFactor,\n}: {\n imrMultiplier: number;\n riskFactor: number;\n}) => 1 / (imrMultiplier * Math.sqrt(riskFactor));\n\nexport const calculateRequiredMargin = ({\n currIMR,\n currentNotional,\n leverage,\n tradeNotional,\n}: {\n currIMR: number;\n currentNotional: number;\n leverage: number;\n tradeNotional: number;\n}) =>\n currIMR +\n (Math.abs(currentNotional + tradeNotional) - Math.abs(currentNotional)) /\n leverage;\n\nexport const calculateMaxOrderSize = ({\n currIMR,\n currNodeBalance,\n currNotional,\n depthFactor,\n extendingPosition,\n feeRate,\n isShortTrade,\n leverage,\n maxExposure,\n oraclePrice,\n poolPrice,\n}: {\n currIMR: number;\n currNodeBalance: number;\n currNotional: number;\n depthFactor: number;\n extendingPosition: boolean;\n feeRate: number;\n isShortTrade: boolean;\n leverage: number;\n maxExposure: number;\n oraclePrice: number;\n poolPrice: number;\n}) => {\n const a = poolPrice / oraclePrice;\n const c = 1 / (depthFactor * maxExposure);\n const R = a - 1 - feeRate * (isShortTrade ? -1 : 1);\n const SN = currNotional < 0 ? -1 : 1;\n const Q = R - (SN / leverage) * (extendingPosition ? 1 : -1);\n return Math.abs(\n (-1 * Q +\n Math.sqrt(\n Math.pow(Q, 2) -\n 4 *\n a *\n c *\n (currNodeBalance -\n currIMR +\n (extendingPosition ? 0 : ((2 * SN) / leverage) * currNotional)),\n ) *\n (isShortTrade ? 1 : -1)) /\n (2 * a * c),\n );\n};\n\nexport const calculateIMR = ({\n marketLeverages,\n marketPrices,\n positions,\n}: {\n marketLeverages: Map<MarketId, number>;\n marketPrices: Map<MarketId, number>;\n positions: Map<MarketId, number>;\n}) => {\n return Array.from(positions.entries()).reduce(\n (sum, [marketId, positionSize]) => {\n const leverage = marketLeverages.get(marketId);\n return leverage\n ? sum +\n (Math.abs(positionSize) * (marketPrices.get(marketId) ?? 0)) /\n leverage\n : sum;\n },\n 0,\n );\n};\n\nexport const calculateLMR = ({\n marketPrices,\n positions,\n riskFactors,\n marketId,\n tradeSize,\n}: {\n marketId?: string;\n marketPrices: Map<MarketId, number>;\n positions: Map<MarketId, number>;\n riskFactors: Map<MarketId, number>;\n tradeSize?: number;\n}) =>\n Array.from(\n (marketId && tradeSize\n ? mergeMap(positions, [\n [marketId, (positions.get(marketId) ?? 0) + tradeSize],\n ])\n : positions\n ).entries(),\n ).reduce((sum, [marketId, positionSize]) => {\n const riskFactor = riskFactors.get(marketId);\n return riskFactor\n ? sum +\n Math.abs(positionSize) *\n (marketPrices.get(marketId) ?? 0) *\n Math.sqrt(riskFactor)\n : sum;\n }, 0);\n\n// if account balance is below LMR position is liquidable\n\nexport const calculateMarginRatio = ({\n LMR,\n totalBalance,\n tradeCost,\n}: {\n LMR: number;\n totalBalance: number;\n tradeCost: number;\n}) => {\n if (LMR === 0) {\n return 0;\n }\n if (tradeCost > totalBalance) {\n return 1;\n }\n if (totalBalance === tradeCost) {\n return Infinity;\n }\n return Math.min(1, LMR / (totalBalance - tradeCost));\n};\n\nexport const calculateTotalMargin = ({\n marketsTrackers,\n accountBalances,\n assetPrices,\n marketsTokenInfo,\n positions,\n rUSDAddress,\n}: {\n accountBalances: Map<Address, number>;\n assetPrices: Map<Address, number>;\n marketsTokenInfo: Map<\n MarketId,\n {\n quoteTokenId: string;\n underlyingAssetId: string;\n }\n >;\n marketsTrackers: Map<\n MarketId,\n {\n longADLUnwindPrice: number;\n longBaseMultiplier: number;\n longFundingValue: number;\n shortADLUnwindPrice: number;\n shortBaseMultiplier: number;\n shortFundingValue: number;\n }\n >;\n positions: {\n adlUnwindPrice: number;\n base: number;\n baseMultiplier: number;\n fundingValue: number;\n lastPrice: number;\n marketId: string;\n realizedPnl: number;\n }[];\n rUSDAddress?: string;\n}) => {\n const pnl = new Map<Address, number>();\n const rUSDPrice = (rUSDAddress && assetPrices.get(rUSDAddress)) ?? 1;\n positions.forEach((position) => {\n const marketTracker = marketsTrackers?.get(position.marketId);\n const tokenInfo = marketsTokenInfo.get(position.marketId);\n if (!tokenInfo) return;\n let fundingCashFlow = 0;\n let adlCashFlow = 0;\n\n if (marketTracker) {\n // fundingCashFlow\n const marketTrackerFundingValue =\n position.base < 0\n ? marketTracker.shortFundingValue\n : marketTracker.longFundingValue;\n const trackerDelta = marketTrackerFundingValue - position.fundingValue;\n fundingCashFlow =\n (trackerDelta / position.baseMultiplier) * -1 * position.base;\n\n // adlCashFlow\n const adlUnwindPrice =\n ((position.base < 0\n ? marketTracker.shortADLUnwindPrice\n : marketTracker.longADLUnwindPrice) -\n position.adlUnwindPrice) /\n position.baseMultiplier;\n const baseMultiplier =\n (position.base < 0\n ? marketTracker.shortBaseMultiplier\n : marketTracker.longBaseMultiplier) / position.baseMultiplier;\n const lastPriceCoefficient = 1 - baseMultiplier;\n const initialPrice = lastPriceCoefficient * position.lastPrice;\n adlCashFlow = (adlUnwindPrice - initialPrice) * position.base;\n }\n\n const unrealizedPnl =\n ((assetPrices.get(tokenInfo.quoteTokenId) ?? 0) - position.lastPrice) *\n position.base;\n\n pnl.set(\n tokenInfo.underlyingAssetId,\n (pnl.get(tokenInfo.underlyingAssetId) ?? 0) +\n position.realizedPnl +\n fundingCashFlow +\n adlCashFlow +\n unrealizedPnl,\n );\n });\n\n return Array.from(accountBalances.entries()).reduce(\n (sum, [address, balance]) =>\n sum +\n (balance + (pnl.get(address) ?? 0)) *\n (address === rUSDAddress\n ? 1\n : (assetPrices.get(address) ?? 0) / (rUSDPrice || 1)),\n 0,\n );\n};\n\nexport const calculateAdjustedPositionBase = (\n positionBase: number,\n positionBaseMultiplier: number,\n marketBaseMultiplier: number,\n): number => {\n return positionBase * (marketBaseMultiplier / positionBaseMultiplier);\n};\n\nexport const calculateFundingPnl = (\n fundingValue: number,\n positionAvgEntryFundingValue: number,\n positionBase: number,\n positionBaseMultiplier: number,\n): number => {\n return (\n -1 *\n (((fundingValue - positionAvgEntryFundingValue) * positionBase) /\n positionBaseMultiplier)\n );\n};\n\nexport const calculatePricePnl = (\n price: number,\n positionAvgEntryPrice: number,\n positionBase: number,\n positionBaseMultiplier: number,\n marketBaseMultiplier: number,\n): number => {\n const adjustedPositionBase = calculateAdjustedPositionBase(\n positionBase,\n positionBaseMultiplier,\n marketBaseMultiplier,\n );\n return (price - positionAvgEntryPrice) * adjustedPositionBase;\n};\n\nexport const calculateAdlPnl = (\n adlUnwindPrice: number,\n baseMultiplier: number,\n positionAvgEntryPrice: number,\n positionAdlUnwindPrice: number,\n positionBaseMultiplier: number,\n positionBase: number,\n): number => {\n const currentAdlUnwindPrice =\n (adlUnwindPrice - positionAdlUnwindPrice) / positionBaseMultiplier;\n const initialPrice =\n (1 - baseMultiplier / positionBaseMultiplier) * positionAvgEntryPrice;\n return (currentAdlUnwindPrice - initialPrice) * positionBase;\n};\n\nexport const calculateRealBalance = (\n netDeposits: BigNumber,\n realized_pnl: BigNumber,\n) => {\n return netDeposits.plus(realized_pnl);\n};\n\nexport const calculatePositionAdjustedQty = (\n origQty: BigNumber,\n marketBaseMultiplier: BigNumber,\n positionBaseMultiplier: BigNumber,\n): BigNumber => {\n return origQty.times(marketBaseMultiplier).div(positionBaseMultiplier);\n};\n\n/**\n * Note: This function assumes all the inputs are scaled by 10^18.\n */\nexport const calculatePositionAdlPnL = ({\n marketTrackerAdlUnwindPrice,\n marketTrackerBaseMultiplier,\n positionBase,\n positionAvgEntryPrice,\n positionTrackerBaseMultiplier,\n positionTrackerAdlUnwindPrice,\n}: {\n marketTrackerAdlUnwindPrice: BigNumber;\n marketTrackerBaseMultiplier: BigNumber;\n positionBase: BigNumber;\n positionAvgEntryPrice: BigNumber;\n positionTrackerBaseMultiplier: BigNumber;\n positionTrackerAdlUnwindPrice: BigNumber;\n}): BigNumber => {\n const currentAdlUnwindPrice = marketTrackerAdlUnwindPrice\n .minus(positionTrackerAdlUnwindPrice)\n .multipliedBy(1e18)\n .div(positionTrackerBaseMultiplier);\n\n const initialPrice = positionAvgEntryPrice\n .times(\n BigNumber(1e18).minus(\n marketTrackerBaseMultiplier\n .multipliedBy(1e18)\n .div(positionTrackerBaseMultiplier),\n ),\n )\n .div(1e18);\n\n const adlPnL = positionBase\n .times(currentAdlUnwindPrice.minus(initialPrice))\n .div(1e18);\n\n return adlPnL;\n};\n"]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  /* eslint-disable @typescript-eslint/no-shadow */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.groupBy = exports.findBy = exports.filterBy = exports.mergeMap = exports.pluck = exports.createMap = void 0;
4
+ exports.assertValueExists = exports.isNonNullable = exports.groupBy = exports.findBy = exports.filterBy = exports.mergeMap = exports.pluck = exports.createMap = void 0;
5
5
  var createMap = function (a, k, m) {
6
6
  return new Map(a.map(function (i) { return [k(i), m(i)]; }));
7
7
  };
@@ -43,5 +43,16 @@ var groupBy = function (items, key) {
43
43
  return groupedItems;
44
44
  };
45
45
  exports.groupBy = groupBy;
46
+ var isNonNullable = function (p) {
47
+ return p !== null;
48
+ };
49
+ exports.isNonNullable = isNonNullable;
50
+ function assertValueExists(value) {
51
+ if (value == null) {
52
+ throw new Error('Expected value to always be present');
53
+ }
54
+ return value;
55
+ }
56
+ exports.assertValueExists = assertValueExists;
46
57
  /* eslint-enable @typescript-eslint/no-shadow */
47
58
  //# sourceMappingURL=struct.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"struct.js","sourceRoot":"/","sources":["utils/struct.ts"],"names":[],"mappings":";AAAA,iDAAiD;;;AAE1C,IAAM,SAAS,GAAG,UAAU,CAAM,EAAE,CAAc,EAAE,CAAc;IACvE,OAAA,IAAI,GAAG,CAAO,CAAC,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAZ,CAAY,CAAC,CAAC;AAAzC,CAAyC,CAAC;AAD/B,QAAA,SAAS,aACsB;AAErC,IAAM,KAAK,GAAG,UAA2B,CAAa,EAAE,CAAI;IACjE,OAAA,IAAA,iBAAS,EACP,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EACvB,UAAC,EAAG;YAAF,CAAC,QAAA;QAAM,OAAA,CAAC;IAAD,CAAC,EACV,UAAC,EAAK;YAAF,CAAC,QAAA;QAAM,OAAA,CAAC,CAAC,CAAC,CAAC;IAAJ,CAAI,CAChB;AAJD,CAIC,CAAC;AALS,QAAA,KAAK,SAKd;AAEG,IAAM,QAAQ,GAAG,UAAO,CAAY,EAAE,CAAuB;IAClE,OAAA,IAAI,GAAG,CACL,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAC5B,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/C,CACF;AAJD,CAIC,CAAC;AALS,QAAA,QAAQ,YAKjB;AAEG,IAAM,QAAQ,GAAG,UAA0B,CAAM,EAAE,CAAI,EAAE,CAAI;IAClE,OAAA,CAAC,CAAC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAV,CAAU,CAAC;AAA3B,CAA2B,CAAC;AADjB,QAAA,QAAQ,YACS;AAEvB,IAAM,MAAM,GAAG,UAA0B,CAAM,EAAE,CAAI,EAAE,CAAI;IAChE,OAAA,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAV,CAAU,CAAC;AAAzB,CAAyB,CAAC;AADf,QAAA,MAAM,UACS;AAErB,IAAM,OAAO,GAAG,UAAO,KAAU,EAAE,GAAuB;IAC/D,IAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI;;QACjB,IAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAS,CAAC,CAAC;QACxC,CAAC;QACD,MAAA,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,0CAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAXW,QAAA,OAAO,WAWlB;AAEF,gDAAgD","sourcesContent":["/* eslint-disable @typescript-eslint/no-shadow */\n\nexport const createMap = <T, K, V>(a: T[], k: (v: T) => K, m: (v: T) => V) =>\n new Map<K, V>(a.map((i) => [k(i), m(i)]));\n\nexport const pluck = <T, K extends keyof T, OK>(m: Map<OK, T>, k: K) =>\n createMap(\n Array.from(m.entries()),\n ([k]) => k,\n ([, v]) => v[k],\n );\n\nexport const mergeMap = <T, K>(m: Map<K, T>, o: [K, T][] | Map<K, T>) =>\n new Map(\n Array.from(m.entries()).concat(\n o instanceof Map ? Array.from(o.entries()) : o,\n ),\n );\n\nexport const filterBy = <T, K extends keyof T, V>(a: T[], k: K, v: V) =>\n a.filter((a) => a[k] === v);\n\nexport const findBy = <T, K extends keyof T, V>(a: T[], k: K, v: V) =>\n a.find((a) => a[k] === v);\n\nexport const groupBy = <T, K>(items: T[], key: (item: T) => K | K) => {\n const groupedItems = new Map<K, T[]>();\n items.forEach((item) => {\n const keyValue = key(item);\n if (!keyValue) return;\n if (!groupedItems.has(keyValue)) {\n groupedItems.set(keyValue, [] as T[]);\n }\n groupedItems.get(keyValue)?.push(item);\n });\n return groupedItems;\n};\n\n/* eslint-enable @typescript-eslint/no-shadow */\n"]}
1
+ {"version":3,"file":"struct.js","sourceRoot":"/","sources":["utils/struct.ts"],"names":[],"mappings":";AAAA,iDAAiD;;;AAE1C,IAAM,SAAS,GAAG,UAAU,CAAM,EAAE,CAAc,EAAE,CAAc;IACvE,OAAA,IAAI,GAAG,CAAO,CAAC,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAZ,CAAY,CAAC,CAAC;AAAzC,CAAyC,CAAC;AAD/B,QAAA,SAAS,aACsB;AAErC,IAAM,KAAK,GAAG,UAA2B,CAAa,EAAE,CAAI;IACjE,OAAA,IAAA,iBAAS,EACP,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EACvB,UAAC,EAAG;YAAF,CAAC,QAAA;QAAM,OAAA,CAAC;IAAD,CAAC,EACV,UAAC,EAAK;YAAF,CAAC,QAAA;QAAM,OAAA,CAAC,CAAC,CAAC,CAAC;IAAJ,CAAI,CAChB;AAJD,CAIC,CAAC;AALS,QAAA,KAAK,SAKd;AAEG,IAAM,QAAQ,GAAG,UAAO,CAAY,EAAE,CAAuB;IAClE,OAAA,IAAI,GAAG,CACL,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAC5B,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/C,CACF;AAJD,CAIC,CAAC;AALS,QAAA,QAAQ,YAKjB;AAEG,IAAM,QAAQ,GAAG,UAA0B,CAAM,EAAE,CAAI,EAAE,CAAI;IAClE,OAAA,CAAC,CAAC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAV,CAAU,CAAC;AAA3B,CAA2B,CAAC;AADjB,QAAA,QAAQ,YACS;AAEvB,IAAM,MAAM,GAAG,UAA0B,CAAM,EAAE,CAAI,EAAE,CAAI;IAChE,OAAA,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAV,CAAU,CAAC;AAAzB,CAAyB,CAAC;AADf,QAAA,MAAM,UACS;AAErB,IAAM,OAAO,GAAG,UAAO,KAAU,EAAE,GAAuB;IAC/D,IAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI;;QACjB,IAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAS,CAAC,CAAC;QACxC,CAAC;QACD,MAAA,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,0CAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAXW,QAAA,OAAO,WAWlB;AAEK,IAAM,aAAa,GAAG,UAAI,CAAI;IACnC,OAAA,CAAC,KAAK,IAAI;AAAV,CAAU,CAAC;AADA,QAAA,aAAa,iBACb;AAEb,SAAgB,iBAAiB,CAAI,KAA2B;IAC9D,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AALD,8CAKC;AAED,gDAAgD","sourcesContent":["/* eslint-disable @typescript-eslint/no-shadow */\n\nexport const createMap = <T, K, V>(a: T[], k: (v: T) => K, m: (v: T) => V) =>\n new Map<K, V>(a.map((i) => [k(i), m(i)]));\n\nexport const pluck = <T, K extends keyof T, OK>(m: Map<OK, T>, k: K) =>\n createMap(\n Array.from(m.entries()),\n ([k]) => k,\n ([, v]) => v[k],\n );\n\nexport const mergeMap = <T, K>(m: Map<K, T>, o: [K, T][] | Map<K, T>) =>\n new Map(\n Array.from(m.entries()).concat(\n o instanceof Map ? Array.from(o.entries()) : o,\n ),\n );\n\nexport const filterBy = <T, K extends keyof T, V>(a: T[], k: K, v: V) =>\n a.filter((a) => a[k] === v);\n\nexport const findBy = <T, K extends keyof T, V>(a: T[], k: K, v: V) =>\n a.find((a) => a[k] === v);\n\nexport const groupBy = <T, K>(items: T[], key: (item: T) => K | K) => {\n const groupedItems = new Map<K, T[]>();\n items.forEach((item) => {\n const keyValue = key(item);\n if (!keyValue) return;\n if (!groupedItems.has(keyValue)) {\n groupedItems.set(keyValue, [] as T[]);\n }\n groupedItems.get(keyValue)?.push(item);\n });\n return groupedItems;\n};\n\nexport const isNonNullable = <T>(p: T): p is NonNullable<typeof p> =>\n p !== null;\n\nexport function assertValueExists<T>(value: T | null | undefined): T {\n if (value == null) {\n throw new Error('Expected value to always be present');\n }\n return value;\n}\n\n/* eslint-enable @typescript-eslint/no-shadow */\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reyaxyz/common",
3
- "version": "0.313.0",
3
+ "version": "0.314.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -44,5 +44,5 @@
44
44
  "generate:coverage-badges": "npx istanbul-badges-readme --silent"
45
45
  },
46
46
  "packageManager": "pnpm@8.3.1",
47
- "gitHead": "249943954846e5be8503d04742c9597d25707dd1"
47
+ "gitHead": "032dd7a9acede5d077be3aeaee4f11e1e4036aca"
48
48
  }
@@ -89,6 +89,8 @@ type Position = {
89
89
  block_timestamp: Decimal | null;
90
90
  block_number: Decimal;
91
91
  unique_id: bigint | null;
92
+ adjusted_base: Decimal | null;
93
+ adl_realized_pnl: Decimal | null;
92
94
  };
93
95
 
94
96
  type ConditionalOrder = {
@@ -351,7 +353,8 @@ export type TradingApiSource = {
351
353
  'wallet/:address/positions': TradingApiListEndpoint<
352
354
  Position,
353
355
  AddressParam,
354
- 'position'
356
+ 'position',
357
+ Omit<Position, 'adjusted_base' | 'adl_realized_pnl'>
355
358
  >;
356
359
  'wallet/:address/openOrders': TradingApiListEndpoint<
357
360
  ConditionalOrder,
@@ -312,14 +312,6 @@ export const calculateTotalMargin = ({
312
312
  );
313
313
  };
314
314
 
315
- export const calculatePositionAdjustedQty = (
316
- origQty: BigNumber,
317
- marketBaseMultiplier: BigNumber,
318
- positionBaseMultiplier: BigNumber,
319
- ) => {
320
- return origQty.times(marketBaseMultiplier).div(positionBaseMultiplier);
321
- };
322
-
323
315
  export const calculateAdjustedPositionBase = (
324
316
  positionBase: number,
325
317
  positionBaseMultiplier: number,
@@ -377,3 +369,51 @@ export const calculateRealBalance = (
377
369
  ) => {
378
370
  return netDeposits.plus(realized_pnl);
379
371
  };
372
+
373
+ export const calculatePositionAdjustedQty = (
374
+ origQty: BigNumber,
375
+ marketBaseMultiplier: BigNumber,
376
+ positionBaseMultiplier: BigNumber,
377
+ ): BigNumber => {
378
+ return origQty.times(marketBaseMultiplier).div(positionBaseMultiplier);
379
+ };
380
+
381
+ /**
382
+ * Note: This function assumes all the inputs are scaled by 10^18.
383
+ */
384
+ export const calculatePositionAdlPnL = ({
385
+ marketTrackerAdlUnwindPrice,
386
+ marketTrackerBaseMultiplier,
387
+ positionBase,
388
+ positionAvgEntryPrice,
389
+ positionTrackerBaseMultiplier,
390
+ positionTrackerAdlUnwindPrice,
391
+ }: {
392
+ marketTrackerAdlUnwindPrice: BigNumber;
393
+ marketTrackerBaseMultiplier: BigNumber;
394
+ positionBase: BigNumber;
395
+ positionAvgEntryPrice: BigNumber;
396
+ positionTrackerBaseMultiplier: BigNumber;
397
+ positionTrackerAdlUnwindPrice: BigNumber;
398
+ }): BigNumber => {
399
+ const currentAdlUnwindPrice = marketTrackerAdlUnwindPrice
400
+ .minus(positionTrackerAdlUnwindPrice)
401
+ .multipliedBy(1e18)
402
+ .div(positionTrackerBaseMultiplier);
403
+
404
+ const initialPrice = positionAvgEntryPrice
405
+ .times(
406
+ BigNumber(1e18).minus(
407
+ marketTrackerBaseMultiplier
408
+ .multipliedBy(1e18)
409
+ .div(positionTrackerBaseMultiplier),
410
+ ),
411
+ )
412
+ .div(1e18);
413
+
414
+ const adlPnL = positionBase
415
+ .times(currentAdlUnwindPrice.minus(initialPrice))
416
+ .div(1e18);
417
+
418
+ return adlPnL;
419
+ };
@@ -36,4 +36,14 @@ export const groupBy = <T, K>(items: T[], key: (item: T) => K | K) => {
36
36
  return groupedItems;
37
37
  };
38
38
 
39
+ export const isNonNullable = <T>(p: T): p is NonNullable<typeof p> =>
40
+ p !== null;
41
+
42
+ export function assertValueExists<T>(value: T | null | undefined): T {
43
+ if (value == null) {
44
+ throw new Error('Expected value to always be present');
45
+ }
46
+ return value;
47
+ }
48
+
39
49
  /* eslint-enable @typescript-eslint/no-shadow */