@barfinex/types
Version:
Core TypeScript type definitions and shared interfaces for the Barfinex ecosystem. Provides strongly-typed contracts for modules, services, and plugins.
158 lines • 8.28 kB
TypeScript
import { AccountEvent } from './account.interface';
import { Candle } from './candle.interface';
import { Order } from './order.interface';
import { OrderBook } from './orderbook.interface';
import { AdvisorAutonomousCycleCompletedPayload, AdvisorAutonomousCycleStartedPayload, AdvisorConvictionCalibrationPayload, AdvisorConvictionPayload, AdvisorDecisionPayload, AdvisorDecisionMadePayload, ExecutionIntentPayload, AdvisorFactorExposureSnapshotPayload, AdvisorNetExposureSnapshotPayload, AdvisorOutcomeAttributionSnapshotPayload, AdvisorPerformanceFeedbackProcessedPayload, AdvisorPortfolioAllocationPayload, AdvisorPortfolioCorrelationSnapshotPayload, AdvisorPortfolioRiskModeSnapshotPayload, AdvisorRegimeCapitalRotationSnapshotPayload, AdvisorSignalPayload, BaseEvent, DetectorSignalPayload, InspectorRegimePayload, InspectorRiskPayload, InspectorTradeOutcomePayload, SubscriptionType, SubscriptionValue } from './subscription.interface';
import { Instrument, InstrumentPrice } from './instrument.interface';
import { Trade } from './trade.interface';
export interface ProviderTradeEvent {
instrument: Instrument;
price: number;
volume: number;
side: Trade['side'];
time: number;
}
export type ProviderOrderBookEvent = OrderBook;
export type ProviderCandleEvent = Candle;
export type ProviderAccountEvent = AccountEvent;
export type ProviderOrderCreateEvent = Order;
export type ProviderOrderCloseEvent = Order;
export type ProviderInstrumentsEvent = Array<Instrument>;
export type ProviderInstrumentPricesEvent = InstrumentPrice;
export interface InspectorVolatilitySpikePayload {
instrument: Instrument;
volatility: number;
threshold?: number;
reason?: string;
}
export interface InspectorLiquidityDroppedPayload {
instrument: Instrument;
liquidityScore: number;
threshold?: number;
reason?: string;
}
export interface InspectorDataGapDetectedPayload {
instrument: Instrument;
gapSizeMs: number;
expectedIntervalMs?: number;
reason?: string;
}
export interface InspectorDataOutlierDetectedPayload {
instrument: Instrument;
metric: string;
value: number;
zScore?: number;
reason?: string;
}
export interface InspectorDataMaturityUpdatePayload {
instrument: Instrument;
mature: boolean;
intentType: SubscriptionType;
}
export interface InspectorRiskMarginUpdatePayload {
instrument: Instrument;
currentMargin: number;
requiredMargin: number;
reason?: string;
}
export interface AdvisorDecisionRequestPayload {
requestId: string;
symbol: string;
timestamp: number;
[]: unknown;
}
export interface AdvisorConfidenceLowPayload {
decisionId?: string;
symbol: string;
confidence: number;
threshold?: number;
reason?: string;
}
export interface AdvisorModelSwitchedPayload {
fromModel: string;
toModel: string;
reason?: string;
switchedAt: number;
}
export interface AdvisorHallucinationDetectedPayload {
decisionId?: string;
symbol?: string;
reason: string;
confidence?: number;
detectedAt: number;
}
export interface EventPayloadMap {
[]: ProviderTradeEvent;
[]: ProviderOrderBookEvent;
[]: ProviderCandleEvent;
[]: ProviderAccountEvent;
[]: ProviderOrderCreateEvent;
[]: ProviderOrderCloseEvent;
[]: ProviderInstrumentsEvent;
[]: ProviderInstrumentPricesEvent;
[]: InspectorRegimePayload;
[]: InspectorRegimePayload;
[]: InspectorVolatilitySpikePayload;
[]: InspectorLiquidityDroppedPayload;
[]: InspectorDataGapDetectedPayload;
[]: InspectorDataOutlierDetectedPayload;
[]: InspectorDataMaturityUpdatePayload;
[]: InspectorRiskPayload;
[]: InspectorRiskMarginUpdatePayload;
[]: InspectorRiskPayload;
[]: InspectorTradeOutcomePayload;
[]: DetectorSignalPayload;
[]: DetectorSignalPayload;
[]: DetectorSignalPayload;
[]: DetectorSignalPayload;
[]: DetectorSignalPayload;
[]: DetectorSignalPayload;
[]: DetectorSignalPayload;
[]: AdvisorDecisionRequestPayload;
[]: AdvisorDecisionPayload;
[]: AdvisorDecisionMadePayload;
[]: AdvisorSignalPayload;
[]: ExecutionIntentPayload;
[]: ExecutionIntentPayload;
[]: ExecutionIntentPayload;
[]: ExecutionIntentPayload;
[]: AdvisorAutonomousCycleStartedPayload;
[]: AdvisorAutonomousCycleCompletedPayload;
[]: AdvisorDecisionPayload;
[]: AdvisorConvictionPayload;
[]: AdvisorConvictionCalibrationPayload;
[]: AdvisorPortfolioAllocationPayload;
[]: AdvisorPortfolioCorrelationSnapshotPayload;
[]: AdvisorRegimeCapitalRotationSnapshotPayload;
[]: AdvisorNetExposureSnapshotPayload;
[]: AdvisorFactorExposureSnapshotPayload;
[]: AdvisorPortfolioRiskModeSnapshotPayload;
[]: AdvisorPerformanceFeedbackProcessedPayload;
[]: AdvisorOutcomeAttributionSnapshotPayload;
[]: AdvisorConfidenceLowPayload;
[]: AdvisorModelSwitchedPayload;
[]: AdvisorHallucinationDetectedPayload;
}
export type EventPayloadByType<TType extends SubscriptionType> = EventPayloadMap[TType];
export type EventValueByType<TType extends SubscriptionType> = EventPayloadByType<TType> | BaseEvent<TType, EventPayloadByType<TType>>;
export interface EventMetadata {
eventId: string;
traceId: string;
timestamp: number;
version: number;
source: string;
}
export type EventMessageByType<TType extends SubscriptionType> = {
metadata: EventMetadata;
value: EventValueByType<TType>;
options: SubscriptionValue['options'];
};
type MissingEventPayloadTypes = Exclude<SubscriptionType, keyof EventPayloadMap>;
type ExtraEventPayloadTypes = Exclude<keyof EventPayloadMap, SubscriptionType>;
export type AssertEventPayloadMapCoverage = [
MissingEventPayloadTypes,
ExtraEventPayloadTypes
] extends [never, never] ? true : never;
export declare const ASSERT_EVENT_PAYLOAD_MAP_COVERAGE: AssertEventPayloadMapCoverage;
export {};
//# sourceMappingURL=event-payload.interface.d.ts.map