import { DateTime, Duration, Interval, Zone } from "luxon"; import { SeismogramDisplayData } from "./seismogram.mjs"; import { SeismogramSegment } from "./seismogramsegment.mjs"; import { SeismographConfig } from "./seismographconfig.mjs"; import { SeisPlotElement } from "./spelement.mjs"; import { Channel } from "./stationxml.mjs"; export declare const HELI_CLICK_EVENT = "heliclick"; export declare const HELI_MOUSE_MOVE_EVENT = "helimousemove"; export declare const HELICORDER_ELEMENT = "sp-helicorder"; /** * Calculates the end time for a helicorder with now being on the last line * @return end time */ export declare function getNowLineEndTime(hoursPerLine?: number): DateTime; export declare function createNowHelicorderInterval(hours?: number, hoursPerLine?: number): Interval; export interface HeliEventMap extends HTMLElementEventMap { "heliclick": CustomEvent; "helimousemove": CustomEvent; } export interface Helicorder extends SeisPlotElement { addEventListener(type: E, listener: (ev: HeliEventMap[E]) => any): void; } /** * A helicorder-like multi-line seismogram display usually covering 24 hours * * @param inSvgParent the parent element, usually a div tag * @param heliConfig configuration object * @param seisData the data to display */ export declare class Helicorder extends SeisPlotElement { constructor(seisData?: Array, seisConfig?: SeismographConfig); get heliConfig(): HelicorderConfig; set heliConfig(config: HelicorderConfig); get width(): number; get height(): number; appendSegment(segment: SeismogramSegment): void; /** * draws the helicorder. */ draw(): void; /** * draws or redraws the seismograms in the helicorder * * @private */ drawSeismograms(): void; configureAmplitudeFromData(singleSeisData?: SeismogramDisplayData): void; cutForLine(singleSeisData: SeismogramDisplayData, lineInterval: Interval): SeismogramDisplayData; /** * Calculates the time range covered by each line of the display * * @param startTime start of display * @param secondsPerLine seconds covered by each line * @param numberOfLines number of lines * @returns Array of HeliTimeRange, one per line */ calcTimesForLines(startTime: DateTime, secondsPerLine: number, numberOfLines: number): Array; calcDetailForEvent(evt: Event): HeliMouseEventType; } export declare const DEFAULT_MAX_HEIGHT = 600; /** * Configuration of the helicorder * * Note that setting maxVariation=0 and fixedAmplitudeScale=[0,0] will scale the * data to max * * @param timeRange the time range covered by the helicorder, required * @param lineSeisConfig seismograph config for the individual seismograph lines */ export declare class HelicorderConfig extends SeismographConfig { lineSeisConfig: SeismographConfig; overlap: number; numLines: number; maxVariation: number; detrendLines: boolean; yLabelTimeZone: string | Zone; yLabelRightTimeZone: string | Zone; timeLabelSpacing: string | number; constructor(timeRange: Interval, lineSeisConfig?: SeismographConfig); static fromSeismographConfig(seisConfig: SeismographConfig): HelicorderConfig; } /** * Time range for a single line of the helicorder, extends Interval * to add the line number */ export declare class HeliTimeRange { lineNumber: number; interval: Interval; constructor(startTime: DateTime, duration: Duration, lineNumber: number); } /** default styling for helicorder plots. */ export declare const helicorder_css = "\n:host {\n display: block;\n min-height: 200px;\n height: 100%;\n cursor: crosshair;\n}\n"; export declare const HELICORDER_SELECTOR = "helicorder"; export declare const HELI_COLOR_CSS_ID = "helicordercolors"; export type HeliMouseEventType = { mouseevent: MouseEvent; time: DateTime; lineNum: number; channel?: Channel | null; }; //# sourceMappingURL=helicorder.d.mts.map