UNPKG

@barfinex/types

Version:

Core TypeScript type definitions and shared interfaces for the Barfinex ecosystem. Provides strongly-typed contracts for modules, services, and plugins.

167 lines 4.31 kB
import { ConnectorType, MarketType } from './connector.interface'; import { HorizontalVolumeProfileSummary } from './horizontal-volume-profile.interface'; import { LiquidityMapSummaryByScope } from './liquidity-map.interface'; export declare enum DataMaturity { INSUFFICIENT = "INSUFFICIENT", FAST = "FAST", INTRADAY = "INTRADAY", FULL = "FULL" } export declare enum DetectorRole { CONTEXT = "CONTEXT", ZONE = "ZONE", TRIGGER = "TRIGGER" } export declare enum DetectorDecision { TRADE = "TRADE", NO_TRADE = "NO_TRADE" } export type SignalDirection = 'LONG' | 'SHORT'; export type EntryType = 'limit' | 'market'; export type StrategyKind = 'OrderFlowReversal' | 'LiquidityGrab' | 'VWAPReversion' | 'RegimeTrendContinuation' | 'HtfBiasLtfOrderFlow' | 'LiquiditySweepReversal' | 'TrendPullback'; export interface InstrumentIdentity { symbol: string; marketType: MarketType; connectorType: ConnectorType; } export interface CandlePoint { time: number; close: number; open?: number; high?: number; low?: number; volume?: number; } export interface CandlesContext { cacheKey: string; h1?: CandlePoint[]; h4?: CandlePoint[]; d1?: CandlePoint[]; } export interface OrderFlowSnapshot { snapshotKey: string; shortWindowSec: number; longWindowSec: number; deltaRatio: number; cvd: number; aggressiveBuyVolume: number; aggressiveSellVolume: number; absorptionScore?: number; tradeCount?: number; avgTradeSize?: number; maxTradeSize?: number; buyVolume?: number; sellVolume?: number; delta?: number; vwap?: number | null; horizontalVolumeProfile?: HorizontalVolumeProfileSummary; liquidityMap?: LiquidityMapSummaryByScope; } export interface OrderBookSnapshot { snapshotKey: string; depth: number; imbalance: number; bestBid: number; bestAsk: number; mid?: number; spread?: number; spreadPct?: number; bidWallUsd?: number; askWallUsd?: number; walls?: { bid: Array<{ price: number; volume: number; }>; ask: Array<{ price: number; volume: number; }>; }; } export interface DetectorInput { instrument: InstrumentIdentity; dataContext: { maturity: DataMaturity; windows: { candlesDays: number; flowMinutes: number; bookMinutes: number; }; }; candles: CandlesContext; orderFlow: OrderFlowSnapshot; orderBook: OrderBookSnapshot; } export interface SignalSchema { decision: DetectorDecision | 'TRADE' | 'NO_TRADE'; symbol: string; market: MarketType; direction?: SignalDirection; confidence: number; strategy?: StrategyKind; entry?: { price: number; type: EntryType; reason: string; }; stop?: { price: number; reason: string; }; targets: Array<{ price: number; reason: string; }>; context: { regime?: string; bias?: SignalDirection | 'NEUTRAL'; delta: string | number; orderBookImbalance: number; dataMaturity: DataMaturity; }; audit: { detectorsFired: string[]; rejectedBy: string[]; inputsRef: { candlesKey: string; flowKey: string; bookKey: string; }; }; } export interface ContextDetectorResult { fired: boolean; detector: string; regime?: string; bias?: SignalDirection | 'NEUTRAL'; levels?: number[]; zones?: string[]; levelsDetailed?: Record<string, number>; zonesDetailed?: Array<{ type: string; range: [number, number]; timeframe?: 'h1' | 'h4' | 'd1'; score?: number; }>; } export interface TriggerDetectorResult { fired: boolean; detector: string; strategy: StrategyKind; direction?: SignalDirection; confidence: number; reason?: string; entryPrice?: number; stopPrice?: number; targets?: Array<{ price: number; reason: string; }>; } export interface DetectorNode<T> { name: string; role: DetectorRole; evaluate(input: DetectorInput): T; } //# sourceMappingURL=signal.interface.d.ts.map