UNPKG

tradingview-screener-ts

Version:

TypeScript port of TradingView Screener with 100% Python parity - Based on the original Python library by shner-elmo (https://github.com/shner-elmo/TradingView-Screener)

192 lines 6.19 kB
/** * Advanced architecture patterns and design implementations * * This module implements enterprise-grade architectural patterns including * Factory, Strategy, Observer, Decorator, and Plugin patterns for maximum * extensibility and maintainability. */ import type { FilterOperationDict, ScreenerDataResult, QueryDict } from './types/models'; /** * Abstract Factory Pattern for creating different types of queries */ export declare abstract class QueryFactory { /** * Create a query for specific market type */ static createMarketQuery(marketType: 'stock' | 'crypto' | 'forex' | 'india'): IQueryBuilder; /** * Create query from template */ static createFromTemplate(template: QueryTemplate): IQueryBuilder; } /** * Query Builder Interface */ export interface IQueryBuilder { setColumns(columns: string[]): IQueryBuilder; setFilters(filters: FilterOperationDict[]): IQueryBuilder; setLimit(limit: number): IQueryBuilder; setMarkets(...markets: string[]): IQueryBuilder; build(): QueryDict; } /** * Stock Query Builder Implementation */ export declare class StockQueryBuilder implements IQueryBuilder { private query; setColumns(columns: string[]): IQueryBuilder; setFilters(filters: FilterOperationDict[]): IQueryBuilder; setLimit(limit: number): IQueryBuilder; setMarkets(...markets: string[]): IQueryBuilder; build(): QueryDict; } /** * Crypto Query Builder Implementation */ export declare class CryptoQueryBuilder implements IQueryBuilder { private query; setColumns(columns: string[]): IQueryBuilder; setFilters(filters: FilterOperationDict[]): IQueryBuilder; setLimit(limit: number): IQueryBuilder; setMarkets(..._markets: string[]): IQueryBuilder; build(): QueryDict; } /** * Forex Query Builder Implementation */ export declare class ForexQueryBuilder implements IQueryBuilder { private query; setColumns(columns: string[]): IQueryBuilder; setFilters(filters: FilterOperationDict[]): IQueryBuilder; setLimit(limit: number): IQueryBuilder; setMarkets(..._markets: string[]): IQueryBuilder; build(): QueryDict; } /** * India Stock Query Builder Implementation */ export declare class IndiaStockQueryBuilder implements IQueryBuilder { private query; setColumns(columns: string[]): IQueryBuilder; setFilters(filters: FilterOperationDict[]): IQueryBuilder; setLimit(limit: number): IQueryBuilder; setMarkets(..._markets: string[]): IQueryBuilder; build(): QueryDict; } /** * Query Template Interface */ export interface QueryTemplate { name: string; marketType: 'stock' | 'crypto' | 'forex' | 'india'; columns: string[]; filters: FilterOperationDict[]; limit: number; description?: string; } /** * Strategy Pattern for different data processing strategies */ export interface IDataProcessor { process(data: ScreenerDataResult): ScreenerDataResult; } /** * Stock Data Processor */ export declare class StockDataProcessor implements IDataProcessor { process(data: ScreenerDataResult): ScreenerDataResult; private formatMarketCap; private categorizePE; } /** * India Stock Data Processor */ export declare class IndiaStockDataProcessor implements IDataProcessor { process(data: ScreenerDataResult): ScreenerDataResult; private formatMarketCapINR; private categorizeIndianPE; } /** * Crypto Data Processor */ export declare class CryptoDataProcessor implements IDataProcessor { process(data: ScreenerDataResult): ScreenerDataResult; private categorizeVolatility; private categorizePriceChange; } /** * Data Processing Context (Strategy Pattern) */ export declare class DataProcessingContext { private processor; constructor(processor: IDataProcessor); setProcessor(processor: IDataProcessor): void; processData(data: ScreenerDataResult): ScreenerDataResult; } /** * Observer Pattern for query events */ export interface IQueryObserver { onQueryStart(query: QueryDict): void; onQueryComplete(query: QueryDict, result: ScreenerDataResult): void; onQueryError(query: QueryDict, error: Error): void; } /** * Query Event Manager */ export declare class QueryEventManager { private observers; addObserver(observer: IQueryObserver): void; removeObserver(observer: IQueryObserver): void; notifyQueryStart(query: QueryDict): void; notifyQueryComplete(query: QueryDict, result: ScreenerDataResult): void; notifyQueryError(query: QueryDict, error: Error): void; } /** * Performance Observer Implementation */ export declare class PerformanceObserver implements IQueryObserver { private metrics; onQueryStart(query: QueryDict): void; onQueryComplete(query: QueryDict, _result: ScreenerDataResult): void; onQueryError(query: QueryDict, error: Error): void; getMetrics(): typeof this.metrics; getAverageQueryTime(): number; } /** * Plugin System for extensibility */ export interface IPlugin { name: string; version: string; initialize(): void; destroy(): void; } /** * Plugin Manager */ export declare class PluginManager { private plugins; registerPlugin(plugin: IPlugin): void; unregisterPlugin(name: string): void; getPlugin(name: string): IPlugin | undefined; getAllPlugins(): IPlugin[]; } /** * Export architecture components */ export declare const Architecture: { readonly QueryFactory: typeof QueryFactory; readonly StockQueryBuilder: typeof StockQueryBuilder; readonly CryptoQueryBuilder: typeof CryptoQueryBuilder; readonly ForexQueryBuilder: typeof ForexQueryBuilder; readonly IndiaStockQueryBuilder: typeof IndiaStockQueryBuilder; readonly StockDataProcessor: typeof StockDataProcessor; readonly IndiaStockDataProcessor: typeof IndiaStockDataProcessor; readonly CryptoDataProcessor: typeof CryptoDataProcessor; readonly DataProcessingContext: typeof DataProcessingContext; readonly QueryEventManager: typeof QueryEventManager; readonly PerformanceObserver: typeof PerformanceObserver; readonly PluginManager: typeof PluginManager; }; //# sourceMappingURL=architecture.d.ts.map