export interface NepseNodeOptions {
  python?: string;
  async?: boolean;
}

export interface CompanyBasicInfo {
  id: number;
  symbol: string;
  companyName?: string;
  sectorName?: string;
  [key: string]: any;
}

export interface SecurityInfo {
  id: number;
  symbol: string;
  [key: string]: any;
}

export interface MarketDepth {
  [key: string]: any;
}

export declare class NepseNode {
  constructor(options?: NepseNodeOptions);

  // Basic lists
  getCompanyList(): Promise<CompanyBasicInfo[]>;
  getSecurityList(): Promise<SecurityInfo[]>;
  getSectorScrips(): Promise<Record<string, string[]>>;

  // Live/summary
  getLiveMarket(): Promise<any[]>;
  getPriceVolume(): Promise<any[]>;
  getSummary(): Promise<any[]>;
  getTopTenTradeScrips(): Promise<any[]>;
  getTopTenTransactionScrips(): Promise<any[]>;
  getTopTenTurnoverScrips(): Promise<any[]>;
  getSupplyDemand(): Promise<any[]>;
  getTopGainers(): Promise<any[]>;
  getTopLosers(): Promise<any[]>;
  isNepseOpen(): Promise<any>;
  getNepseIndex(): Promise<any[]>;
  getNepseSubIndices(): Promise<any[]>;

  // Graphs
  getDailyNepseIndexGraph(): Promise<any>;
  getDailySensitiveIndexGraph(): Promise<any>;
  getDailyFloatIndexGraph(): Promise<any>;
  getDailySensitiveFloatIndexGraph(): Promise<any>;
  getDailyBankSubindexGraph(): Promise<any>;
  getDailyDevelopmentBankSubindexGraph(): Promise<any>;
  getDailyFinanceSubindexGraph(): Promise<any>;
  getDailyHotelTourismSubindexGraph(): Promise<any>;
  getDailyHydroSubindexGraph(): Promise<any>;
  getDailyInvestmentSubindexGraph(): Promise<any>;
  getDailyLifeInsuranceSubindexGraph(): Promise<any>;
  getDailyManufacturingSubindexGraph(): Promise<any>;
  getDailyMicrofinanceSubindexGraph(): Promise<any>;
  getDailyMutualfundSubindexGraph(): Promise<any>;
  getDailyNonLifeInsuranceSubindexGraph(): Promise<any>;
  getDailyOthersSubindexGraph(): Promise<any>;
  getDailyTradingSubindexGraph(): Promise<any>;

  // Floorsheet and per-symbol
  getFloorSheet(): Promise<any[]>;
  getFloorSheetOf(symbol: string, businessDate?: string | Date): Promise<any[]>;
  getCompanyDetails(symbol: string): Promise<any>;
  getDailyScripPriceGraph(symbol: string): Promise<any>;
  getCompanyPriceVolumeHistory(symbol: string, startDate?: string | Date, endDate?: string | Date): Promise<any[]>;
  getSymbolMarketDepth(symbol: string): Promise<MarketDepth | null>;
}

export {};
