import { ITradingStorage, IBorrowingFees, IPairsStorage, IFundingFees } from "../contracts/types/generated/GNSMultiCollatDiamond"; import { BorrowingFee } from "./fees/borrowing"; import { FeeTier, TraderEnrollment, TraderInfo, StakingInfo } from "./fees/tiers/types"; export type PairIndexes = { [key: string]: PairIndex; }; export type TradeFeesData = { realizedTradingFeesCollateral: number; realizedPnlCollateral: number; manuallyRealizedNegativePnlCollateral: number; alreadyTransferredNegativePnlCollateral: number; virtualAvailableCollateralInDiamond: number; initialAccFundingFeeP: number; initialAccBorrowingFeeP: number; }; export type UiRealizedPnlData = { realizedTradingFeesCollateral: number; realizedOldBorrowingFeesCollateral: number; realizedNewBorrowingFeesCollateral: number; realizedFundingFeesCollateral: number; realizedPnlPartialCloseCollateral: number; pnlWithdrawnCollateral: number; }; export type CounterTradeSettings = { maxLeverage: number; feeRateMultiplier: number; }; export type TradeContainer = { trade: Trade; tradeInfo: TradeInfo; liquidationParams: LiquidationParams; initialAccFees: TradeInitialAccFees; tradeFeesData?: TradeFeesData; uiRealizedPnlData?: UiRealizedPnlData; receivedAt?: number; }; export type Trade = { user: string; index: number; pairIndex: PairIndex; leverage: number; long: boolean; isOpen: boolean; collateralIndex: number; tradeType: TradeType; collateralAmount: number; openPrice: number; sl: number; tp: number; isCounterTrade?: boolean; positionSizeToken?: number; }; export type TradeInfo = { createdBlock: number; tpLastUpdatedBlock: number; slLastUpdatedBlock: number; maxSlippageP: number; lastOiUpdateTs: number; collateralPriceUsd: number; contractsVersion: number; lastPosIncreaseBlock: number; }; export type LiquidationParams = { maxLiqSpreadP: number; startLiqThresholdP: number; endLiqThresholdP: number; startLeverage: number; endLeverage: number; }; export type TradingGroup = { maxLeverage: number; minLeverage: number; name: string; }; export type Fee = { totalPositionSizeFeeP: number; totalLiqCollateralFeeP: number; oraclePositionSizeFeeP: number; minPositionSizeUsd: number; }; export type GlobalTradeFeeParams = { referralFeeP: number; govFeeP: number; triggerOrderFeeP: number; gnsOtcFeeP: number; gTokenFeeP: number; }; export type PairDepth = { onePercentDepthAboveUsd: number; onePercentDepthBelowUsd: number; }; export type PairParamsBorrowingFees = { pairs: BorrowingFee.Pair[]; groups: BorrowingFee.Group[]; }; export type Pair = { name: string; description: string; from: string; to: string; feeIndex: number; groupIndex: number; pairIndex: PairIndex; spreadP: number; }; export type TradeHistoryRecord = { action: string; address: string; block: number; long: number; collateralPriceUsd: number; collateralIndex: number; date: string; leverage: number; pair: string; pnl_net: number; price: number; size: number; tx: string; tradeIndex: number; collateralDelta: number | null; leverageDelta: number | null; marketPrice: number | null; isCounterTrade: 0 | 1; meta: OpenTradeHistoryMetaData | CloseTradeHistoryMetaData | PartialCloseTradeHistoryMetaData | PartialOpenTradeHistoryMetaData | WithdrawPnLHistoryMetaData | LeverageUpdateHistoryMetaData; }; export type HistoryPriceImpact = { fixedSpreadP: number; priceAfterImpact: number; skewPriceImpactP: number; positionSizeToken: number; totalPriceImpactP: number; cumulVolPriceImpactP: number; }; export type OpenTradeHistoryMetaData = { liqPrice: number; amountSentToTrader: number; percentProfit: number; priceImpact: HistoryPriceImpact; tradeFeesData: TradeFeesData; uiRealizedPnlData: UiRealizedPnlData; }; export type CloseTradeHistoryMetaData = OpenTradeHistoryMetaData; export type PartialOpenTradeHistoryMetaData = { newLeverage: number; newLiqPrice: number; newOpenPrice: number; existingLiqPrice: number; newCollateralAmount: number; newEffectiveLeverage: number; existingPnlCollateral: number; openingFeesCollateral: number; isCounterTradeValidated: boolean; newPositionSizeCollateral: number; oldPosSizePlusPnlCollateral: number; positionSizeCollateralDelta: number; counterTradeCollateralToReturn: number; existingPositionSizeCollateral: number; exceedingPositionSizeCollateral: number; priceImpact: HistoryPriceImpact; tradeFeesData: TradeFeesData; uiRealizedPnlData: UiRealizedPnlData; }; export type PartialCloseTradeHistoryMetaData = { newLeverage: number; newLiqPrice: number; existingLiqPrice: number; isLeverageUpdate: boolean; existingPnlPercent: number; newCollateralAmount: number; closingFeeCollateral: number; collateralSentToTrader: number; pnlToRealizeCollateral: number; partialNetPnlCollateral: number; partialRawPnlCollateral: number; positionSizeCollateralDelta: number; availableCollateralInDiamond: number; existingPositionSizeCollateral: number; totalAvailableCollateralInDiamond: number; priceImpact: HistoryPriceImpact; tradeFeesData: TradeFeesData; uiRealizedPnlData: UiRealizedPnlData; }; export type LeverageUpdateHistoryMetaData = { availableCollateralInDiamond: number; existingLiqPrice: number; govFeeCollateral: number; newCollateralAmount: number; newEffectiveLeverage: number; newLeverage: number; newLiqPrice: number; totalTradeAvailableCollateralInDiamond: number; tradeFeesData: TradeFeesData; uiRealizedPnlData: UiRealizedPnlData; }; export type WithdrawPnLHistoryMetaData = { pnlPercent: number; currentPairPrice: number; pnlInputCollateral: number; pnlWithdrawnCollateral: number; withdrawablePositivePnlCollateral: number; priceImpact: HistoryPriceImpact; tradeFeesData: TradeFeesData; uiRealizedPnlData: UiRealizedPnlData; }; export type MarketOrder = { trader: string; pairIndex: PairIndex; index: number; block: number; open: boolean; }; export type ChartBar = { close: number; high: number; isBarClosed: boolean; isLastBar: boolean; low: number; open: number; time: number; }; export type LeaderboardTrader = { address: string; tradesCount: number; winrate: number; pnl: number; volume: number; score: number; totalPnlUsd: number; }; export type OpenTradeParams = [ address: string, pairIndex: PairIndex, x1: number, x2: number, wei: number, price: string, buy: boolean, leverage: number, takeProfit: string, stopLoss: string ]; export declare enum PositionType { LONG = "LONG", SHORT = "SHORT" } export type TradeContainerRaw = { trade: ITradingStorage.TradeStruct; tradeInfo: ITradingStorage.TradeInfoStruct; liquidationParams: IPairsStorage.GroupLiquidationParamsStruct; initialAccFees: IBorrowingFees.BorrowingInitialAccFeesStruct; tradeFeesData: IFundingFees.TradeFeesDataStruct; uiRealizedPnlData?: IFundingFees.UiRealizedPnlDataStruct; }; export type OiWindowsSettings = { startTs: number; windowsDuration: number; windowsCount: number; }; export type PairOi = { oiLongUsd: number; oiShortUsd: number; }; export type OiWindow = PairOi; export type OiWindows = { [key: string]: OiWindow; }; export type FeeTiers = { tiers: FeeTier[]; multipliers: number[]; currentDay: number; stakingTiers: FeeTier[]; gnsVaultAddress?: string; useGnsVaultBalance?: boolean; }; export type TraderFeeTiers = { traderEnrollment: TraderEnrollment; traderInfo: TraderInfo; stakingInfo: StakingInfo; inboundPoints: number; outboundPoints: number; lastDayUpdatedPoints: number; expiredPoints: number[]; unclaimedPoints: number; }; export type PairFactor = { cumulativeFactor: number; protectionCloseFactor: number; protectionCloseFactorBlocks: number; exemptOnOpen: boolean; exemptAfterProtectionCloseFactor: boolean; }; export type UserPriceImpact = { cumulVolPriceImpactMultiplier: number; fixedSpreadP: number; }; export declare enum PendingOrderType { MARKET_OPEN = 0, MARKET_CLOSE = 1, LIMIT_OPEN = 2, STOP_OPEN = 3, TP_CLOSE = 4, SL_CLOSE = 5, LIQ_CLOSE = 6 } export declare enum CounterType { TRADE = 0, PENDING_ORDER = 1 } export declare enum TradeType { TRADE = 0, LIMIT = 1, STOP = 2 } export type OpenInterest = { long: number; short: number; max: number; }; export type PendingOrder = { trade: Trade; user: string; index: string; isOpen: boolean; orderType: PendingOrderType; createdBlock: string; maxSlippageP: string; }; export type TradeInitialAccFees = BorrowingFee.InitialAccFees; export declare enum PairIndex { BTCUSD = 0, ETHUSD = 1, LINKUSD = 2, DOGEUSD = 3, MATICUSD = 4, ADAUSD = 5, SUSHIUSD = 6, AAVEUSD = 7, ALGOUSD = 8, BATUSD = 9, COMPUSD = 10, DOTUSD = 11, EOSUSD = 12, LTCUSD = 13, MANAUSD = 14, OMGUSD = 15, SNXUSD = 16, UNIUSD = 17, XLMUSD = 18, XRPUSD = 19, ZECUSD = 20, EURUSD = 21, USDJPY = 22, GBPUSD = 23, USDCHF = 24, AUDUSD = 25, USDCAD = 26, NZDUSD = 27, EURCHF = 28, EURJPY = 29, EURGBP = 30, LUNAUSD = 31, YFIUSD = 32, SOLUSD = 33, XTZUSD = 34, BCHUSD = 35, BNTUSD = 36, CRVUSD = 37, DASHUSD = 38, ETCUSD = 39, ICPUSD = 40, MKRUSD = 41, NEOUSD = 42, THETAUSD = 43, TRXUSD = 44, ZRXUSD = 45, SANDUSD = 46, BNBUSD = 47, AXSUSD = 48, GRTUSD = 49, HBARUSD = 50, XMRUSD = 51, ENJUSD = 52, FTMUSD = 53, FTTUSD = 54, APEUSD = 55, CHZUSD = 56, SHIBUSD = 57, AAPLUSD = 58, FBUSD = 59, GOOGLUSD = 60, AMZNUSD = 61, MSFTUSD = 62, TSLAUSD = 63, SNAPUSD = 64, NVDAUSD = 65, VUSD = 66, MAUSD = 67, PFEUSD = 68, KOUSD = 69, DISUSD = 70, GMEUSD = 71, NKEUSD = 72, AMDUSD = 73, PYPLUSD = 74, ABNBUSD = 75, BAUSD = 76, SBUXUSD = 77, WMTUSD = 78, INTCUSD = 79, MCDUSD = 80, METAUSD = 81, GOOGLUSD2 = 82, GMEUSD2 = 83, AMZNUSD2 = 84, TSLAUSD2 = 85, SPYUSD = 86, QQQUSD = 87, IWMUSD = 88, DIAUSD = 89, XAUUSD = 90, XAGUSD = 91, USDCNH = 92, USDSGD = 93, EURSEK = 94, USDKRW = 95, EURNOK = 96, USDINR = 97, USDMXN = 98, USDTWD = 99, USDZAR = 100, USDBRL = 101, AVAXUSD = 102, ATOMUSD = 103, NEARUSD = 104, QNTUSD = 105, IOTAUSD = 106, TONUSD = 107, RPLUSD = 108, ARBUSD = 109, EURAUD = 110, EURNZD = 111, EURCAD = 112, GBPAUD = 113, GBPNZD = 114, GBPCAD = 115, GBPCHF = 116, GBPJPY = 117, AUDNZD = 118, AUDCAD = 119, AUDCHF = 120, AUDJPY = 121, NZDCAD = 122, NZDCHF = 123, NZDJPY = 124, CADCHF = 125, CADJPY = 126, CHFJPY = 127, LDOUSD = 128, INJUSD = 129, RUNEUSD = 130, CAKEUSD = 131, FXSUSD = 132, TWTUSD = 133, PEPEUSD = 134, DYDXUSD = 135, GMXUSD = 136, FILUSD = 137, APTUSD = 138, IMXUSD = 139, VETUSD = 140, OPUSD = 141, RNDRUSD = 142, EGLDUSD = 143, TIAUSD = 144, STXUSD = 145, FLOWUSD = 146, KAVAUSD = 147, GALAUSD = 148, MINAUSD = 149, ORDIUSD = 150, ILVUSD = 151, KLAYUSD = 152, SUIUSD = 153, BLURUSD = 154, FETUSD = 155, CFXUSD = 156, BEAMUSD = 157, ARUSD = 158, SEIUSD = 159, BTTUSD = 160, ROSEUSD = 161, WOOUSD = 162, AGIXUSD = 163, ZILUSD = 164, GMTUSD = 165, ASTRUSD = 166, ONEINCHUSD = 167, FLOKIUSD = 168, QTUMUSD = 169, OCEANUSD = 170, WLDUSD = 171, MASKUSD = 172, CELOUSD = 173, LRCUSD = 174, ENSUSD = 175, MEMEUSD = 176, ANKRUSD = 177, IOTXUSD = 178, ICXUSD = 179, KSMUSD = 180, RVNUSD = 181, ANTUSD = 182, WAVESUSD = 183, SKLUSD = 184, SUPERUSD = 185, BALUSD = 186, WTIUSD = 187, XPTUSD = 188, XPDUSD = 189, HGUSD = 190, JUPUSD = 191, MANTAUSD = 192, BONKUSD = 193, PENDLEUSD = 194, OSMOUSD = 195, ALTUSD = 196, UMAUSD = 197, MAGICUSD = 198, API3USD = 199, STRKUSD = 200, DYMUSD = 201, NTRNUSD = 202, PYTHUSD = 203, SCUSD = 204, WIFUSD = 205, PIXELUSD = 206, JTOUSD = 207, MAVIAUSD = 208, MYROUSD = 209, STGUSD = 210, BOMEUSD = 211, ETHFIUSD = 212, METISUSD = 213, AEVOUSD = 214, ONDOUSD = 215, MNTUSD = 216, KASUSD = 217, RONINUSD = 218, ENAUSD = 219, WUSD = 220, ZEUSUSD = 221, TNSRUSD = 222, TAOUSD = 223, OMNIUSD = 224, PRCLUSD = 225, MERLUSD = 226, SAFEUSD = 227, SAGAUSD = 228, LLUSD = 229, MSNUSD = 230, REZUSD = 231, NOTUSD = 232, IOUSD = 233, BRETTUSD = 234, ATHUSD = 235, ZROUSD = 236, ZKUSD = 237, LISTAUSD = 238, BLASTUSD = 239, RATSUSD = 240, BNXUSD = 241, PEOPLEUSD = 242, TURBOUSD = 243, SATSUSD = 244, POPCATUSD = 245, MOGUSD = 246, OMUSD = 247, COREUSD = 248, JASMYUSD = 249, DARUSD = 250, MEWUSD = 251, DEGENUSD = 252, SLERFUSD = 253, UXLINKUSD = 254, AVAILUSD = 255, BANANAUSD = 256, RAREUSD = 257, SYSUSD = 258, NMRUSD = 259, RSRUSD = 260, SYNUSD = 261, AUCTIONUSD = 262, ALICEUSD = 263, SUNUSD = 264, TRBUSD = 265, DOGSUSD = 266, SSVUSD = 267, PONKEUSD = 268, POLUSD = 269, RDNTUSD = 270, FLUXUSD = 271, NEIROUSD = 272, SUNDOGUSD = 273, CATUSD = 274, BABYDOGEUSD = 275, REEFUSD = 276, CKBUSD = 277, CATIUSD = 278, LOOMUSD = 279, ZETAUSD = 280, HMSTRUSD = 281, EIGENUSD = 282, POLYXUSD = 283, MOODENGUSD = 284, MOTHERUSD = 285, AEROUSD = 286, CVCUSD = 287, NEIROCTOUSD = 288, ARKUSD = 289, NPCUSD = 290, ORBSUSD = 291, APUUSD = 292, BSVUSD = 293, HIPPOUSD = 294, GOATUSD = 295, DOGUSD = 296, HOTUSD = 297, STORJUSD = 298, RAYUSD = 299, BTCDEGEN = 300, PNUTUSD = 301, ACTUSD = 302, GRASSUSD = 303, ZENUSD = 304, LUMIAUSD = 305, ALPHUSD = 306, VIRTUALUSD = 307, SPXUSD = 308, ACXUSD = 309, CHILLGUYUSD = 310, CHEXUSD = 311, BITCOINUSD = 312, ETHDEGEN = 313, SOLDEGEN = 314, MOVEUSD = 315, MEUSD = 316, COWUSD = 317, AVAUSD = 318, USUALUSD = 319, PENGUUSD = 320, FARTCOINUSD = 321, ZEREBROUSD = 322, AI16ZUSD = 323, AIXBTUSD = 324, BIOUSD = 325, XRPDEGEN = 326, BNBDEGEN = 327, TRUMPUSD = 328, MELANIAUSD = 329, MODEUSD = 330, HYPEUSD = 331, SUSD = 332, ARCUSD = 333, ARKMUSD = 334, GRIFFAINUSD = 335, SWARMSUSD = 336, ANIMEUSD = 337, PLUMEUSD = 338, VVVUSD = 339, VINEUSD = 340, TOSHIUSD = 341, BERAUSD = 342, LAYERUSD = 343, CHEEMSUSD = 344, SOLVUSD = 345, TSTUSD = 346, IPUSD = 347, KAITOUSD = 348, ELXUSD = 349, PIUSD = 350, SHELLUSD = 351, BMTUSD = 352, BROCCOLIUSD = 353, TUTUSD = 354, GPSUSD = 355, REDUSD = 356, MUBARAKUSD = 357, FORMUSD = 358, WALUSD = 359, NILUSD = 360, PARTIUSD = 361, SIRENUSD = 362, BANANAS31 = 363, HYPERUSD = 364, PROMPTUSD = 365, RFCUSD = 366, WCTUSD = 367, BIGTIMEUSD = 368, BABYUSD = 369, COOKIEUSD = 370, KMNOUSD = 371, INITUSD = 372, SYRUPUSD = 373, SIGNUSD = 374, ZORAUSD = 375, COINUSD = 376, HOODUSD = 377, MSTRUSD = 378, NFLXUSD = 379, LAUNCHCOINUSD = 380, NXPCUSD = 381, SOPHUSD = 382, LPTUSD = 383, BVIVUSD = 384, EVIVUSD = 385, CRCLUSD = 386, RESOLVUSD = 387, SQDUSD = 388, TAIKOUSD = 389, HOMEUSD = 390, BUSD = 391, HUMAUSD = 392, SBETUSD = 393, PLTRUSD = 394, BIDUUSD = 395, ROKUUSD = 396, LMTUSD = 397, RIOTUSD = 398, MARAUSD = 399, LOKAUSD = 400, STOUSD = 401, FUNUSD = 402, KNCUSD = 403, HUSD = 404, ICNTUSD = 405, NEWTUSD = 406, PUMPUSD = 407, SAROSUSD = 408, SPKUSD = 409, ERAUSD = 410, BGSCUSD = 411, TAGUSD = 412, WLFIUSD = 413, ASTERUSD = 414, OKBUSD = 415, CROUSD = 416, SKYUSD = 417, XPLUSD = 418, AVNTUSD = 419, APEXUSD = 420, ORDERUSD = 421, DRIFTUSD = 422, MYXUSD = 423, NOMUSD = 424, FLUIDUSD = 425, LQTYUSD = 426, L3USD = 427, CAMPUSD = 428, SOMIUSD = 429, HEMIUSD = 430, FFUSD = 431, USELESSUSD = 432, MONUSD = 433, METUSD = 434, TURTLEUSD = 435, SPX500USD = 436, NAS100USD = 437, USA30USD = 438, NFLXUSD2 = 439, STABLEUSD = 440, VOOIUSD = 441, LITUSD = 442, DUSKUSD = 443, SCRTUSD = 444, DCRUSD = 445, GDXUSD = 446, URAUSD = 447, WPMUSD = 448, NATGASUSD = 449, BRENTUSD = 450, URNMUSD = 451, HYPEDEGEN = 452, MEGA = 453 }