@reyaxyz/common 0.373.1 → 0.375.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-56.9%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-57.43%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-44.35%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-60.52%25-red.svg?style=flat) |
9
+ | ![Statements](https://img.shields.io/badge/statements-57.37%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-58.11%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-45.04%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-60.97%25-red.svg?style=flat) |
10
10
 
@@ -883,12 +883,24 @@ export type MarketPrice = {
883
883
  * than substituting a stale value.
884
884
  */
885
885
  indexPrice?: string;
886
+ /** When this row was written (Unix ms); rewritten on every flush. */
886
887
  updatedAt: number;
888
+ /**
889
+ * Source time of `oraclePrice` (Unix ms): the matching engine's own mark
890
+ * timestamp. Absent on rows written before it was recorded.
891
+ */
892
+ oraclePriceUpdatedAt?: number;
887
893
  };
888
894
  export type CollateralPrice = {
889
895
  address: string;
890
896
  oraclePrice: string;
897
+ /** When this row was written (Unix ms); rewritten on every flush. */
891
898
  updatedAt: number;
899
+ /**
900
+ * Source time of `oraclePrice` (Unix ms): the oldest oracle tick it was
901
+ * derived from. Absent on rows written before it was recorded.
902
+ */
903
+ oraclePriceUpdatedAt?: number;
892
904
  };
893
905
  export declare const isMarketPrice: (price: MarketPrice | CollateralPrice) => price is MarketPrice;
894
906
  type Unpacked<T> = T extends (infer U)[] ? U : T;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["types.ts"],"names":[],"mappings":"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"}
@@ -43,8 +43,36 @@ export declare class SettlementTrackerError extends Error {
43
43
  readonly reason: 'missing' | 'inconsistent';
44
44
  constructor(marketId: string, reason: 'missing' | 'inconsistent');
45
45
  }
46
+ /**
47
+ * Market trackers older than the position's own snapshot carry nothing the
48
+ * stored position does not already reflect. Off-chain tracker feeds can lag
49
+ * the position stream.
50
+ */
51
+ export declare function trackersBehindPosition(position: Pick<RealizedBalancePosition, 'block_number'>, trackers: Pick<RealizedBalanceTrackers, 'blockNumber'>): boolean;
52
+ /**
53
+ * The trackers to ADL-adjust a position's quantity with, guarded the way its
54
+ * settlement is: behind the position, its own multiplier and unwind price stand in.
55
+ */
56
+ export declare function positionAdjustmentTrackers<T extends Pick<RealizedBalanceTrackers, 'longTrackersBaseMultiplier' | 'shortTrackersBaseMultiplier' | 'longTrackersAdlUnwindPrice' | 'shortTrackersAdlUnwindPrice' | 'blockNumber'>>(position: Pick<RealizedBalancePosition, 'block_number' | 'base_multiplier' | 'adl_unwind_price'>, trackers: T): T;
46
57
  /** Mirrors perpOB updatePerpPosition, including PRBMath truncation at each step. */
47
58
  export declare function calculateSettledPositionPnl(position: RealizedBalancePosition, trackers: RealizedBalanceTrackers | undefined, onGuarded?: () => void): BigNumber;
59
+ /**
60
+ * Raw E18 funding on an open position since entry, as `averageEntryFundingValue`
61
+ * tracks it in perpOB `propagateOrderToPerpPosition`: averaged in when the
62
+ * position grows, unchanged on a reduce, reset on a reopen or flip. Funding has
63
+ * already settled into the balance as it accrued; this attributes it to the
64
+ * open position. Positive means the position earned funding.
65
+ *
66
+ * The stored base over the multiplier at the position's last update is the
67
+ * same ratio as the ADL-adjusted base over the current multiplier, so no ADL
68
+ * adjustment is needed. Market trackers behind the position's own snapshot
69
+ * stand in with the position's funding value, as settlement does.
70
+ */
71
+ export declare function calculatePositionFundingPnl(position: RealizedBalancePosition & {
72
+ average_entry_funding_value: {
73
+ toString(): string;
74
+ } | null;
75
+ }, trackers: RealizedBalanceTrackers | undefined): BigNumber;
48
76
  /**
49
77
  * Returns raw E18 PnL aligned to collateral units. The instrument floors EACH
50
78
  * market's PnL to quote-token precision before Core aggregates collateral info.
@@ -1 +1 @@
1
- {"version":3,"file":"realized-balance.d.ts","sourceRoot":"/","sources":["utils/realized-balance.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,kEAAkE;AAClE,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAClC,IAAI,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpC,YAAY,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5C,aAAa,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7C,eAAe,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC/C,gBAAgB,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChD,UAAU,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1C,wFAAwF;IACxF,YAAY,CAAC,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,wBAAwB,EAAE,MAAM,CAAC;IACjC,yBAAyB,EAAE,MAAM,CAAC;IAClC,0BAA0B,EAAE,MAAM,CAAC;IACnC,2BAA2B,EAAE,MAAM,CAAC;IACpC,0BAA0B,EAAE,MAAM,CAAC;IACnC,2BAA2B,EAAE,MAAM,CAAC;IACpC,0FAA0F;IAC1F,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,4EAA4E;AAC5E,qBAAa,sBAAuB,SAAQ,KAAK;aAE7B,QAAQ,EAAE,MAAM;aAChB,MAAM,EAAE,SAAS,GAAG,cAAc;gBADlC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,GAAG,cAAc;CAWrD;AAkBD,oFAAoF;AACpF,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,uBAAuB,EACjC,QAAQ,EAAE,uBAAuB,GAAG,SAAS,EAC7C,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,SAAS,CAyEX;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,uBAAuB,EAAE,EACpC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,EAC1D,kBAAkB,EAAE,MAAM,EAC1B,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,SAAS,CAaX"}
1
+ {"version":3,"file":"realized-balance.d.ts","sourceRoot":"/","sources":["utils/realized-balance.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,kEAAkE;AAClE,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAClC,IAAI,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpC,YAAY,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5C,aAAa,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7C,eAAe,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC/C,gBAAgB,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChD,UAAU,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1C,wFAAwF;IACxF,YAAY,CAAC,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,wBAAwB,EAAE,MAAM,CAAC;IACjC,yBAAyB,EAAE,MAAM,CAAC;IAClC,0BAA0B,EAAE,MAAM,CAAC;IACnC,2BAA2B,EAAE,MAAM,CAAC;IACpC,0BAA0B,EAAE,MAAM,CAAC;IACnC,2BAA2B,EAAE,MAAM,CAAC;IACpC,0FAA0F;IAC1F,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,4EAA4E;AAC5E,qBAAa,sBAAuB,SAAQ,KAAK;aAE7B,QAAQ,EAAE,MAAM;aAChB,MAAM,EAAE,SAAS,GAAG,cAAc;gBADlC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,GAAG,cAAc;CAWrD;AAaD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,IAAI,CAAC,uBAAuB,EAAE,cAAc,CAAC,EACvD,QAAQ,EAAE,IAAI,CAAC,uBAAuB,EAAE,aAAa,CAAC,GACrD,OAAO,CAIT;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,CAAC,SAAS,IAAI,CACZ,uBAAuB,EACrB,4BAA4B,GAC5B,6BAA6B,GAC7B,4BAA4B,GAC5B,6BAA6B,GAC7B,aAAa,CAChB,EAED,QAAQ,EAAE,IAAI,CACZ,uBAAuB,EACvB,cAAc,GAAG,iBAAiB,GAAG,kBAAkB,CACxD,EACD,QAAQ,EAAE,CAAC,GACV,CAAC,CAgBH;AAOD,oFAAoF;AACpF,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,uBAAuB,EACjC,QAAQ,EAAE,uBAAuB,GAAG,SAAS,EAC7C,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,SAAS,CAuEX;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,uBAAuB,GAAG;IAClC,2BAA2B,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC5D,EACD,QAAQ,EAAE,uBAAuB,GAAG,SAAS,GAC5C,SAAS,CAyBX;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,uBAAuB,EAAE,EACpC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,EAC1D,kBAAkB,EAAE,MAAM,EAC1B,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,SAAS,CAaX"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"/","sources":["types.ts"],"names":[],"mappings":";;;AAiDA,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,8DAAkB,CAAA;IAClB,2DAAiB,CAAA;IACjB,gEAAqB,CAAA;AACvB,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB;AAED,IAAY,iBAWX;AAXD,WAAY,iBAAiB;IAC3B,UAAU;IACV,+EAAmB,CAAA;IACnB,oEAAc,CAAA;IACd,+EAAoB,CAAA;IACpB,2EAAmB,CAAA;IACnB,0EAAkB,CAAA;IAClB,UAAU;IACV,oFAAwB,CAAA;IACxB,0EAAoB,CAAA;IACpB,sFAA0B,CAAA;AAC5B,CAAC,EAXW,iBAAiB,iCAAjB,iBAAiB,QAW5B;AAED,IAAY,iBAQX;AARD,WAAY,iBAAiB;IAC3B,wCAAmB,CAAA;IACnB,2CAAsB,CAAA;IACtB,+CAA0B,CAAA;IAC1B,8CAAyB,CAAA;IACzB,uCAAkB,CAAA;IAClB,0CAAqB,CAAA;IACrB,qCAAgB,CAAA;AAClB,CAAC,EARW,iBAAiB,iCAAjB,iBAAiB,QAQ5B;AA2LD,0BAA0B;AAC1B,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC9B,+EAAsB,CAAA;IACtB,6EAAyB,CAAA;IACzB,4EAA6B,CAAA;IAC7B,+EAAkC,CAAA;IAClC,kFAAoC,CAAA;IACpC,iFAAoC,CAAA;AACtC,CAAC,EAPW,oBAAoB,oCAApB,oBAAoB,QAO/B;AAwFD,iCAAiC;AACjC,IAAY,+BAOX;AAPD,WAAY,+BAA+B;IACzC,qGAAsB,CAAA;IACtB,mGAAyB,CAAA;IACzB,kGAA6B,CAAA;IAC7B,qGAAkC,CAAA;IAClC,wGAAoC,CAAA;IACpC,uGAAoC,CAAA;AACtC,CAAC,EAPW,+BAA+B,+CAA/B,+BAA+B,QAO1C;AAWD,6CAA6C;AAC7C,IAAY,0CAOX;AAPD,WAAY,0CAA0C;IACpD,2HAAsB,CAAA;IACtB,yHAAyB,CAAA;IACzB,wHAA6B,CAAA;IAC7B,2HAAkC,CAAA;IAClC,8HAAoC,CAAA;IACpC,6HAAoC,CAAA;AACtC,CAAC,EAPW,0CAA0C,0DAA1C,0CAA0C,QAOrD;AA6BD,IAAY,mCAOX;AAPD,WAAY,mCAAmC;IAC7C,6GAAsB,CAAA;IACtB,2GAAyB,CAAA;IACzB,0GAA6B,CAAA;IAC7B,6GAAkC,CAAA;IAClC,gHAAoC,CAAA;IACpC,+GAAoC,CAAA;AACtC,CAAC,EAPW,mCAAmC,mDAAnC,mCAAmC,QAO9C;AAED,gCAAgC;AAChC,IAAY,6BAOX;AAPD,WAAY,6BAA6B;IACvC,iGAAsB,CAAA;IACtB,+FAAyB,CAAA;IACzB,8FAA6B,CAAA;IAC7B,iGAAkC,CAAA;IAClC,oGAAoC,CAAA;IACpC,mGAAoC,CAAA;AACtC,CAAC,EAPW,6BAA6B,6CAA7B,6BAA6B,QAOxC;AAwQD,IAAY,gBAQX;AARD,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,0CAAsB,CAAA;IACtB,8CAA0B,CAAA;IAC1B,6CAAyB,CAAA;IACzB,sCAAkB,CAAA;IAClB,yCAAqB,CAAA;IACrB,oCAAgB,CAAA;AAClB,CAAC,EARW,gBAAgB,gCAAhB,gBAAgB,QAQ3B;AAkHD,sEAAsE;AACtE,iEAAiE;AACjE,uEAAuE;AACvE,sEAAsE;AACtE,0CAA0C;AAC1C,8CAA8C;AAC9C,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,2CAAS,CAAA;IACT,iDAAY,CAAA;IACZ,qDAAc,CAAA;AAChB,CAAC,EAJW,SAAS,yBAAT,SAAS,QAIpB;AAED,4EAA4E;AAC5E,8EAA8E;AAC9E,mDAAmD;AACnD,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,2CAAQ,CAAA;IACR,2CAAQ,CAAA;AACV,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB;AAED,2EAA2E;AAC3E,uEAAqF;AAA5E,yHAAA,sBAAsB,OAAiB;AAEhD,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,yEAAa,CAAA;IACb,6EAAe,CAAA;IACf,6EAAe,CAAA;AACjB,CAAC,EAJW,oBAAoB,oCAApB,oBAAoB,QAI/B;AAOD,IAAY,sBAKX;AALD,WAAY,sBAAsB;IAChC,6CAAmB,CAAA;IACnB,2CAAiB,CAAA;IACjB,iDAAuB,CAAA;IACvB,+CAAqB,CAAA;AACvB,CAAC,EALW,sBAAsB,sCAAtB,sBAAsB,QAKjC;AAED,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,uBAAW,CAAA;AACb,CAAC,EAHW,QAAQ,wBAAR,QAAQ,QAGnB;AA0VM,IAAM,aAAa,GAAG,UAC3B,KAAoC;IAEpC,OAAA,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC;AAAvD,CAAuD,CAAC;AAH7C,QAAA,aAAa,iBAGgC","sourcesContent":["import { TradingApiSource, Replication } from './trading-api-types';\nimport { Stringified } from './api-types';\n\nimport {\n CoreCommandsEIP712SignatureAndPayload,\n EIP712Signature,\n} from './transactions';\nimport { JsonRpcSigner, Signer } from 'ethers';\n\nexport type Address = Lowercase<string>;\nexport type TokenName = Uppercase<string>;\n\n// -- Markets --\nexport type MarketOrderInfo = {\n counterpartyAccountIds: number[];\n exchangeId: number;\n};\n\nexport type MarketEntity = {\n id: number;\n ticker: string;\n underlyingAsset: string;\n quoteToken: string;\n quoteTokenId: string;\n markPrice: number;\n isActive: boolean;\n maxLeverage: number;\n volume24H: number;\n priceChange24H: number;\n priceChange24HPercentage: number;\n marketPriceDeviation: number;\n openInterest: number;\n fundingRate: number;\n fundingRateAnnualized: number;\n description: string;\n orderInfo: MarketOrderInfo;\n tickSizeDecimals: number;\n minOrderSize: number;\n minOrderSizeBase: number;\n baseSpacing: number;\n priceSpacing: number;\n longOI: number;\n shortOI: number;\n longSkewPercentage: number;\n shortSkewPercentage: number;\n availableLong: number;\n availableShort: number;\n};\n\nexport enum ReyaChainId {\n reyaNetwork = 1729,\n reyaLocal = 31337,\n reyaCronos = 89346162,\n}\n\nexport enum MoneyInOutChainId {\n // mainnet\n ethereumMainnet = 1,\n opMainnet = 10,\n polygonMainnet = 137,\n arbitrumOne = 42161,\n baseMainnet = 8453,\n // testnet\n arbitrumSepolia = 421614,\n opSepolia = 11155420,\n ethereumSepolia = 11155111,\n}\n\nexport enum CandlesResolution {\n ONE_MINUTE = '1MIN',\n FIVE_MINUTES = '5MINS',\n FIFTEEN_MINUTES = '15MINS',\n THIRTY_MINUTES = '30MINS',\n ONE_HOUR = '1HOUR',\n FOUR_HOURS = '4HOURS',\n ONE_DAY = '1DAY',\n}\n\n// -- Candles --\nexport interface Candle {\n id: string;\n startedAt: string;\n ticker: string;\n resolution: CandlesResolution;\n low: string;\n high: string;\n open: string;\n close: string;\n baseTokenVolume: string;\n usdVolume: string;\n trades: number;\n startingOpenInterest: string;\n}\n\n// -- Account --\n\nexport type Status = 'OPEN' | 'CLOSED' | 'LIQUIDATED' | 'FILLED';\nexport type Side = 'long' | 'short';\n\nexport type CollateralEntity = {\n token: string;\n address: string;\n percentage: number;\n balance: number;\n balanceRUSD: number;\n balanceWithHaircutRUSD: number;\n exchangeRate: number;\n exchangeRateWithHaircut: number;\n exchangeRateChange24HPercentage: number;\n yieldPercentage?: number;\n};\n\nexport type CollateralWithHaircut = {\n address: string;\n priceHaircut: number;\n};\n\nexport type MarginRatioHealth = 'danger' | 'healthy' | 'warning';\n\nexport type MarginAccountEntity = {\n id: number;\n name: string;\n marginRatioHealth: MarginRatioHealth;\n marginRatioPercentage: number;\n marginRatioHealthDangerThreshold: number;\n marginRatioHealthWarningThreshold: number;\n isApproachingLiquidation: boolean;\n isLiquidationImminent: boolean;\n totalBalance: number;\n liquidationMarginRequirement: number;\n totalBalanceUnderlyingAsset: string;\n totalBalanceChange24HPercentage: number;\n totalBalanceWithHaircut: number;\n livePnL: number;\n livePnLUnderlyingAsset: string;\n realizedPnL: number;\n realizedPnLUnderlyingAsset: string;\n realizedPnlHistoryTotal: number;\n totalPositionsCount: number;\n collaterals: CollateralEntity[];\n positions?: PositionEntity[];\n};\n\nexport type StrippedMarginAccountEntity = Pick<\n MarginAccountEntity,\n 'id' | 'name'\n>;\n\n// PRO-126 Bug 5: `ConditionalOrdersInfo` and the\n// `PositionEntity.conditionalOrdersInfo` field that surfaced\n// pending SL/TP info on positions were retired alongside the\n// `OrdersGateway.execute` / conditional-orders DB pipeline. The\n// off-chain API no longer has a backing source for live trigger\n// metadata; once the ME exposes pending trigger info via its own\n// surface, an equivalent field can be reintroduced sourcing from\n// there.\n\nexport type PositionEntity = {\n id: number;\n side: Side;\n size: number;\n base: number;\n price: number;\n markPrice: number;\n orderStatus: Status;\n realisedPnl: number;\n priceVariationPnl: number;\n livePnL: number;\n fundingPnl: number;\n unrealisedPnl: number;\n liquidationPrice: number;\n marketId: number;\n accountId: number;\n};\n\nexport type OrderHistoryType =\n | 'long-trade'\n | 'short-trade'\n | 'long-liquidation'\n | 'short-liquidation';\n\nexport type OrderHistoryEntity = {\n id: string;\n action: OrderHistoryType;\n orderType: 'market';\n base: number;\n executionPrice: number;\n realisedPnl?: number | null;\n priceVariationPnl: number;\n fundingPnl: number;\n fees: number;\n openingFees: number;\n timestamp: number;\n marketId?: number;\n xpEarned: number;\n};\n\nexport type ApyDetails = {\n dailyApy: number;\n weeklyApy: number;\n monthlyApy: number;\n yearlyApy: number;\n};\n\nexport type LpPoolEntity = {\n id: number;\n name: string;\n description: string;\n longDescription: string;\n readMoreLink: string;\n currentAPY: number;\n apyDetails: ApyDetails;\n apyChange24H: number;\n tokenAddress: Address;\n token: string;\n minDepositAmount: number;\n minWithdrawAmount: number;\n stepSize: number;\n allowedChainsForLiquidity: MoneyInOutChainId[];\n moneyInOutConfiguration: MoneyInOutConfiguration;\n};\n\nexport type MoneyInOutConfiguration = {\n [key in MoneyInOutChainId]?: {\n minWithdrawAmount?: number;\n };\n};\n\nexport type MoneyInOutConfigurationPerTokenName = {\n [key in TokenName]?: MoneyInOutConfiguration;\n};\n\nexport type LpWithdrawBalanceEntity = {\n withdrawableBalance: number;\n poolSharePrice: number;\n accountShareBalance: number;\n balanceBreakdown: {\n [coinName: string]: {\n balance: number;\n priceTokenToRusd: number;\n tokenAddress: string;\n };\n };\n};\n\nexport type TransactionHistoryType = 'deposit' | 'withdrawal';\n\nexport type LpTransactionHistoryEntity = {\n id: number;\n type: TransactionHistoryType;\n token: string;\n share: number;\n tokenAddress: string;\n amount: number;\n transactionLink: string;\n timestamp: number;\n};\n\nexport type TokenEntity = {\n name: TokenName;\n address: Address;\n};\n\n// --- Lp Pool Balance ---\nexport enum LpBalanceGranularity {\n ONE_MINUTE = 60 * 1000,\n ONE_HOUR = 60 * 60 * 1000,\n ONE_DAY = 24 * 60 * 60 * 1000,\n ONE_WEEK = 7 * 24 * 60 * 60 * 1000,\n ONE_MONTH = 30 * 24 * 60 * 60 * 1000,\n ONE_YEAR = 365 * 24 * 60 * 60 * 1000,\n}\n\n// - LP Account Performance -\nexport type GetLpPoolPerformanceChartDataResult = {\n capitalInvestedData: {\n timestampInMs: number;\n value: number;\n }[];\n balanceData: {\n timestampInMs: number;\n value: number;\n }[];\n balance: number;\n balanceChangePercentage: number;\n capitalInvested: number;\n capitalInvestedChangePercentage: number;\n};\n\nexport type SocketTokenConnectors = {\n deposit: Address;\n withdraw: Address;\n};\n\nexport type GetSocketConnectorsParams = {\n moneyInOutChainId: MoneyInOutChainId;\n tokenName: TokenName;\n};\n\nexport type GetSocketVaultParams = {\n moneyInOutChainId: MoneyInOutChainId;\n tokenName: TokenName;\n};\n\nexport type GetMoneyInOutChainIdFromReyaConnectorParams = {\n reyaChainId: ReyaChainId;\n tokenName: TokenName;\n socketConnector: Address;\n};\n\nexport type GetSocketBridgeTimeParams = {\n moneyInOutChainId: MoneyInOutChainId;\n};\n\nexport type GetSocketBridgeTimeResult = {\n bridgeTimeInMS: number;\n};\n\nexport type GetSocketWithdrawMsgGasLimitParams = {\n moneyInOutChainId: MoneyInOutChainId;\n};\n\nexport type GetSocketWithdrawMsgGasLimitResult = {\n msgGasLimit: bigint;\n};\n\nexport type SocketDepositFeesEntry = {\n moneyInOutChainId: MoneyInOutChainId;\n tokenName: TokenName;\n fees: bigint;\n};\n\nexport type SocketWithdrawFeesEntry = {\n moneyInOutChainId: MoneyInOutChainId;\n tokenName: TokenName;\n fees: bigint;\n};\n\nexport type SocketDepositFees = {\n fees: bigint;\n feesInUnderlyingToken: number;\n underlyingTokenName: TokenName;\n};\n\nexport type SocketWithdrawFees = {\n fees: bigint;\n feesInUnderlyingToken: number;\n underlyingTokenName: TokenName;\n};\n\nexport type GetSocketWithdrawFeesParams = {\n reyaChainId: ReyaChainId;\n tokenAddress: TokenEntity['address'];\n};\n\nexport type GetSocketWithdrawFeesResult = {\n fees: number;\n};\n\n// --- Margin Account Balance ---\nexport enum MarginAccountBalanceGranularity {\n ONE_MINUTE = 60 * 1000,\n ONE_HOUR = 60 * 60 * 1000,\n ONE_DAY = 24 * 60 * 60 * 1000,\n ONE_WEEK = 7 * 24 * 60 * 60 * 1000,\n ONE_MONTH = 30 * 24 * 60 * 60 * 1000,\n ONE_YEAR = 365 * 24 * 60 * 60 * 1000,\n}\n\nexport type GetMarginAccountBalanceChartDataResult = {\n balanceData: {\n timestampInMs: number;\n value: number;\n }[];\n balance: number;\n balanceChangePercentage: number;\n};\n\n// --- Margin Account Collaterals Balance ---\nexport enum MarginAccountCollateralsBalanceGranularity {\n ONE_MINUTE = 60 * 1000,\n ONE_HOUR = 60 * 60 * 1000,\n ONE_DAY = 24 * 60 * 60 * 1000,\n ONE_WEEK = 7 * 24 * 60 * 60 * 1000,\n ONE_MONTH = 30 * 24 * 60 * 60 * 1000,\n ONE_YEAR = 365 * 24 * 60 * 60 * 1000,\n}\n\nexport type GetMarginAccountCollateralsBalanceChartDataResult = {\n data: {\n balanceData: {\n timestampInMs: number;\n value: number;\n }[];\n token: string;\n }[];\n balance: number;\n balanceChangePercentage: number;\n};\n\nexport type OwnerMetadataEntity = {\n address: Address;\n coreSigNonce: number;\n poolSigNonce: number;\n};\n\nexport type GetAllMarginAccountsBalanceChartDataResult = {\n balanceData: {\n timestampInMs: number;\n value: number;\n }[];\n balance: number;\n balanceChangePercentage: number;\n};\n\nexport enum AllMarginAccountsBalanceGranularity {\n ONE_MINUTE = 60 * 1000,\n ONE_HOUR = 60 * 60 * 1000,\n ONE_DAY = 24 * 60 * 60 * 1000,\n ONE_WEEK = 7 * 24 * 60 * 60 * 1000,\n ONE_MONTH = 30 * 24 * 60 * 60 * 1000,\n ONE_YEAR = 365 * 24 * 60 * 60 * 1000,\n}\n\n// --- Funding Rate History ----\nexport enum FundingRateHistoryGranularity {\n ONE_MINUTE = 60 * 1000,\n ONE_HOUR = 60 * 60 * 1000,\n ONE_DAY = 24 * 60 * 60 * 1000,\n ONE_WEEK = 7 * 24 * 60 * 60 * 1000,\n ONE_MONTH = 30 * 24 * 60 * 60 * 1000,\n ONE_YEAR = 365 * 24 * 60 * 60 * 1000,\n}\nexport type GetFundingRateChartDataResult = {\n fundingRateData: {\n timestampInMs: number;\n value: number;\n }[];\n fundingRate: number;\n};\nexport type GetCurrentFundingRateResult = {\n value: number;\n timestamp: number;\n};\n\nexport type GetInstantPoolPriceResult = {\n poolPrice: number;\n poolSlippage: number;\n oraclePrice: number;\n};\n\nexport type GetBalancesForBridgeArgs = {\n walletAddress: string;\n};\n\nexport type SignatureData = {\n signature: string;\n timestamp: number;\n walletAddress: Address;\n version: string;\n};\n\nexport type SaveSignatureResult = {\n signatureSavedSuccessfully: boolean;\n};\n\n// --- Community ----\nexport type VoteDetailsEntity = {\n id: number;\n startDate: number; // timestamp in UTC milliseconds\n endDate: number; // timestamp in UTC milliseconds\n percentageToPass: number; // Example: 4%\n yesCount: number;\n noCount: number;\n voteCountToPass: number; // Example: 1453\n slug: string;\n title: string;\n // Free text, each newline represents paragraph. UI splits by \\n atm to keep stuff simple\n description: string;\n};\n\nexport type VoteContractDetailsEntity = {\n id: number;\n contractAddress: Address;\n};\n\nexport type VoteStatusEntity = {\n votingPower: number;\n hasVoted: boolean;\n};\n\nexport type GetLpTvlResult = {\n currentTVL: number;\n currentLiquidity: number;\n};\n\nexport type Rank = {\n rankNumber: number;\n rankLetter: string;\n rankName: string;\n};\n\nexport type RankTrading = {\n rankNumber: number;\n rankName: string;\n};\n\nexport type GetWalletReferralDetailsParams = {\n address: string;\n};\n\nexport type GetWalletReferralDetailsResult = {\n totalReferralsCount: number;\n totalReferralXP: number;\n tradingRebateFee: number;\n tradingXp: number;\n liquidityXp: number;\n isAffiliate: boolean;\n};\n\nexport type GetWalletReferralCodeParams = {\n address: string;\n};\n\nexport type GetWalletReferralCodeResult = {\n referralCode: string;\n};\n\nexport type TokenEntityWithMinValue = TokenEntity & {\n minDepositAmount: number;\n minWithdrawAmount: number;\n minTransferAmount: number;\n};\n\nexport type TokenInfo = {\n name: TokenName;\n address: Address;\n decimals: number;\n isRUSDUnderlying: boolean;\n minDepositAmount: number;\n minWithdrawAmount: number;\n minTransferAmount: number;\n whitelistedWalletOnly?: boolean;\n isElixirToken?: boolean;\n isLmToken?: boolean;\n isPoolToken?: boolean;\n isOFT?: boolean;\n};\n\nexport type GetReyaCheckerResult = {\n isEligibleForRcp: boolean;\n isEligibleForVltz: boolean;\n isEligibleForCommunity: boolean;\n};\n\nexport type TgeAllocatedAmount = {\n total: number;\n vltz: number;\n rcp: number;\n community: number;\n};\n\nexport type TrancheInfo = {\n trancheId: number;\n amount: number;\n deadlineMs: number;\n released: boolean;\n};\n\nexport type GetTgeClaimingInfoResult = {\n wallet: string;\n amount: TgeAllocatedAmount;\n hasClaimed?: boolean;\n hasLocked?: boolean;\n distributorContract?: string;\n merkleRoot?: string;\n tranches?: TrancheInfo[];\n};\n\nexport type TgeClaimTokensResult = {\n success: boolean;\n wallet: string;\n amount: TgeAllocatedAmount;\n transactionHash: string;\n};\n\n// --- TOS ----\n\nexport type TRMRiskAssessment = {\n accountExternalId: string;\n address: string;\n addressRiskIndicators: TMRRiskIndicator[];\n addressSubmitted: string;\n chain: string;\n entities: unknown[];\n trmAppUrl: string;\n};\n\nexport type TMRRiskIndicator = {\n category: string;\n categoryId: string;\n categoryRiskScoreLevel: number;\n categoryRiskScoreLevelLabel: string;\n incomingVolumeUsd: string;\n outgoingVolumeUsd: string;\n riskType: string;\n totalVolumeUsd: string;\n};\n\n// todo: deprecate after 1st tac client is deprecated\nexport type ToSVersionDetails = {\n text: string;\n version: string;\n creationTimestamp: number; // in MS\n};\n\nexport type ToSProductVersionDetails = {\n shortText: string;\n longText: string;\n version: string;\n creationTimestamp: number; // in MS\n product: string;\n};\n\nexport type SocketBridgeTransactionPoolStatus =\n | 'pending'\n | 'confirmed'\n | 'failed';\n\nexport type IpInfo = {\n ip: string;\n hostname: string;\n city: string;\n region: string;\n country: string;\n loc: string;\n org: string;\n postal: string;\n timezone: string;\n privacy: {\n vpn: boolean;\n proxy: boolean;\n tor: boolean;\n relay: boolean;\n hosting: boolean;\n service: string;\n };\n countryCode: string;\n countryFlag: {\n emoji: string;\n unicode: string;\n };\n countryFlagURL: string;\n countryCurrency: {\n code: string;\n symbol: string;\n };\n continent: {\n code: string;\n name: string;\n };\n isEU: boolean;\n};\n\nexport interface CandleMessage {\n /** Stringified JSON object of all events to be streamed. */\n contents: string;\n /** Clob pair id of the Candle message. */\n\n clobPairId: string;\n /** Resolution of the candle update. */\n\n resolution: string;\n /** Version of the websocket message. */\n\n version: string;\n}\n\nexport interface PriceMessage {\n contents: string;\n assetPairId: string;\n version: string;\n}\n\nexport interface FundingRateMessage {\n contents: string;\n assetPairId: string;\n version: string;\n}\n\nexport interface MarketsUpdateMessage {\n contents: string;\n version: string;\n id: string;\n}\n\nexport enum CandleResolution {\n ONE_MINUTE = '1MIN',\n FIVE_MINUTES = '5MINS',\n FIFTEEN_MINUTES = '15MINS',\n THIRTY_MINUTES = '30MINS',\n ONE_HOUR = '1HOUR',\n FOUR_HOURS = '4HOURS',\n ONE_DAY = '1DAY',\n}\n\nexport type TransactionExecutionMetadata = {\n accountName?: string;\n accountSource?: string;\n accountId?: number;\n marketId?: number;\n destinationType?: 'pool' | 'account';\n action?:\n | 'matchOrder'\n | 'closeOrder'\n | 'createAccount'\n | 'ioc-order-ui'\n | 'ioc-order-api-v2'\n | 'ioc-reduce-only-order-ui'\n | 'ioc-reduce-only-order-api-v2'\n | 'enable-api-wallet'\n | 'disable-api-wallet';\n tradeSource?: 'reya' | 'rage' | 'other';\n sender?: string;\n clientSentTimestamp?: number; // Timestamp (ms) when client sent the request\n clientTimezone?: string; // Client's timezone (e.g., 'America/New_York', 'Europe/London')\n matchOrder?: {\n eip712Payload: CoreCommandsEIP712SignatureAndPayload['payload'];\n userEIP712Signature: EIP712Signature;\n };\n};\n\nexport type TransactionExecutionOutput = {\n txHash: string | null;\n txSubmitted?: boolean;\n errorMessage?: string;\n /**\n * Structured error discriminator surfaced by the slim\n * `executeReyaTransaction` core. One of\n * `TRANSACTION_FAILED_TO_SEND` (pre-send: wallet manager rejected),\n * `RECEIPT_NOT_FOUND` (post-send: receipt fetch failed),\n * `TRANSACTION_REVERTED` (post-send: receipt.status === 0), or\n * `FAILED_FILL` (post-send: FailedUnifiedFillBytes / FailedFillBytes).\n * Optional — populated when the slim core returned a discriminated\n * failure. May coexist with a non-null `txHash` on post-send failures\n * (the on-chain hash is surfaced for `RECEIPT_NOT_FOUND`,\n * `TRANSACTION_REVERTED`, and `FAILED_FILL`). UI consumers should prefer\n * `errorMessage` for display; this field is for analytics + logs.\n *\n * `FAILED_ORDER` (used to be: FailedOrderBytes) is retired alongside\n * the legacy `OrdersGateway.execute` IOC handler in PRO-126 Bug 5.\n */\n errorCode?: string;\n accountId?: string | null;\n coreSigNonce?: string | null;\n poolSigNonce?: string | null;\n miscellaneous?: {\n tradeXpBoost?: number;\n lotteryXpBoost?: number;\n xpNftAwarded?: boolean;\n xpEarned?: number;\n };\n tradeDetails?: {\n executionPrice?: number;\n base?: number;\n };\n positions?: {\n market_id: string;\n account_id: string;\n base: string | null;\n realized_pnl: string | null;\n last_price: string | null;\n position_data_last_price_data_timestamp: string | null;\n funding_value: string | null;\n base_multiplier: string | null;\n adl_unwind_price: string | null;\n transaction_hash: string;\n block_timestamp: string | null;\n block_number: string;\n unique_id: string | null;\n }[];\n orders?: {\n id: string;\n market_id: string | null;\n account_id: string | null;\n order_base: string | null;\n fee: string | null;\n price: string | null;\n type: string;\n processed: boolean;\n transaction_hash: string;\n block_timestamp: string | null;\n block_number: string;\n source: string | null;\n unique_id: string | null;\n }[];\n accounts?: Omit<\n Stringified<TradingApiSource['wallet/:address/accounts']['response'][0]>,\n 'status'\n >[];\n //orderAndPositionUpdate?: Stringified<PassivePerpOrderAndPositionUpdate>[];\n};\n\nexport type CanonicalReleaseStatus = 'pending' | 'ready' | 'completed';\n\ntype PendingWithdrawalStatus = {\n status: 'pending';\n};\n\ntype ReadyWithdrawalStatus = {\n status: 'ready';\n txHash: string;\n};\n\nexport type PendingWithdrawal = {\n tokenAmount: number;\n} & (PendingWithdrawalStatus | ReadyWithdrawalStatus);\n\n// PRO-126 Bug 5 retired the legacy `OrdersGatewayOrderType` enum (the\n// 8-field `ConditionalOrderDetails` typehash discriminator). The\n// on-chain `OrdersGateway.execute` selector that consumed those values\n// is gone; every order class now uses `OrderType` below, whose values\n// mirror the on-chain `OrderType` enum in\n// orders-gateway/src/libraries/DataTypes.sol.\nexport enum OrderType {\n Limit = 0,\n StopLoss = 1,\n TakeProfit = 2,\n}\n\n// Matches the on-chain `MarketType` enum. Used to discriminate spot vs perp\n// in unified off-chain code paths and with the market-id namespace helpers in\n// packages/common-backend/src/market-id-namespace.\nexport enum MarketType {\n Spot = 0,\n Perp = 1,\n}\n\n// Canonical on-chain V3 codes, also written by the pre-cutover V2 indexer.\nexport { CanonicalExecutionType as ExecutionType } from './canonical-execution-type';\n\nexport enum ConditionalOrderType {\n STOP_LOSS = 0,\n TAKE_PROFIT = 1,\n LIMIT_ORDER = 2,\n}\n\nexport type ConditionalOrderTypeName =\n | 'Stop Loss'\n | 'Take Profit'\n | 'Limit Order';\n\nexport enum ConditionalOrderStatus {\n PENDING = 'pending',\n FILLED = 'filled',\n CANCELLED = 'cancelled',\n REJECTED = 'rejected',\n}\n\nexport enum TierType {\n REGULAR = 'REGULAR',\n VIP = 'VIP',\n}\n\nexport type ConditionalOrder = {\n orderId: string;\n accountId: number;\n marketId: number;\n orderType: ConditionalOrderTypeName;\n isLong: boolean;\n triggerPrice: number;\n signerWallet: string;\n nonce: string;\n signature: string;\n eip712Signature: EIP712Signature;\n status: ConditionalOrderStatus;\n creationTimestampMs: number;\n lastUpdateTimestampMs: number;\n base: number;\n exchangeId: number;\n inputs: string;\n counterpartyAccountId: number;\n};\n\nexport type UnifiedConditionalOrderType = {\n orderId: string;\n accountId: number;\n marketId: number;\n base: number | null; // null when order is cancelled\n isLong: boolean;\n price: number;\n status: ConditionalOrderStatus;\n orderType: ConditionalOrderTypeName;\n timestampMs: number;\n};\n\nexport type IsDiscordLinkedParams = {\n address: string;\n};\nexport type IsDiscordLinkedResult = {\n isLinked: boolean;\n};\nexport type LinkDiscordParams = {\n discordAccessToken: string;\n signer: Signer | JsonRpcSigner;\n};\nexport type LinkDiscordResult = void;\nexport type UnlinkDiscordParams = {\n address: string;\n discordAccessToken: string;\n};\nexport type UnlinkDiscordResult = void;\nexport type ClaimDiscordRankParams = {\n address: string;\n discordAccessToken: string;\n};\nexport type ClaimDiscordRankResult = void;\n\nexport type IsDiscordRankClaimedParams = {\n address: string;\n};\nexport type IsDiscordRankClaimedResult = {\n isClaimed: boolean;\n};\n\nexport interface ApiErrorResponse {\n response: {\n status: number;\n data: {\n error: string;\n };\n };\n}\n\n// ref: https://github.com/tkhq/sdk/blob/08e2b8c30848498ed0850aa1e1ede67775b001e5/packages/http/src/__generated__/\n// services/coordinator/public/v1/public_api.types.ts\nexport type V1Attestation = {\n /** @description The cbor encoded then base64 url encoded id of the credential. */\n credentialId: string;\n /** @description A base64 url encoded payload containing metadata about the signing context and the challenge. */\n clientDataJson: string;\n /** @description A base64 url encoded payload containing authenticator data and any attestation the webauthn provider chooses. */\n attestationObject: string;\n /** @description The type of authenticator transports. */\n transports: V1AuthenticatorTransport[];\n};\n\nexport type V1AuthenticatorTransport =\n | 'AUTHENTICATOR_TRANSPORT_BLE'\n | 'AUTHENTICATOR_TRANSPORT_INTERNAL'\n | 'AUTHENTICATOR_TRANSPORT_NFC'\n | 'AUTHENTICATOR_TRANSPORT_USB'\n | 'AUTHENTICATOR_TRANSPORT_HYBRID';\n\n// on-chain events (consider pushing into a separate file)\nexport type MatchOrderDetails = {\n uniqueId: string;\n transactionHash: string;\n accountId: number;\n marketId: number;\n sizeNotional: number;\n base: number;\n price: number;\n};\n\nexport type GetLpPoolPositionRPCResponse = {\n poolPositionShareBalance: number; // amount of srUSD in the pool held by the account\n poolPositionBalance: number; // amount of rUSD in the pool held by the account\n poolTotalBalance: number; // total amount of rUSD in the pool\n sharePrice: number; // share price of the pool\n};\n\ninterface MatchOrderFees {\n protocolFeeCredit: bigint;\n exchangeFeeCredit: bigint;\n takerFeeDebit: bigint;\n makerPayments: bigint[];\n referrerFeeCredit: bigint;\n}\n\ninterface PositionDataOld {\n base: bigint;\n realizedPnL: bigint;\n lastPriceData: {\n price: bigint;\n timestamp: bigint;\n };\n trackers: {\n fundingValue: bigint;\n baseMultiplier: bigint;\n adlUnwindPrice: bigint;\n };\n}\n\nexport interface PassivePerpOrderAndPositionUpdate {\n id: string;\n marketId: bigint;\n accountId: bigint;\n counterpartyAccountId: bigint;\n executedBase: bigint;\n matchOrderFees: MatchOrderFees;\n executedPrice: bigint;\n referrerAccountId: bigint;\n isMatchOrder: boolean;\n liquidationType: bigint;\n positionData: PositionDataOld;\n counterpartyPositionData: PositionDataOld;\n blockTimestamp: bigint;\n blockNumber: string;\n transactionHash: string;\n uniqueId: bigint;\n}\n\nexport type ConfiguredAssetPair =\n | 'ETHUSD'\n | 'WSTETHUSD'\n | 'WBTCUSD'\n | 'BTCUSD' // Localnet's mock BTC collateral feed\n | 'USDCUSD'\n | 'USDEUSD'\n | 'SUSDEUSD'\n | 'DEUSDUSD'\n | 'SDEUSDDEUSD'\n | 'REYALM#AMBERUSDC'\n | 'REYALM#HEDGEUSDC'\n | 'SRUSDRUSD_RR'\n | 'REYAPOOL#1'\n | 'REYARUSD'\n | 'SREYARUSD'\n | 'ETHUSDMARK'\n | 'BTCUSDMARK'\n | 'SOLUSDMARK'\n | 'ARBUSDMARK'\n | 'OPUSDMARK'\n | 'AVAXUSDMARK'\n | 'MKRUSDMARK'\n | 'LINKUSDMARK'\n | 'AAVEUSDMARK'\n | 'CRVUSDMARK'\n | 'UNIUSDMARK'\n | 'SUIUSDMARK'\n | 'TIAUSDMARK'\n | 'SEIUSDMARK'\n | 'ZROUSDMARK'\n | 'XRPUSDMARK'\n | 'WIFUSDMARK'\n | '1000PEPEUSDMARK'\n | 'POPCATUSDMARK'\n | 'DOGEUSDMARK'\n | '1000SHIBUSDMARK'\n | '1000BONKUSDMARK'\n | 'APTUSDMARK'\n | 'BNBUSDMARK'\n | 'JTOUSDMARK'\n | 'ADAUSDMARK'\n | 'LDOUSDMARK'\n | 'POLUSDMARK'\n | 'NEARUSDMARK'\n | 'FTMUSD'\n | 'ENAUSDMARK'\n | 'EIGENUSDMARK'\n | 'PENDLEUSDMARK'\n | 'GOATUSDMARK'\n | 'GRASSUSDMARK'\n | '1000NEIROUSDMARK'\n | 'DOTUSDMARK'\n | 'LTCUSDMARK'\n | 'PYTHUSDMARK'\n | 'JUPUSDMARK'\n | 'PENGUUSDMARK'\n | 'TRUMPUSDMARK'\n | 'HYPEUSDMARK'\n | 'VIRTUALUSDMARK'\n | 'AI16ZUSDMARK'\n | 'AIXBTUSDMARK'\n | 'SUSDMARK'\n | 'FARTCOINUSDMARK'\n | 'GRIFFAINUSDMARK'\n | 'WLDUSDMARK'\n | 'ATOMUSDMARK'\n | 'APEUSDMARK'\n | 'TONUSDMARK'\n | 'ONDOUSDMARK'\n | 'TRXUSDMARK'\n | 'INJUSDMARK'\n | 'MOVEUSDMARK'\n | 'BERAUSDMARK'\n | 'LAYERUSDMARK'\n | 'TAOUSDMARK'\n | 'IPUSDMARK'\n | 'MEUSDMARK'\n | 'PUMPUSDMARK'\n | 'MORPHOUSDMARK'\n | 'SYRUPUSDMARK'\n | 'AEROUSDMARK'\n | 'KAITOUSDMARK'\n | 'ZORAUSDMARK'\n | 'PROVEUSDMARK'\n | 'PAXGUSDMARK'\n | 'YZYUSDMARK'\n | 'XPLUSDMARK'\n | 'WLFIUSDMARK'\n | 'LINEAUSDMARK'\n | 'MEGAUSDMARK'\n | 'LITUSDMARK'\n // RWA mark feed identities on every supported chain; publication is separate.\n | RwaMarkAssetPair;\n\ntype SpotPair<T extends string> = T extends `${infer Base}USDMARK`\n ? `${Base}USD`\n : never;\n\n/**\n * Base assets of the RWA perpetual markets (ids 76-94; registration is a separate per-chain release gate). Stork publishes each as a pair of\n * USDC-quoted feeds, so neither is ever divided by USDCUSD.\n */\nexport type RwaStorkAsset =\n | 'XAU'\n | 'XAG'\n | 'WTI'\n | 'AAPL'\n | 'MSFT'\n | 'GOOGL'\n | 'AMZN'\n | 'NVDA'\n | 'META'\n | 'TSLA'\n | 'SPY'\n | 'QQQ'\n | 'SPCX'\n | 'MU'\n | 'CRCL'\n | 'INTC'\n | 'HOOD'\n | 'AMD'\n | 'MSTR';\n\n/**\n * Stork actual-mark feed. It is each RWA market's on-chain `oracleNodeId`, the\n * reference for the mark-push and fill collars, so the oracle updater pushes it.\n */\nexport type RwaMarkAssetPair = `${RwaStorkAsset}USDC_MK`;\n\n/**\n * Stork exchange-index feed. Only the matching engine and the API index price\n * read it; nothing on-chain references it.\n */\nexport type RwaIndexAssetPair = `${RwaStorkAsset}USDC_IDX`;\n\n/** Internal cache keys whose prices mirror an existing reference feed. */\nexport type MirroredAssetPair =\n | 'REYALM#KEYROCKRUSD'\n | 'REYALM#FLOWRUSD'\n | 'REYALM#SELINIRUSD';\n\n/** Includes Stork spot feeds and mirrored price cache keys. */\nexport type AssetPair =\n | ConfiguredAssetPair\n | SpotPair<ConfiguredAssetPair>\n | RwaIndexAssetPair\n | MirroredAssetPair\n // Historical/cache input only; no active producer owns this retired key.\n | 'REYALM#SELINIUSDC';\n\nexport type ContractId = string;\n\nexport type Price = {\n symbol: number;\n oraclePrice: string;\n poolPrice: string | null;\n updatedAt: number;\n};\n\nexport type MarketPrice = {\n marketId: number;\n /** @deprecated No longer written; will be removed when V1 prices endpoints are dropped. */\n price?: string;\n /**\n * ME mark price (E18), despite the name — the pool-price task has written the\n * matching-engine mark here since the perpOB rewire. Surfaced as the v2\n * `MarketSummary.markPrice`. The genuine index price is `indexPrice`.\n */\n oraclePrice: string;\n /**\n * Orderbook mid (E18). Absent on an empty or one-sided book — there is\n * deliberately no mark-price fallback, because publishing the mark under the\n * name \"mid\" makes a book with no two-sided quote indistinguishable from one\n * trading exactly at the mark. Consumers must treat it as optional, the same\n * way `SpotMarketSummary.throttledMidPrice` has always been treated.\n */\n poolPrice?: string;\n /**\n * Stork reference/index price (E18), rUSD-quoted on a USDC basis. Explicit\n * USDC feeds pass through; USD feeds are divided by a fresh USDCUSD value.\n * Absent when the feed has no fresh tick, a required cross-rate is unusable, and on\n * markets with no Stork feed, so consumers must treat it as optional rather\n * than substituting a stale value.\n */\n indexPrice?: string;\n updatedAt: number;\n};\n\nexport type CollateralPrice = {\n address: string;\n oraclePrice: string;\n updatedAt: number;\n};\n\nexport const isMarketPrice = (\n price: MarketPrice | CollateralPrice,\n): price is MarketPrice =>\n Object.prototype.hasOwnProperty.call(price, 'marketId');\n\n// Replication-derived types\ntype Unpacked<T> = T extends (infer U)[] ? U : T;\n\n// PRO-126 Bug 7: `ConditionalOrderSensitive` + `OrderReplicationData`\n// retired with the rest of the `ConditionalOrders` DB pipeline. The\n// `replication:ConditionalOrdersSensitive` channel is no longer\n// subscribed (bun-socket/index.ts) and no longer publishes\n// (common-backend/src/config/database.ts). Order data flows through\n// the ME's `{orders}:changes` stream consumed by AccountOrdersMap;\n// callers should derive types from the ME's protobuf `Order` schema.\n\nexport type Position = Unpacked<Replication['replication:position']['result']>;\n\n// Stringified replication data types for WebSocket transformers\nexport type PositionReplicationData = Stringified<\n Unpacked<Replication['replication:position']['result']>\n>;\n\nexport type PerpExecutionReplicationData = Omit<\n Stringified<Unpacked<Replication['replication:orders']['result']>>,\n 'created_at'\n> & {\n created_at?: string;\n} & FillOwners;\n\nexport type AccountRealBalanceReplicationData = Stringified<\n Unpacked<Replication['replication:account_real_balances']['result']>\n>;\n\n/** Each side's owner, on fill rows from the trades and spot streams (PRO-1172). */\ntype FillOwners = {\n account_owner?: string;\n counterparty_account_owner?: string;\n};\n\nexport type SpotExecutionReplicationData = Stringified<\n Unpacked<Replication['replication:spot_executions']['result']>\n> &\n FillOwners;\n\nexport type ExecutionBustReplicationData = Stringified<\n Unpacked<Replication['replication:execution_busts']['result']>\n>;\n\nexport type MarketDataReplicationData = Stringified<\n Unpacked<Replication['replication:marketData']['result']>\n>;\n\nexport type SpotMarketDataReplicationData = Stringified<\n Unpacked<Replication['replication:spotMarketData']['result']>\n>;\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"/","sources":["types.ts"],"names":[],"mappings":"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","sourcesContent":["import { TradingApiSource, Replication } from './trading-api-types';\nimport { Stringified } from './api-types';\n\nimport {\n CoreCommandsEIP712SignatureAndPayload,\n EIP712Signature,\n} from './transactions';\nimport { JsonRpcSigner, Signer } from 'ethers';\n\nexport type Address = Lowercase<string>;\nexport type TokenName = Uppercase<string>;\n\n// -- Markets --\nexport type MarketOrderInfo = {\n counterpartyAccountIds: number[];\n exchangeId: number;\n};\n\nexport type MarketEntity = {\n id: number;\n ticker: string;\n underlyingAsset: string;\n quoteToken: string;\n quoteTokenId: string;\n markPrice: number;\n isActive: boolean;\n maxLeverage: number;\n volume24H: number;\n priceChange24H: number;\n priceChange24HPercentage: number;\n marketPriceDeviation: number;\n openInterest: number;\n fundingRate: number;\n fundingRateAnnualized: number;\n description: string;\n orderInfo: MarketOrderInfo;\n tickSizeDecimals: number;\n minOrderSize: number;\n minOrderSizeBase: number;\n baseSpacing: number;\n priceSpacing: number;\n longOI: number;\n shortOI: number;\n longSkewPercentage: number;\n shortSkewPercentage: number;\n availableLong: number;\n availableShort: number;\n};\n\nexport enum ReyaChainId {\n reyaNetwork = 1729,\n reyaLocal = 31337,\n reyaCronos = 89346162,\n}\n\nexport enum MoneyInOutChainId {\n // mainnet\n ethereumMainnet = 1,\n opMainnet = 10,\n polygonMainnet = 137,\n arbitrumOne = 42161,\n baseMainnet = 8453,\n // testnet\n arbitrumSepolia = 421614,\n opSepolia = 11155420,\n ethereumSepolia = 11155111,\n}\n\nexport enum CandlesResolution {\n ONE_MINUTE = '1MIN',\n FIVE_MINUTES = '5MINS',\n FIFTEEN_MINUTES = '15MINS',\n THIRTY_MINUTES = '30MINS',\n ONE_HOUR = '1HOUR',\n FOUR_HOURS = '4HOURS',\n ONE_DAY = '1DAY',\n}\n\n// -- Candles --\nexport interface Candle {\n id: string;\n startedAt: string;\n ticker: string;\n resolution: CandlesResolution;\n low: string;\n high: string;\n open: string;\n close: string;\n baseTokenVolume: string;\n usdVolume: string;\n trades: number;\n startingOpenInterest: string;\n}\n\n// -- Account --\n\nexport type Status = 'OPEN' | 'CLOSED' | 'LIQUIDATED' | 'FILLED';\nexport type Side = 'long' | 'short';\n\nexport type CollateralEntity = {\n token: string;\n address: string;\n percentage: number;\n balance: number;\n balanceRUSD: number;\n balanceWithHaircutRUSD: number;\n exchangeRate: number;\n exchangeRateWithHaircut: number;\n exchangeRateChange24HPercentage: number;\n yieldPercentage?: number;\n};\n\nexport type CollateralWithHaircut = {\n address: string;\n priceHaircut: number;\n};\n\nexport type MarginRatioHealth = 'danger' | 'healthy' | 'warning';\n\nexport type MarginAccountEntity = {\n id: number;\n name: string;\n marginRatioHealth: MarginRatioHealth;\n marginRatioPercentage: number;\n marginRatioHealthDangerThreshold: number;\n marginRatioHealthWarningThreshold: number;\n isApproachingLiquidation: boolean;\n isLiquidationImminent: boolean;\n totalBalance: number;\n liquidationMarginRequirement: number;\n totalBalanceUnderlyingAsset: string;\n totalBalanceChange24HPercentage: number;\n totalBalanceWithHaircut: number;\n livePnL: number;\n livePnLUnderlyingAsset: string;\n realizedPnL: number;\n realizedPnLUnderlyingAsset: string;\n realizedPnlHistoryTotal: number;\n totalPositionsCount: number;\n collaterals: CollateralEntity[];\n positions?: PositionEntity[];\n};\n\nexport type StrippedMarginAccountEntity = Pick<\n MarginAccountEntity,\n 'id' | 'name'\n>;\n\n// PRO-126 Bug 5: `ConditionalOrdersInfo` and the\n// `PositionEntity.conditionalOrdersInfo` field that surfaced\n// pending SL/TP info on positions were retired alongside the\n// `OrdersGateway.execute` / conditional-orders DB pipeline. The\n// off-chain API no longer has a backing source for live trigger\n// metadata; once the ME exposes pending trigger info via its own\n// surface, an equivalent field can be reintroduced sourcing from\n// there.\n\nexport type PositionEntity = {\n id: number;\n side: Side;\n size: number;\n base: number;\n price: number;\n markPrice: number;\n orderStatus: Status;\n realisedPnl: number;\n priceVariationPnl: number;\n livePnL: number;\n fundingPnl: number;\n unrealisedPnl: number;\n liquidationPrice: number;\n marketId: number;\n accountId: number;\n};\n\nexport type OrderHistoryType =\n | 'long-trade'\n | 'short-trade'\n | 'long-liquidation'\n | 'short-liquidation';\n\nexport type OrderHistoryEntity = {\n id: string;\n action: OrderHistoryType;\n orderType: 'market';\n base: number;\n executionPrice: number;\n realisedPnl?: number | null;\n priceVariationPnl: number;\n fundingPnl: number;\n fees: number;\n openingFees: number;\n timestamp: number;\n marketId?: number;\n xpEarned: number;\n};\n\nexport type ApyDetails = {\n dailyApy: number;\n weeklyApy: number;\n monthlyApy: number;\n yearlyApy: number;\n};\n\nexport type LpPoolEntity = {\n id: number;\n name: string;\n description: string;\n longDescription: string;\n readMoreLink: string;\n currentAPY: number;\n apyDetails: ApyDetails;\n apyChange24H: number;\n tokenAddress: Address;\n token: string;\n minDepositAmount: number;\n minWithdrawAmount: number;\n stepSize: number;\n allowedChainsForLiquidity: MoneyInOutChainId[];\n moneyInOutConfiguration: MoneyInOutConfiguration;\n};\n\nexport type MoneyInOutConfiguration = {\n [key in MoneyInOutChainId]?: {\n minWithdrawAmount?: number;\n };\n};\n\nexport type MoneyInOutConfigurationPerTokenName = {\n [key in TokenName]?: MoneyInOutConfiguration;\n};\n\nexport type LpWithdrawBalanceEntity = {\n withdrawableBalance: number;\n poolSharePrice: number;\n accountShareBalance: number;\n balanceBreakdown: {\n [coinName: string]: {\n balance: number;\n priceTokenToRusd: number;\n tokenAddress: string;\n };\n };\n};\n\nexport type TransactionHistoryType = 'deposit' | 'withdrawal';\n\nexport type LpTransactionHistoryEntity = {\n id: number;\n type: TransactionHistoryType;\n token: string;\n share: number;\n tokenAddress: string;\n amount: number;\n transactionLink: string;\n timestamp: number;\n};\n\nexport type TokenEntity = {\n name: TokenName;\n address: Address;\n};\n\n// --- Lp Pool Balance ---\nexport enum LpBalanceGranularity {\n ONE_MINUTE = 60 * 1000,\n ONE_HOUR = 60 * 60 * 1000,\n ONE_DAY = 24 * 60 * 60 * 1000,\n ONE_WEEK = 7 * 24 * 60 * 60 * 1000,\n ONE_MONTH = 30 * 24 * 60 * 60 * 1000,\n ONE_YEAR = 365 * 24 * 60 * 60 * 1000,\n}\n\n// - LP Account Performance -\nexport type GetLpPoolPerformanceChartDataResult = {\n capitalInvestedData: {\n timestampInMs: number;\n value: number;\n }[];\n balanceData: {\n timestampInMs: number;\n value: number;\n }[];\n balance: number;\n balanceChangePercentage: number;\n capitalInvested: number;\n capitalInvestedChangePercentage: number;\n};\n\nexport type SocketTokenConnectors = {\n deposit: Address;\n withdraw: Address;\n};\n\nexport type GetSocketConnectorsParams = {\n moneyInOutChainId: MoneyInOutChainId;\n tokenName: TokenName;\n};\n\nexport type GetSocketVaultParams = {\n moneyInOutChainId: MoneyInOutChainId;\n tokenName: TokenName;\n};\n\nexport type GetMoneyInOutChainIdFromReyaConnectorParams = {\n reyaChainId: ReyaChainId;\n tokenName: TokenName;\n socketConnector: Address;\n};\n\nexport type GetSocketBridgeTimeParams = {\n moneyInOutChainId: MoneyInOutChainId;\n};\n\nexport type GetSocketBridgeTimeResult = {\n bridgeTimeInMS: number;\n};\n\nexport type GetSocketWithdrawMsgGasLimitParams = {\n moneyInOutChainId: MoneyInOutChainId;\n};\n\nexport type GetSocketWithdrawMsgGasLimitResult = {\n msgGasLimit: bigint;\n};\n\nexport type SocketDepositFeesEntry = {\n moneyInOutChainId: MoneyInOutChainId;\n tokenName: TokenName;\n fees: bigint;\n};\n\nexport type SocketWithdrawFeesEntry = {\n moneyInOutChainId: MoneyInOutChainId;\n tokenName: TokenName;\n fees: bigint;\n};\n\nexport type SocketDepositFees = {\n fees: bigint;\n feesInUnderlyingToken: number;\n underlyingTokenName: TokenName;\n};\n\nexport type SocketWithdrawFees = {\n fees: bigint;\n feesInUnderlyingToken: number;\n underlyingTokenName: TokenName;\n};\n\nexport type GetSocketWithdrawFeesParams = {\n reyaChainId: ReyaChainId;\n tokenAddress: TokenEntity['address'];\n};\n\nexport type GetSocketWithdrawFeesResult = {\n fees: number;\n};\n\n// --- Margin Account Balance ---\nexport enum MarginAccountBalanceGranularity {\n ONE_MINUTE = 60 * 1000,\n ONE_HOUR = 60 * 60 * 1000,\n ONE_DAY = 24 * 60 * 60 * 1000,\n ONE_WEEK = 7 * 24 * 60 * 60 * 1000,\n ONE_MONTH = 30 * 24 * 60 * 60 * 1000,\n ONE_YEAR = 365 * 24 * 60 * 60 * 1000,\n}\n\nexport type GetMarginAccountBalanceChartDataResult = {\n balanceData: {\n timestampInMs: number;\n value: number;\n }[];\n balance: number;\n balanceChangePercentage: number;\n};\n\n// --- Margin Account Collaterals Balance ---\nexport enum MarginAccountCollateralsBalanceGranularity {\n ONE_MINUTE = 60 * 1000,\n ONE_HOUR = 60 * 60 * 1000,\n ONE_DAY = 24 * 60 * 60 * 1000,\n ONE_WEEK = 7 * 24 * 60 * 60 * 1000,\n ONE_MONTH = 30 * 24 * 60 * 60 * 1000,\n ONE_YEAR = 365 * 24 * 60 * 60 * 1000,\n}\n\nexport type GetMarginAccountCollateralsBalanceChartDataResult = {\n data: {\n balanceData: {\n timestampInMs: number;\n value: number;\n }[];\n token: string;\n }[];\n balance: number;\n balanceChangePercentage: number;\n};\n\nexport type OwnerMetadataEntity = {\n address: Address;\n coreSigNonce: number;\n poolSigNonce: number;\n};\n\nexport type GetAllMarginAccountsBalanceChartDataResult = {\n balanceData: {\n timestampInMs: number;\n value: number;\n }[];\n balance: number;\n balanceChangePercentage: number;\n};\n\nexport enum AllMarginAccountsBalanceGranularity {\n ONE_MINUTE = 60 * 1000,\n ONE_HOUR = 60 * 60 * 1000,\n ONE_DAY = 24 * 60 * 60 * 1000,\n ONE_WEEK = 7 * 24 * 60 * 60 * 1000,\n ONE_MONTH = 30 * 24 * 60 * 60 * 1000,\n ONE_YEAR = 365 * 24 * 60 * 60 * 1000,\n}\n\n// --- Funding Rate History ----\nexport enum FundingRateHistoryGranularity {\n ONE_MINUTE = 60 * 1000,\n ONE_HOUR = 60 * 60 * 1000,\n ONE_DAY = 24 * 60 * 60 * 1000,\n ONE_WEEK = 7 * 24 * 60 * 60 * 1000,\n ONE_MONTH = 30 * 24 * 60 * 60 * 1000,\n ONE_YEAR = 365 * 24 * 60 * 60 * 1000,\n}\nexport type GetFundingRateChartDataResult = {\n fundingRateData: {\n timestampInMs: number;\n value: number;\n }[];\n fundingRate: number;\n};\nexport type GetCurrentFundingRateResult = {\n value: number;\n timestamp: number;\n};\n\nexport type GetInstantPoolPriceResult = {\n poolPrice: number;\n poolSlippage: number;\n oraclePrice: number;\n};\n\nexport type GetBalancesForBridgeArgs = {\n walletAddress: string;\n};\n\nexport type SignatureData = {\n signature: string;\n timestamp: number;\n walletAddress: Address;\n version: string;\n};\n\nexport type SaveSignatureResult = {\n signatureSavedSuccessfully: boolean;\n};\n\n// --- Community ----\nexport type VoteDetailsEntity = {\n id: number;\n startDate: number; // timestamp in UTC milliseconds\n endDate: number; // timestamp in UTC milliseconds\n percentageToPass: number; // Example: 4%\n yesCount: number;\n noCount: number;\n voteCountToPass: number; // Example: 1453\n slug: string;\n title: string;\n // Free text, each newline represents paragraph. UI splits by \\n atm to keep stuff simple\n description: string;\n};\n\nexport type VoteContractDetailsEntity = {\n id: number;\n contractAddress: Address;\n};\n\nexport type VoteStatusEntity = {\n votingPower: number;\n hasVoted: boolean;\n};\n\nexport type GetLpTvlResult = {\n currentTVL: number;\n currentLiquidity: number;\n};\n\nexport type Rank = {\n rankNumber: number;\n rankLetter: string;\n rankName: string;\n};\n\nexport type RankTrading = {\n rankNumber: number;\n rankName: string;\n};\n\nexport type GetWalletReferralDetailsParams = {\n address: string;\n};\n\nexport type GetWalletReferralDetailsResult = {\n totalReferralsCount: number;\n totalReferralXP: number;\n tradingRebateFee: number;\n tradingXp: number;\n liquidityXp: number;\n isAffiliate: boolean;\n};\n\nexport type GetWalletReferralCodeParams = {\n address: string;\n};\n\nexport type GetWalletReferralCodeResult = {\n referralCode: string;\n};\n\nexport type TokenEntityWithMinValue = TokenEntity & {\n minDepositAmount: number;\n minWithdrawAmount: number;\n minTransferAmount: number;\n};\n\nexport type TokenInfo = {\n name: TokenName;\n address: Address;\n decimals: number;\n isRUSDUnderlying: boolean;\n minDepositAmount: number;\n minWithdrawAmount: number;\n minTransferAmount: number;\n whitelistedWalletOnly?: boolean;\n isElixirToken?: boolean;\n isLmToken?: boolean;\n isPoolToken?: boolean;\n isOFT?: boolean;\n};\n\nexport type GetReyaCheckerResult = {\n isEligibleForRcp: boolean;\n isEligibleForVltz: boolean;\n isEligibleForCommunity: boolean;\n};\n\nexport type TgeAllocatedAmount = {\n total: number;\n vltz: number;\n rcp: number;\n community: number;\n};\n\nexport type TrancheInfo = {\n trancheId: number;\n amount: number;\n deadlineMs: number;\n released: boolean;\n};\n\nexport type GetTgeClaimingInfoResult = {\n wallet: string;\n amount: TgeAllocatedAmount;\n hasClaimed?: boolean;\n hasLocked?: boolean;\n distributorContract?: string;\n merkleRoot?: string;\n tranches?: TrancheInfo[];\n};\n\nexport type TgeClaimTokensResult = {\n success: boolean;\n wallet: string;\n amount: TgeAllocatedAmount;\n transactionHash: string;\n};\n\n// --- TOS ----\n\nexport type TRMRiskAssessment = {\n accountExternalId: string;\n address: string;\n addressRiskIndicators: TMRRiskIndicator[];\n addressSubmitted: string;\n chain: string;\n entities: unknown[];\n trmAppUrl: string;\n};\n\nexport type TMRRiskIndicator = {\n category: string;\n categoryId: string;\n categoryRiskScoreLevel: number;\n categoryRiskScoreLevelLabel: string;\n incomingVolumeUsd: string;\n outgoingVolumeUsd: string;\n riskType: string;\n totalVolumeUsd: string;\n};\n\n// todo: deprecate after 1st tac client is deprecated\nexport type ToSVersionDetails = {\n text: string;\n version: string;\n creationTimestamp: number; // in MS\n};\n\nexport type ToSProductVersionDetails = {\n shortText: string;\n longText: string;\n version: string;\n creationTimestamp: number; // in MS\n product: string;\n};\n\nexport type SocketBridgeTransactionPoolStatus =\n | 'pending'\n | 'confirmed'\n | 'failed';\n\nexport type IpInfo = {\n ip: string;\n hostname: string;\n city: string;\n region: string;\n country: string;\n loc: string;\n org: string;\n postal: string;\n timezone: string;\n privacy: {\n vpn: boolean;\n proxy: boolean;\n tor: boolean;\n relay: boolean;\n hosting: boolean;\n service: string;\n };\n countryCode: string;\n countryFlag: {\n emoji: string;\n unicode: string;\n };\n countryFlagURL: string;\n countryCurrency: {\n code: string;\n symbol: string;\n };\n continent: {\n code: string;\n name: string;\n };\n isEU: boolean;\n};\n\nexport interface CandleMessage {\n /** Stringified JSON object of all events to be streamed. */\n contents: string;\n /** Clob pair id of the Candle message. */\n\n clobPairId: string;\n /** Resolution of the candle update. */\n\n resolution: string;\n /** Version of the websocket message. */\n\n version: string;\n}\n\nexport interface PriceMessage {\n contents: string;\n assetPairId: string;\n version: string;\n}\n\nexport interface FundingRateMessage {\n contents: string;\n assetPairId: string;\n version: string;\n}\n\nexport interface MarketsUpdateMessage {\n contents: string;\n version: string;\n id: string;\n}\n\nexport enum CandleResolution {\n ONE_MINUTE = '1MIN',\n FIVE_MINUTES = '5MINS',\n FIFTEEN_MINUTES = '15MINS',\n THIRTY_MINUTES = '30MINS',\n ONE_HOUR = '1HOUR',\n FOUR_HOURS = '4HOURS',\n ONE_DAY = '1DAY',\n}\n\nexport type TransactionExecutionMetadata = {\n accountName?: string;\n accountSource?: string;\n accountId?: number;\n marketId?: number;\n destinationType?: 'pool' | 'account';\n action?:\n | 'matchOrder'\n | 'closeOrder'\n | 'createAccount'\n | 'ioc-order-ui'\n | 'ioc-order-api-v2'\n | 'ioc-reduce-only-order-ui'\n | 'ioc-reduce-only-order-api-v2'\n | 'enable-api-wallet'\n | 'disable-api-wallet';\n tradeSource?: 'reya' | 'rage' | 'other';\n sender?: string;\n clientSentTimestamp?: number; // Timestamp (ms) when client sent the request\n clientTimezone?: string; // Client's timezone (e.g., 'America/New_York', 'Europe/London')\n matchOrder?: {\n eip712Payload: CoreCommandsEIP712SignatureAndPayload['payload'];\n userEIP712Signature: EIP712Signature;\n };\n};\n\nexport type TransactionExecutionOutput = {\n txHash: string | null;\n txSubmitted?: boolean;\n errorMessage?: string;\n /**\n * Structured error discriminator surfaced by the slim\n * `executeReyaTransaction` core. One of\n * `TRANSACTION_FAILED_TO_SEND` (pre-send: wallet manager rejected),\n * `RECEIPT_NOT_FOUND` (post-send: receipt fetch failed),\n * `TRANSACTION_REVERTED` (post-send: receipt.status === 0), or\n * `FAILED_FILL` (post-send: FailedUnifiedFillBytes / FailedFillBytes).\n * Optional — populated when the slim core returned a discriminated\n * failure. May coexist with a non-null `txHash` on post-send failures\n * (the on-chain hash is surfaced for `RECEIPT_NOT_FOUND`,\n * `TRANSACTION_REVERTED`, and `FAILED_FILL`). UI consumers should prefer\n * `errorMessage` for display; this field is for analytics + logs.\n *\n * `FAILED_ORDER` (used to be: FailedOrderBytes) is retired alongside\n * the legacy `OrdersGateway.execute` IOC handler in PRO-126 Bug 5.\n */\n errorCode?: string;\n accountId?: string | null;\n coreSigNonce?: string | null;\n poolSigNonce?: string | null;\n miscellaneous?: {\n tradeXpBoost?: number;\n lotteryXpBoost?: number;\n xpNftAwarded?: boolean;\n xpEarned?: number;\n };\n tradeDetails?: {\n executionPrice?: number;\n base?: number;\n };\n positions?: {\n market_id: string;\n account_id: string;\n base: string | null;\n realized_pnl: string | null;\n last_price: string | null;\n position_data_last_price_data_timestamp: string | null;\n funding_value: string | null;\n base_multiplier: string | null;\n adl_unwind_price: string | null;\n transaction_hash: string;\n block_timestamp: string | null;\n block_number: string;\n unique_id: string | null;\n }[];\n orders?: {\n id: string;\n market_id: string | null;\n account_id: string | null;\n order_base: string | null;\n fee: string | null;\n price: string | null;\n type: string;\n processed: boolean;\n transaction_hash: string;\n block_timestamp: string | null;\n block_number: string;\n source: string | null;\n unique_id: string | null;\n }[];\n accounts?: Omit<\n Stringified<TradingApiSource['wallet/:address/accounts']['response'][0]>,\n 'status'\n >[];\n //orderAndPositionUpdate?: Stringified<PassivePerpOrderAndPositionUpdate>[];\n};\n\nexport type CanonicalReleaseStatus = 'pending' | 'ready' | 'completed';\n\ntype PendingWithdrawalStatus = {\n status: 'pending';\n};\n\ntype ReadyWithdrawalStatus = {\n status: 'ready';\n txHash: string;\n};\n\nexport type PendingWithdrawal = {\n tokenAmount: number;\n} & (PendingWithdrawalStatus | ReadyWithdrawalStatus);\n\n// PRO-126 Bug 5 retired the legacy `OrdersGatewayOrderType` enum (the\n// 8-field `ConditionalOrderDetails` typehash discriminator). The\n// on-chain `OrdersGateway.execute` selector that consumed those values\n// is gone; every order class now uses `OrderType` below, whose values\n// mirror the on-chain `OrderType` enum in\n// orders-gateway/src/libraries/DataTypes.sol.\nexport enum OrderType {\n Limit = 0,\n StopLoss = 1,\n TakeProfit = 2,\n}\n\n// Matches the on-chain `MarketType` enum. Used to discriminate spot vs perp\n// in unified off-chain code paths and with the market-id namespace helpers in\n// packages/common-backend/src/market-id-namespace.\nexport enum MarketType {\n Spot = 0,\n Perp = 1,\n}\n\n// Canonical on-chain V3 codes, also written by the pre-cutover V2 indexer.\nexport { CanonicalExecutionType as ExecutionType } from './canonical-execution-type';\n\nexport enum ConditionalOrderType {\n STOP_LOSS = 0,\n TAKE_PROFIT = 1,\n LIMIT_ORDER = 2,\n}\n\nexport type ConditionalOrderTypeName =\n | 'Stop Loss'\n | 'Take Profit'\n | 'Limit Order';\n\nexport enum ConditionalOrderStatus {\n PENDING = 'pending',\n FILLED = 'filled',\n CANCELLED = 'cancelled',\n REJECTED = 'rejected',\n}\n\nexport enum TierType {\n REGULAR = 'REGULAR',\n VIP = 'VIP',\n}\n\nexport type ConditionalOrder = {\n orderId: string;\n accountId: number;\n marketId: number;\n orderType: ConditionalOrderTypeName;\n isLong: boolean;\n triggerPrice: number;\n signerWallet: string;\n nonce: string;\n signature: string;\n eip712Signature: EIP712Signature;\n status: ConditionalOrderStatus;\n creationTimestampMs: number;\n lastUpdateTimestampMs: number;\n base: number;\n exchangeId: number;\n inputs: string;\n counterpartyAccountId: number;\n};\n\nexport type UnifiedConditionalOrderType = {\n orderId: string;\n accountId: number;\n marketId: number;\n base: number | null; // null when order is cancelled\n isLong: boolean;\n price: number;\n status: ConditionalOrderStatus;\n orderType: ConditionalOrderTypeName;\n timestampMs: number;\n};\n\nexport type IsDiscordLinkedParams = {\n address: string;\n};\nexport type IsDiscordLinkedResult = {\n isLinked: boolean;\n};\nexport type LinkDiscordParams = {\n discordAccessToken: string;\n signer: Signer | JsonRpcSigner;\n};\nexport type LinkDiscordResult = void;\nexport type UnlinkDiscordParams = {\n address: string;\n discordAccessToken: string;\n};\nexport type UnlinkDiscordResult = void;\nexport type ClaimDiscordRankParams = {\n address: string;\n discordAccessToken: string;\n};\nexport type ClaimDiscordRankResult = void;\n\nexport type IsDiscordRankClaimedParams = {\n address: string;\n};\nexport type IsDiscordRankClaimedResult = {\n isClaimed: boolean;\n};\n\nexport interface ApiErrorResponse {\n response: {\n status: number;\n data: {\n error: string;\n };\n };\n}\n\n// ref: https://github.com/tkhq/sdk/blob/08e2b8c30848498ed0850aa1e1ede67775b001e5/packages/http/src/__generated__/\n// services/coordinator/public/v1/public_api.types.ts\nexport type V1Attestation = {\n /** @description The cbor encoded then base64 url encoded id of the credential. */\n credentialId: string;\n /** @description A base64 url encoded payload containing metadata about the signing context and the challenge. */\n clientDataJson: string;\n /** @description A base64 url encoded payload containing authenticator data and any attestation the webauthn provider chooses. */\n attestationObject: string;\n /** @description The type of authenticator transports. */\n transports: V1AuthenticatorTransport[];\n};\n\nexport type V1AuthenticatorTransport =\n | 'AUTHENTICATOR_TRANSPORT_BLE'\n | 'AUTHENTICATOR_TRANSPORT_INTERNAL'\n | 'AUTHENTICATOR_TRANSPORT_NFC'\n | 'AUTHENTICATOR_TRANSPORT_USB'\n | 'AUTHENTICATOR_TRANSPORT_HYBRID';\n\n// on-chain events (consider pushing into a separate file)\nexport type MatchOrderDetails = {\n uniqueId: string;\n transactionHash: string;\n accountId: number;\n marketId: number;\n sizeNotional: number;\n base: number;\n price: number;\n};\n\nexport type GetLpPoolPositionRPCResponse = {\n poolPositionShareBalance: number; // amount of srUSD in the pool held by the account\n poolPositionBalance: number; // amount of rUSD in the pool held by the account\n poolTotalBalance: number; // total amount of rUSD in the pool\n sharePrice: number; // share price of the pool\n};\n\ninterface MatchOrderFees {\n protocolFeeCredit: bigint;\n exchangeFeeCredit: bigint;\n takerFeeDebit: bigint;\n makerPayments: bigint[];\n referrerFeeCredit: bigint;\n}\n\ninterface PositionDataOld {\n base: bigint;\n realizedPnL: bigint;\n lastPriceData: {\n price: bigint;\n timestamp: bigint;\n };\n trackers: {\n fundingValue: bigint;\n baseMultiplier: bigint;\n adlUnwindPrice: bigint;\n };\n}\n\nexport interface PassivePerpOrderAndPositionUpdate {\n id: string;\n marketId: bigint;\n accountId: bigint;\n counterpartyAccountId: bigint;\n executedBase: bigint;\n matchOrderFees: MatchOrderFees;\n executedPrice: bigint;\n referrerAccountId: bigint;\n isMatchOrder: boolean;\n liquidationType: bigint;\n positionData: PositionDataOld;\n counterpartyPositionData: PositionDataOld;\n blockTimestamp: bigint;\n blockNumber: string;\n transactionHash: string;\n uniqueId: bigint;\n}\n\nexport type ConfiguredAssetPair =\n | 'ETHUSD'\n | 'WSTETHUSD'\n | 'WBTCUSD'\n | 'BTCUSD' // Localnet's mock BTC collateral feed\n | 'USDCUSD'\n | 'USDEUSD'\n | 'SUSDEUSD'\n | 'DEUSDUSD'\n | 'SDEUSDDEUSD'\n | 'REYALM#AMBERUSDC'\n | 'REYALM#HEDGEUSDC'\n | 'SRUSDRUSD_RR'\n | 'REYAPOOL#1'\n | 'REYARUSD'\n | 'SREYARUSD'\n | 'ETHUSDMARK'\n | 'BTCUSDMARK'\n | 'SOLUSDMARK'\n | 'ARBUSDMARK'\n | 'OPUSDMARK'\n | 'AVAXUSDMARK'\n | 'MKRUSDMARK'\n | 'LINKUSDMARK'\n | 'AAVEUSDMARK'\n | 'CRVUSDMARK'\n | 'UNIUSDMARK'\n | 'SUIUSDMARK'\n | 'TIAUSDMARK'\n | 'SEIUSDMARK'\n | 'ZROUSDMARK'\n | 'XRPUSDMARK'\n | 'WIFUSDMARK'\n | '1000PEPEUSDMARK'\n | 'POPCATUSDMARK'\n | 'DOGEUSDMARK'\n | '1000SHIBUSDMARK'\n | '1000BONKUSDMARK'\n | 'APTUSDMARK'\n | 'BNBUSDMARK'\n | 'JTOUSDMARK'\n | 'ADAUSDMARK'\n | 'LDOUSDMARK'\n | 'POLUSDMARK'\n | 'NEARUSDMARK'\n | 'FTMUSD'\n | 'ENAUSDMARK'\n | 'EIGENUSDMARK'\n | 'PENDLEUSDMARK'\n | 'GOATUSDMARK'\n | 'GRASSUSDMARK'\n | '1000NEIROUSDMARK'\n | 'DOTUSDMARK'\n | 'LTCUSDMARK'\n | 'PYTHUSDMARK'\n | 'JUPUSDMARK'\n | 'PENGUUSDMARK'\n | 'TRUMPUSDMARK'\n | 'HYPEUSDMARK'\n | 'VIRTUALUSDMARK'\n | 'AI16ZUSDMARK'\n | 'AIXBTUSDMARK'\n | 'SUSDMARK'\n | 'FARTCOINUSDMARK'\n | 'GRIFFAINUSDMARK'\n | 'WLDUSDMARK'\n | 'ATOMUSDMARK'\n | 'APEUSDMARK'\n | 'TONUSDMARK'\n | 'ONDOUSDMARK'\n | 'TRXUSDMARK'\n | 'INJUSDMARK'\n | 'MOVEUSDMARK'\n | 'BERAUSDMARK'\n | 'LAYERUSDMARK'\n | 'TAOUSDMARK'\n | 'IPUSDMARK'\n | 'MEUSDMARK'\n | 'PUMPUSDMARK'\n | 'MORPHOUSDMARK'\n | 'SYRUPUSDMARK'\n | 'AEROUSDMARK'\n | 'KAITOUSDMARK'\n | 'ZORAUSDMARK'\n | 'PROVEUSDMARK'\n | 'PAXGUSDMARK'\n | 'YZYUSDMARK'\n | 'XPLUSDMARK'\n | 'WLFIUSDMARK'\n | 'LINEAUSDMARK'\n | 'MEGAUSDMARK'\n | 'LITUSDMARK'\n // RWA mark feed identities on every supported chain; publication is separate.\n | RwaMarkAssetPair;\n\ntype SpotPair<T extends string> = T extends `${infer Base}USDMARK`\n ? `${Base}USD`\n : never;\n\n/**\n * Base assets of the RWA perpetual markets (ids 76-94; registration is a separate per-chain release gate). Stork publishes each as a pair of\n * USDC-quoted feeds, so neither is ever divided by USDCUSD.\n */\nexport type RwaStorkAsset =\n | 'XAU'\n | 'XAG'\n | 'WTI'\n | 'AAPL'\n | 'MSFT'\n | 'GOOGL'\n | 'AMZN'\n | 'NVDA'\n | 'META'\n | 'TSLA'\n | 'SPY'\n | 'QQQ'\n | 'SPCX'\n | 'MU'\n | 'CRCL'\n | 'INTC'\n | 'HOOD'\n | 'AMD'\n | 'MSTR';\n\n/**\n * Stork actual-mark feed. It is each RWA market's on-chain `oracleNodeId`, the\n * reference for the mark-push and fill collars, so the oracle updater pushes it.\n */\nexport type RwaMarkAssetPair = `${RwaStorkAsset}USDC_MK`;\n\n/**\n * Stork exchange-index feed. Only the matching engine and the API index price\n * read it; nothing on-chain references it.\n */\nexport type RwaIndexAssetPair = `${RwaStorkAsset}USDC_IDX`;\n\n/** Internal cache keys whose prices mirror an existing reference feed. */\nexport type MirroredAssetPair =\n | 'REYALM#KEYROCKRUSD'\n | 'REYALM#FLOWRUSD'\n | 'REYALM#SELINIRUSD';\n\n/** Includes Stork spot feeds and mirrored price cache keys. */\nexport type AssetPair =\n | ConfiguredAssetPair\n | SpotPair<ConfiguredAssetPair>\n | RwaIndexAssetPair\n | MirroredAssetPair\n // Historical/cache input only; no active producer owns this retired key.\n | 'REYALM#SELINIUSDC';\n\nexport type ContractId = string;\n\nexport type Price = {\n symbol: number;\n oraclePrice: string;\n poolPrice: string | null;\n updatedAt: number;\n};\n\nexport type MarketPrice = {\n marketId: number;\n /** @deprecated No longer written; will be removed when V1 prices endpoints are dropped. */\n price?: string;\n /**\n * ME mark price (E18), despite the name — the pool-price task has written the\n * matching-engine mark here since the perpOB rewire. Surfaced as the v2\n * `MarketSummary.markPrice`. The genuine index price is `indexPrice`.\n */\n oraclePrice: string;\n /**\n * Orderbook mid (E18). Absent on an empty or one-sided book — there is\n * deliberately no mark-price fallback, because publishing the mark under the\n * name \"mid\" makes a book with no two-sided quote indistinguishable from one\n * trading exactly at the mark. Consumers must treat it as optional, the same\n * way `SpotMarketSummary.throttledMidPrice` has always been treated.\n */\n poolPrice?: string;\n /**\n * Stork reference/index price (E18), rUSD-quoted on a USDC basis. Explicit\n * USDC feeds pass through; USD feeds are divided by a fresh USDCUSD value.\n * Absent when the feed has no fresh tick, a required cross-rate is unusable, and on\n * markets with no Stork feed, so consumers must treat it as optional rather\n * than substituting a stale value.\n */\n indexPrice?: string;\n /** When this row was written (Unix ms); rewritten on every flush. */\n updatedAt: number;\n /**\n * Source time of `oraclePrice` (Unix ms): the matching engine's own mark\n * timestamp. Absent on rows written before it was recorded.\n */\n oraclePriceUpdatedAt?: number;\n};\n\nexport type CollateralPrice = {\n address: string;\n oraclePrice: string;\n /** When this row was written (Unix ms); rewritten on every flush. */\n updatedAt: number;\n /**\n * Source time of `oraclePrice` (Unix ms): the oldest oracle tick it was\n * derived from. Absent on rows written before it was recorded.\n */\n oraclePriceUpdatedAt?: number;\n};\n\nexport const isMarketPrice = (\n price: MarketPrice | CollateralPrice,\n): price is MarketPrice =>\n Object.prototype.hasOwnProperty.call(price, 'marketId');\n\n// Replication-derived types\ntype Unpacked<T> = T extends (infer U)[] ? U : T;\n\n// PRO-126 Bug 7: `ConditionalOrderSensitive` + `OrderReplicationData`\n// retired with the rest of the `ConditionalOrders` DB pipeline. The\n// `replication:ConditionalOrdersSensitive` channel is no longer\n// subscribed (bun-socket/index.ts) and no longer publishes\n// (common-backend/src/config/database.ts). Order data flows through\n// the ME's `{orders}:changes` stream consumed by AccountOrdersMap;\n// callers should derive types from the ME's protobuf `Order` schema.\n\nexport type Position = Unpacked<Replication['replication:position']['result']>;\n\n// Stringified replication data types for WebSocket transformers\nexport type PositionReplicationData = Stringified<\n Unpacked<Replication['replication:position']['result']>\n>;\n\nexport type PerpExecutionReplicationData = Omit<\n Stringified<Unpacked<Replication['replication:orders']['result']>>,\n 'created_at'\n> & {\n created_at?: string;\n} & FillOwners;\n\nexport type AccountRealBalanceReplicationData = Stringified<\n Unpacked<Replication['replication:account_real_balances']['result']>\n>;\n\n/** Each side's owner, on fill rows from the trades and spot streams (PRO-1172). */\ntype FillOwners = {\n account_owner?: string;\n counterparty_account_owner?: string;\n};\n\nexport type SpotExecutionReplicationData = Stringified<\n Unpacked<Replication['replication:spot_executions']['result']>\n> &\n FillOwners;\n\nexport type ExecutionBustReplicationData = Stringified<\n Unpacked<Replication['replication:execution_busts']['result']>\n>;\n\nexport type MarketDataReplicationData = Stringified<\n Unpacked<Replication['replication:marketData']['result']>\n>;\n\nexport type SpotMarketDataReplicationData = Stringified<\n Unpacked<Replication['replication:spotMarketData']['result']>\n>;\n"]}
@@ -14,11 +14,22 @@ var __extends = (this && this.__extends) || (function () {
14
14
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
15
  };
16
16
  })();
17
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
17
28
  var __importDefault = (this && this.__importDefault) || function (mod) {
18
29
  return (mod && mod.__esModule) ? mod : { "default": mod };
19
30
  };
20
31
  Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.calculateSettledAccountPnl = exports.calculateSettledPositionPnl = exports.SettlementTrackerError = void 0;
32
+ exports.calculateSettledAccountPnl = exports.calculatePositionFundingPnl = exports.calculateSettledPositionPnl = exports.positionAdjustmentTrackers = exports.trackersBehindPosition = exports.SettlementTrackerError = void 0;
22
33
  var bignumber_js_1 = __importDefault(require("bignumber.js"));
23
34
  /** Structured cause for service metrics; calculation still fails closed. */
24
35
  var SettlementTrackerError = /** @class */ (function (_super) {
@@ -52,6 +63,31 @@ var optionalBlock = function (value) {
52
63
  var result = new bignumber_js_1.default(value.toString());
53
64
  return result.isInteger() ? result : undefined;
54
65
  };
66
+ /**
67
+ * Market trackers older than the position's own snapshot carry nothing the
68
+ * stored position does not already reflect. Off-chain tracker feeds can lag
69
+ * the position stream.
70
+ */
71
+ function trackersBehindPosition(position, trackers) {
72
+ var positionBlock = optionalBlock(position.block_number);
73
+ var trackerBlock = optionalBlock(trackers.blockNumber);
74
+ return !!positionBlock && !!trackerBlock && positionBlock.gt(trackerBlock);
75
+ }
76
+ exports.trackersBehindPosition = trackersBehindPosition;
77
+ /**
78
+ * The trackers to ADL-adjust a position's quantity with, guarded the way its
79
+ * settlement is: behind the position, its own multiplier and unwind price stand in.
80
+ */
81
+ function positionAdjustmentTrackers(position, trackers) {
82
+ if (!trackersBehindPosition(position, trackers) ||
83
+ position.base_multiplier === null ||
84
+ position.adl_unwind_price === null)
85
+ return trackers;
86
+ var multiplier = position.base_multiplier.toString();
87
+ var unwind = position.adl_unwind_price.toString();
88
+ return __assign(__assign({}, trackers), { longTrackersBaseMultiplier: multiplier, shortTrackersBaseMultiplier: multiplier, longTrackersAdlUnwindPrice: unwind, shortTrackersAdlUnwindPrice: unwind });
89
+ }
90
+ exports.positionAdjustmentTrackers = positionAdjustmentTrackers;
55
91
  var mulWad = function (a, b) {
56
92
  return a.times(b).dividedToIntegerBy(WAD);
57
93
  };
@@ -85,12 +121,10 @@ function calculateSettledPositionPnl(position, trackers, onGuarded) {
85
121
  return realized;
86
122
  // Market trackers older than the position's own snapshot carry no new
87
123
  // cashflow: the stored realized PnL already settled everything up to the
88
- // position's block. Off-chain tracker feeds can lag the position stream, so
89
- // treat that window as "nothing accrued" instead of projecting a delta
90
- // backwards (wrong-sign funding, or an ADL guard failure below).
91
- var positionBlock = optionalBlock(position.block_number);
92
- var trackerBlock = optionalBlock(trackers.blockNumber);
93
- if (positionBlock && trackerBlock && positionBlock.gt(trackerBlock)) {
124
+ // position's block. Treat that window as "nothing accrued" instead of
125
+ // projecting a delta backwards (wrong-sign funding, or an ADL guard failure
126
+ // below).
127
+ if (trackersBehindPosition(position, trackers)) {
94
128
  onGuarded === null || onGuarded === void 0 ? void 0 : onGuarded();
95
129
  return realized;
96
130
  }
@@ -107,6 +141,37 @@ function calculateSettledPositionPnl(position, trackers, onGuarded) {
107
141
  return realized.plus(fundingCashflow).plus(adlCashflow);
108
142
  }
109
143
  exports.calculateSettledPositionPnl = calculateSettledPositionPnl;
144
+ /**
145
+ * Raw E18 funding on an open position since entry, as `averageEntryFundingValue`
146
+ * tracks it in perpOB `propagateOrderToPerpPosition`: averaged in when the
147
+ * position grows, unchanged on a reduce, reset on a reopen or flip. Funding has
148
+ * already settled into the balance as it accrued; this attributes it to the
149
+ * open position. Positive means the position earned funding.
150
+ *
151
+ * The stored base over the multiplier at the position's last update is the
152
+ * same ratio as the ADL-adjusted base over the current multiplier, so no ADL
153
+ * adjustment is needed. Market trackers behind the position's own snapshot
154
+ * stand in with the position's funding value, as settlement does.
155
+ */
156
+ function calculatePositionFundingPnl(position, trackers) {
157
+ var base = integer(position.base, 'position base');
158
+ if (base.isZero())
159
+ return new bignumber_js_1.default(0);
160
+ if (!trackers)
161
+ throw new SettlementTrackerError(position.market_id.toString(), 'missing');
162
+ var funding = trackersBehindPosition(position, trackers)
163
+ ? integer(position.funding_value, 'position funding')
164
+ : integer(base.isPositive()
165
+ ? trackers.longTrackersFundingValue
166
+ : trackers.shortTrackersFundingValue, 'market funding');
167
+ var entry = integer(position.average_entry_funding_value, 'average entry funding value');
168
+ var multiplier = integer(position.base_multiplier, 'position multiplier');
169
+ if (multiplier.lte(0)) {
170
+ throw new SettlementTrackerError(position.market_id.toString(), 'inconsistent');
171
+ }
172
+ return mulWad(divWad(funding.minus(entry), multiplier), base.negated());
173
+ }
174
+ exports.calculatePositionFundingPnl = calculatePositionFundingPnl;
110
175
  /**
111
176
  * Returns raw E18 PnL aligned to collateral units. The instrument floors EACH
112
177
  * market's PnL to quote-token precision before Core aggregates collateral info.
@@ -1 +1 @@
1
- {"version":3,"file":"realized-balance.js","sourceRoot":"/","sources":["utils/realized-balance.ts"],"names":[],"mappings":"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","sourcesContent":["import BigNumber from 'bignumber.js';\n\n/** Raw E18 position values, from either Prisma or replication. */\nexport type RealizedBalancePosition = {\n market_id: { toString(): string };\n base: { toString(): string } | null;\n realized_pnl: { toString(): string } | null;\n funding_value: { toString(): string } | null;\n base_multiplier: { toString(): string } | null;\n adl_unwind_price: { toString(): string } | null;\n last_price: { toString(): string } | null;\n /** Block the stored trackers were written at; lets stale market trackers be ignored. */\n block_number?: { toString(): string } | null;\n};\n\nexport type RealizedBalanceTrackers = {\n longTrackersFundingValue: string;\n shortTrackersFundingValue: string;\n longTrackersBaseMultiplier: string;\n shortTrackersBaseMultiplier: string;\n longTrackersAdlUnwindPrice: string;\n shortTrackersAdlUnwindPrice: string;\n /** Block the market trackers were observed at (optional; enables the staleness guard). */\n blockNumber?: string | null;\n};\n\n/** Structured cause for service metrics; calculation still fails closed. */\nexport class SettlementTrackerError extends Error {\n constructor(\n public readonly marketId: string,\n public readonly reason: 'missing' | 'inconsistent',\n ) {\n super(\n reason === 'missing'\n ? `Missing market trackers for ${marketId}`\n : `Inconsistent ADL trackers for ${marketId}`,\n );\n // common targets ES5; restore Error subclass identity after downleveling.\n Object.setPrototypeOf(this, new.target.prototype);\n this.name = 'SettlementTrackerError';\n }\n}\n\nconst WAD = new BigNumber('1000000000000000000');\nconst integer = (value: { toString(): string } | null, field: string) => {\n const result = new BigNumber(value?.toString() ?? NaN);\n if (!result.isInteger()) throw new Error(`Missing or invalid ${field}`);\n return result;\n};\nconst optionalBlock = (value: { toString(): string } | null | undefined) => {\n if (value === null || value === undefined) return undefined;\n const result = new BigNumber(value.toString());\n return result.isInteger() ? result : undefined;\n};\nconst mulWad = (a: BigNumber, b: BigNumber) =>\n a.times(b).dividedToIntegerBy(WAD);\nconst divWad = (a: BigNumber, b: BigNumber) =>\n a.times(WAD).dividedToIntegerBy(b);\n\n/** Mirrors perpOB updatePerpPosition, including PRBMath truncation at each step. */\nexport function calculateSettledPositionPnl(\n position: RealizedBalancePosition,\n trackers: RealizedBalanceTrackers | undefined,\n onGuarded?: () => void,\n): BigNumber {\n const base = integer(position.base, 'position base');\n const realized = integer(position.realized_pnl, 'realized PnL');\n if (base.isZero()) return realized;\n if (!trackers)\n throw new SettlementTrackerError(position.market_id.toString(), 'missing');\n\n const long = base.isPositive();\n const funding = integer(\n long\n ? trackers.longTrackersFundingValue\n : trackers.shortTrackersFundingValue,\n 'market funding',\n );\n const multiplier = integer(\n long\n ? trackers.longTrackersBaseMultiplier\n : trackers.shortTrackersBaseMultiplier,\n 'market multiplier',\n );\n const unwind = integer(\n long\n ? trackers.longTrackersAdlUnwindPrice\n : trackers.shortTrackersAdlUnwindPrice,\n 'market unwind price',\n );\n const oldMultiplier = integer(\n position.base_multiplier,\n 'position multiplier',\n );\n const oldUnwind = integer(position.adl_unwind_price, 'position unwind price');\n const oldFunding = integer(position.funding_value, 'position funding');\n if (\n funding.eq(oldFunding) &&\n multiplier.eq(oldMultiplier) &&\n unwind.eq(oldUnwind)\n )\n return realized;\n\n // Market trackers older than the position's own snapshot carry no new\n // cashflow: the stored realized PnL already settled everything up to the\n // position's block. Off-chain tracker feeds can lag the position stream, so\n // treat that window as \"nothing accrued\" instead of projecting a delta\n // backwards (wrong-sign funding, or an ADL guard failure below).\n const positionBlock = optionalBlock(position.block_number);\n const trackerBlock = optionalBlock(trackers.blockNumber);\n if (positionBlock && trackerBlock && positionBlock.gt(trackerBlock)) {\n onGuarded?.();\n return realized;\n }\n\n if (\n oldMultiplier.lte(0) ||\n multiplier.lt(0) ||\n multiplier.gt(oldMultiplier) ||\n unwind.lt(oldUnwind)\n ) {\n throw new SettlementTrackerError(\n position.market_id.toString(),\n 'inconsistent',\n );\n }\n const fundingCashflow = mulWad(\n divWad(funding.minus(oldFunding), oldMultiplier),\n base.negated(),\n );\n const unwindDelta = divWad(unwind.minus(oldUnwind), oldMultiplier);\n const initialPrice = mulWad(\n WAD.minus(divWad(multiplier, oldMultiplier)),\n integer(position.last_price, 'position price'),\n );\n const adlCashflow = mulWad(base, unwindDelta.minus(initialPrice));\n return realized.plus(fundingCashflow).plus(adlCashflow);\n}\n\n/**\n * Returns raw E18 PnL aligned to collateral units. The instrument floors EACH\n * market's PnL to quote-token precision before Core aggregates collateral info.\n * Funding is the stored market tracker delta; do not extrapolate it with time.\n */\nexport function calculateSettledAccountPnl(\n positions: RealizedBalancePosition[],\n trackers: Partial<Record<string, RealizedBalanceTrackers>>,\n collateralDecimals: number,\n onGuarded?: () => void,\n): BigNumber {\n return positions.reduce((sum, position) => {\n const pnl = calculateSettledPositionPnl(\n position,\n trackers[position.market_id.toString()],\n onGuarded,\n );\n const rounded = pnl\n .shiftedBy(collateralDecimals - 18)\n .integerValue(BigNumber.ROUND_FLOOR)\n .shiftedBy(18 - collateralDecimals);\n return sum.plus(rounded);\n }, new BigNumber(0));\n}\n"]}
1
+ {"version":3,"file":"realized-balance.js","sourceRoot":"/","sources":["utils/realized-balance.ts"],"names":[],"mappings":"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","sourcesContent":["import BigNumber from 'bignumber.js';\n\n/** Raw E18 position values, from either Prisma or replication. */\nexport type RealizedBalancePosition = {\n market_id: { toString(): string };\n base: { toString(): string } | null;\n realized_pnl: { toString(): string } | null;\n funding_value: { toString(): string } | null;\n base_multiplier: { toString(): string } | null;\n adl_unwind_price: { toString(): string } | null;\n last_price: { toString(): string } | null;\n /** Block the stored trackers were written at; lets stale market trackers be ignored. */\n block_number?: { toString(): string } | null;\n};\n\nexport type RealizedBalanceTrackers = {\n longTrackersFundingValue: string;\n shortTrackersFundingValue: string;\n longTrackersBaseMultiplier: string;\n shortTrackersBaseMultiplier: string;\n longTrackersAdlUnwindPrice: string;\n shortTrackersAdlUnwindPrice: string;\n /** Block the market trackers were observed at (optional; enables the staleness guard). */\n blockNumber?: string | null;\n};\n\n/** Structured cause for service metrics; calculation still fails closed. */\nexport class SettlementTrackerError extends Error {\n constructor(\n public readonly marketId: string,\n public readonly reason: 'missing' | 'inconsistent',\n ) {\n super(\n reason === 'missing'\n ? `Missing market trackers for ${marketId}`\n : `Inconsistent ADL trackers for ${marketId}`,\n );\n // common targets ES5; restore Error subclass identity after downleveling.\n Object.setPrototypeOf(this, new.target.prototype);\n this.name = 'SettlementTrackerError';\n }\n}\n\nconst WAD = new BigNumber('1000000000000000000');\nconst integer = (value: { toString(): string } | null, field: string) => {\n const result = new BigNumber(value?.toString() ?? NaN);\n if (!result.isInteger()) throw new Error(`Missing or invalid ${field}`);\n return result;\n};\nconst optionalBlock = (value: { toString(): string } | null | undefined) => {\n if (value === null || value === undefined) return undefined;\n const result = new BigNumber(value.toString());\n return result.isInteger() ? result : undefined;\n};\n/**\n * Market trackers older than the position's own snapshot carry nothing the\n * stored position does not already reflect. Off-chain tracker feeds can lag\n * the position stream.\n */\nexport function trackersBehindPosition(\n position: Pick<RealizedBalancePosition, 'block_number'>,\n trackers: Pick<RealizedBalanceTrackers, 'blockNumber'>,\n): boolean {\n const positionBlock = optionalBlock(position.block_number);\n const trackerBlock = optionalBlock(trackers.blockNumber);\n return !!positionBlock && !!trackerBlock && positionBlock.gt(trackerBlock);\n}\n\n/**\n * The trackers to ADL-adjust a position's quantity with, guarded the way its\n * settlement is: behind the position, its own multiplier and unwind price stand in.\n */\nexport function positionAdjustmentTrackers<\n T extends Pick<\n RealizedBalanceTrackers,\n | 'longTrackersBaseMultiplier'\n | 'shortTrackersBaseMultiplier'\n | 'longTrackersAdlUnwindPrice'\n | 'shortTrackersAdlUnwindPrice'\n | 'blockNumber'\n >,\n>(\n position: Pick<\n RealizedBalancePosition,\n 'block_number' | 'base_multiplier' | 'adl_unwind_price'\n >,\n trackers: T,\n): T {\n if (\n !trackersBehindPosition(position, trackers) ||\n position.base_multiplier === null ||\n position.adl_unwind_price === null\n )\n return trackers;\n const multiplier = position.base_multiplier.toString();\n const unwind = position.adl_unwind_price.toString();\n return {\n ...trackers,\n longTrackersBaseMultiplier: multiplier,\n shortTrackersBaseMultiplier: multiplier,\n longTrackersAdlUnwindPrice: unwind,\n shortTrackersAdlUnwindPrice: unwind,\n };\n}\n\nconst mulWad = (a: BigNumber, b: BigNumber) =>\n a.times(b).dividedToIntegerBy(WAD);\nconst divWad = (a: BigNumber, b: BigNumber) =>\n a.times(WAD).dividedToIntegerBy(b);\n\n/** Mirrors perpOB updatePerpPosition, including PRBMath truncation at each step. */\nexport function calculateSettledPositionPnl(\n position: RealizedBalancePosition,\n trackers: RealizedBalanceTrackers | undefined,\n onGuarded?: () => void,\n): BigNumber {\n const base = integer(position.base, 'position base');\n const realized = integer(position.realized_pnl, 'realized PnL');\n if (base.isZero()) return realized;\n if (!trackers)\n throw new SettlementTrackerError(position.market_id.toString(), 'missing');\n\n const long = base.isPositive();\n const funding = integer(\n long\n ? trackers.longTrackersFundingValue\n : trackers.shortTrackersFundingValue,\n 'market funding',\n );\n const multiplier = integer(\n long\n ? trackers.longTrackersBaseMultiplier\n : trackers.shortTrackersBaseMultiplier,\n 'market multiplier',\n );\n const unwind = integer(\n long\n ? trackers.longTrackersAdlUnwindPrice\n : trackers.shortTrackersAdlUnwindPrice,\n 'market unwind price',\n );\n const oldMultiplier = integer(\n position.base_multiplier,\n 'position multiplier',\n );\n const oldUnwind = integer(position.adl_unwind_price, 'position unwind price');\n const oldFunding = integer(position.funding_value, 'position funding');\n if (\n funding.eq(oldFunding) &&\n multiplier.eq(oldMultiplier) &&\n unwind.eq(oldUnwind)\n )\n return realized;\n\n // Market trackers older than the position's own snapshot carry no new\n // cashflow: the stored realized PnL already settled everything up to the\n // position's block. Treat that window as \"nothing accrued\" instead of\n // projecting a delta backwards (wrong-sign funding, or an ADL guard failure\n // below).\n if (trackersBehindPosition(position, trackers)) {\n onGuarded?.();\n return realized;\n }\n\n if (\n oldMultiplier.lte(0) ||\n multiplier.lt(0) ||\n multiplier.gt(oldMultiplier) ||\n unwind.lt(oldUnwind)\n ) {\n throw new SettlementTrackerError(\n position.market_id.toString(),\n 'inconsistent',\n );\n }\n const fundingCashflow = mulWad(\n divWad(funding.minus(oldFunding), oldMultiplier),\n base.negated(),\n );\n const unwindDelta = divWad(unwind.minus(oldUnwind), oldMultiplier);\n const initialPrice = mulWad(\n WAD.minus(divWad(multiplier, oldMultiplier)),\n integer(position.last_price, 'position price'),\n );\n const adlCashflow = mulWad(base, unwindDelta.minus(initialPrice));\n return realized.plus(fundingCashflow).plus(adlCashflow);\n}\n\n/**\n * Raw E18 funding on an open position since entry, as `averageEntryFundingValue`\n * tracks it in perpOB `propagateOrderToPerpPosition`: averaged in when the\n * position grows, unchanged on a reduce, reset on a reopen or flip. Funding has\n * already settled into the balance as it accrued; this attributes it to the\n * open position. Positive means the position earned funding.\n *\n * The stored base over the multiplier at the position's last update is the\n * same ratio as the ADL-adjusted base over the current multiplier, so no ADL\n * adjustment is needed. Market trackers behind the position's own snapshot\n * stand in with the position's funding value, as settlement does.\n */\nexport function calculatePositionFundingPnl(\n position: RealizedBalancePosition & {\n average_entry_funding_value: { toString(): string } | null;\n },\n trackers: RealizedBalanceTrackers | undefined,\n): BigNumber {\n const base = integer(position.base, 'position base');\n if (base.isZero()) return new BigNumber(0);\n if (!trackers)\n throw new SettlementTrackerError(position.market_id.toString(), 'missing');\n const funding = trackersBehindPosition(position, trackers)\n ? integer(position.funding_value, 'position funding')\n : integer(\n base.isPositive()\n ? trackers.longTrackersFundingValue\n : trackers.shortTrackersFundingValue,\n 'market funding',\n );\n const entry = integer(\n position.average_entry_funding_value,\n 'average entry funding value',\n );\n const multiplier = integer(position.base_multiplier, 'position multiplier');\n if (multiplier.lte(0)) {\n throw new SettlementTrackerError(\n position.market_id.toString(),\n 'inconsistent',\n );\n }\n return mulWad(divWad(funding.minus(entry), multiplier), base.negated());\n}\n\n/**\n * Returns raw E18 PnL aligned to collateral units. The instrument floors EACH\n * market's PnL to quote-token precision before Core aggregates collateral info.\n * Funding is the stored market tracker delta; do not extrapolate it with time.\n */\nexport function calculateSettledAccountPnl(\n positions: RealizedBalancePosition[],\n trackers: Partial<Record<string, RealizedBalanceTrackers>>,\n collateralDecimals: number,\n onGuarded?: () => void,\n): BigNumber {\n return positions.reduce((sum, position) => {\n const pnl = calculateSettledPositionPnl(\n position,\n trackers[position.market_id.toString()],\n onGuarded,\n );\n const rounded = pnl\n .shiftedBy(collateralDecimals - 18)\n .integerValue(BigNumber.ROUND_FLOOR)\n .shiftedBy(18 - collateralDecimals);\n return sum.plus(rounded);\n }, new BigNumber(0));\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reyaxyz/common",
3
- "version": "0.373.1",
3
+ "version": "0.375.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -41,5 +41,5 @@
41
41
  "test:coverage": "npx jest test --coverage",
42
42
  "generate:coverage-badges": "npx istanbul-badges-readme --silent"
43
43
  },
44
- "gitHead": "c4733b7a18ca9e87db1d10e750da92340d59a384"
44
+ "gitHead": "a8533fadd939f92e45947d80028bdbc3d20bd8cb"
45
45
  }
package/src/types.ts CHANGED
@@ -1197,13 +1197,25 @@ export type MarketPrice = {
1197
1197
  * than substituting a stale value.
1198
1198
  */
1199
1199
  indexPrice?: string;
1200
+ /** When this row was written (Unix ms); rewritten on every flush. */
1200
1201
  updatedAt: number;
1202
+ /**
1203
+ * Source time of `oraclePrice` (Unix ms): the matching engine's own mark
1204
+ * timestamp. Absent on rows written before it was recorded.
1205
+ */
1206
+ oraclePriceUpdatedAt?: number;
1201
1207
  };
1202
1208
 
1203
1209
  export type CollateralPrice = {
1204
1210
  address: string;
1205
1211
  oraclePrice: string;
1212
+ /** When this row was written (Unix ms); rewritten on every flush. */
1206
1213
  updatedAt: number;
1214
+ /**
1215
+ * Source time of `oraclePrice` (Unix ms): the oldest oracle tick it was
1216
+ * derived from. Absent on rows written before it was recorded.
1217
+ */
1218
+ oraclePriceUpdatedAt?: number;
1207
1219
  };
1208
1220
 
1209
1221
  export const isMarketPrice = (
@@ -52,6 +52,57 @@ const optionalBlock = (value: { toString(): string } | null | undefined) => {
52
52
  const result = new BigNumber(value.toString());
53
53
  return result.isInteger() ? result : undefined;
54
54
  };
55
+ /**
56
+ * Market trackers older than the position's own snapshot carry nothing the
57
+ * stored position does not already reflect. Off-chain tracker feeds can lag
58
+ * the position stream.
59
+ */
60
+ export function trackersBehindPosition(
61
+ position: Pick<RealizedBalancePosition, 'block_number'>,
62
+ trackers: Pick<RealizedBalanceTrackers, 'blockNumber'>,
63
+ ): boolean {
64
+ const positionBlock = optionalBlock(position.block_number);
65
+ const trackerBlock = optionalBlock(trackers.blockNumber);
66
+ return !!positionBlock && !!trackerBlock && positionBlock.gt(trackerBlock);
67
+ }
68
+
69
+ /**
70
+ * The trackers to ADL-adjust a position's quantity with, guarded the way its
71
+ * settlement is: behind the position, its own multiplier and unwind price stand in.
72
+ */
73
+ export function positionAdjustmentTrackers<
74
+ T extends Pick<
75
+ RealizedBalanceTrackers,
76
+ | 'longTrackersBaseMultiplier'
77
+ | 'shortTrackersBaseMultiplier'
78
+ | 'longTrackersAdlUnwindPrice'
79
+ | 'shortTrackersAdlUnwindPrice'
80
+ | 'blockNumber'
81
+ >,
82
+ >(
83
+ position: Pick<
84
+ RealizedBalancePosition,
85
+ 'block_number' | 'base_multiplier' | 'adl_unwind_price'
86
+ >,
87
+ trackers: T,
88
+ ): T {
89
+ if (
90
+ !trackersBehindPosition(position, trackers) ||
91
+ position.base_multiplier === null ||
92
+ position.adl_unwind_price === null
93
+ )
94
+ return trackers;
95
+ const multiplier = position.base_multiplier.toString();
96
+ const unwind = position.adl_unwind_price.toString();
97
+ return {
98
+ ...trackers,
99
+ longTrackersBaseMultiplier: multiplier,
100
+ shortTrackersBaseMultiplier: multiplier,
101
+ longTrackersAdlUnwindPrice: unwind,
102
+ shortTrackersAdlUnwindPrice: unwind,
103
+ };
104
+ }
105
+
55
106
  const mulWad = (a: BigNumber, b: BigNumber) =>
56
107
  a.times(b).dividedToIntegerBy(WAD);
57
108
  const divWad = (a: BigNumber, b: BigNumber) =>
@@ -103,12 +154,10 @@ export function calculateSettledPositionPnl(
103
154
 
104
155
  // Market trackers older than the position's own snapshot carry no new
105
156
  // cashflow: the stored realized PnL already settled everything up to the
106
- // position's block. Off-chain tracker feeds can lag the position stream, so
107
- // treat that window as "nothing accrued" instead of projecting a delta
108
- // backwards (wrong-sign funding, or an ADL guard failure below).
109
- const positionBlock = optionalBlock(position.block_number);
110
- const trackerBlock = optionalBlock(trackers.blockNumber);
111
- if (positionBlock && trackerBlock && positionBlock.gt(trackerBlock)) {
157
+ // position's block. Treat that window as "nothing accrued" instead of
158
+ // projecting a delta backwards (wrong-sign funding, or an ADL guard failure
159
+ // below).
160
+ if (trackersBehindPosition(position, trackers)) {
112
161
  onGuarded?.();
113
162
  return realized;
114
163
  }
@@ -137,6 +186,50 @@ export function calculateSettledPositionPnl(
137
186
  return realized.plus(fundingCashflow).plus(adlCashflow);
138
187
  }
139
188
 
189
+ /**
190
+ * Raw E18 funding on an open position since entry, as `averageEntryFundingValue`
191
+ * tracks it in perpOB `propagateOrderToPerpPosition`: averaged in when the
192
+ * position grows, unchanged on a reduce, reset on a reopen or flip. Funding has
193
+ * already settled into the balance as it accrued; this attributes it to the
194
+ * open position. Positive means the position earned funding.
195
+ *
196
+ * The stored base over the multiplier at the position's last update is the
197
+ * same ratio as the ADL-adjusted base over the current multiplier, so no ADL
198
+ * adjustment is needed. Market trackers behind the position's own snapshot
199
+ * stand in with the position's funding value, as settlement does.
200
+ */
201
+ export function calculatePositionFundingPnl(
202
+ position: RealizedBalancePosition & {
203
+ average_entry_funding_value: { toString(): string } | null;
204
+ },
205
+ trackers: RealizedBalanceTrackers | undefined,
206
+ ): BigNumber {
207
+ const base = integer(position.base, 'position base');
208
+ if (base.isZero()) return new BigNumber(0);
209
+ if (!trackers)
210
+ throw new SettlementTrackerError(position.market_id.toString(), 'missing');
211
+ const funding = trackersBehindPosition(position, trackers)
212
+ ? integer(position.funding_value, 'position funding')
213
+ : integer(
214
+ base.isPositive()
215
+ ? trackers.longTrackersFundingValue
216
+ : trackers.shortTrackersFundingValue,
217
+ 'market funding',
218
+ );
219
+ const entry = integer(
220
+ position.average_entry_funding_value,
221
+ 'average entry funding value',
222
+ );
223
+ const multiplier = integer(position.base_multiplier, 'position multiplier');
224
+ if (multiplier.lte(0)) {
225
+ throw new SettlementTrackerError(
226
+ position.market_id.toString(),
227
+ 'inconsistent',
228
+ );
229
+ }
230
+ return mulWad(divWad(funding.minus(entry), multiplier), base.negated());
231
+ }
232
+
140
233
  /**
141
234
  * Returns raw E18 PnL aligned to collateral units. The instrument floors EACH
142
235
  * market's PnL to quote-token precision before Core aggregates collateral info.