import { DateTime, GregorianChange, Timezone, YMDDate } from '@tubular/time';
import { ISkyObserver } from './i-sky-observer';
import { JupiterInfo } from './jupiter-info';
export declare class AstroEvent {
    private readonly _jdu;
    readonly _eventType: number;
    readonly _eventText: string;
    readonly _value: number;
    eventTime: DateTime;
    miscInfo: any;
    constructor(eventType: number, eventText: string, year: number, month: number, day: number, hourOffset: number, zone: Timezone, gregorianChange?: GregorianChange, value?: number);
    static fromJdu(eventType: number, eventText: string, jdu: number, zone: Timezone, gregorianChange?: GregorianChange, value?: number): AstroEvent;
    get eventType(): number;
    get eventText(): string;
    get value(): number;
    get ut(): number;
    get jdu(): number;
    toString(): string;
}
export interface LunarPhasesHtmlOptions {
    tableClass?: string;
    headers?: string[];
    formatYear?: (year: number) => string;
    formatDateTime?: (event: AstroEvent) => string;
}
export interface EquinoxSolsticeHtmlOptions extends LunarPhasesHtmlOptions {
    southernHemisphere?: boolean;
}
export interface RiseAndSetHtmlOptions {
    tableClass?: string;
    headers?: string[];
    unseenAllDay?: string;
    visibleAllDay?: string;
    formatDate?: (event: AstroEvent) => string;
    formatDay?: (event: AstroEvent) => string;
    formatTime?: (event: AstroEvent) => string;
}
export interface GalileanMoonsHtmlOptions {
    tableClass?: string;
    formatDateTime?: (event: AstroEvent) => string;
    formatTime?: (event: AstroEvent) => string;
}
export declare class EventFinder {
    private jupiterInfo?;
    private ss;
    private jupitersMoons;
    constructor(jupiterInfo?: JupiterInfo);
    getLunarPhaseEvent(year: number, month: number, day: number, zone?: Timezone, gregorianChange?: GregorianChange): AstroEvent;
    getLunarPhasesByYear(startYear: number, endYear: number, zone?: Timezone, gregorianChange?: GregorianChange, addPaddingMonths?: boolean): Promise<AstroEvent[]>;
    private static formatEventDate;
    private static formatEventTime;
    private static formatEventDateTime;
    private static formatEventDateTimeWithoutYear;
    getLunarPhasesByYearAsHtml(startYear: number, endYear: number, zone?: Timezone, gregorianChange?: GregorianChange, options?: LunarPhasesHtmlOptions): Promise<string>;
    getLunarPhasesForMonth(year: number, month: number, zone?: Timezone, gregorianChange?: GregorianChange): AstroEvent[];
    getEquinoxSolsticeEvent(year: number, month: number, day: number, zone?: Timezone, gregorianChange?: GregorianChange): AstroEvent;
    getEquinoxesAndSolsticesForOneYear(year: number, zone?: Timezone, gregorianChange?: GregorianChange): AstroEvent[];
    getEquinoxesAndSolsticesByYear(startYear: number, endYear: number, zone?: Timezone, gregorianChange?: GregorianChange): Promise<AstroEvent[]>;
    getEquinoxesAndSolsticesByYearAsHtml(startYear: number, endYear: number, zone?: Timezone, gregorianChange?: GregorianChange, options?: EquinoxSolsticeHtmlOptions): Promise<string>;
    getRiseAndSetTimes(body: number, year: number, month: number, day: number, observer: ISkyObserver, zone?: Timezone, gregorianChange?: GregorianChange, minutesBefore?: number, targetAltitude?: number, doTwilight?: boolean): AstroEvent[];
    getTransitTimes(body: number, year: number, month: number, day: number, observer: ISkyObserver, zone?: Timezone, gregorianChange?: GregorianChange): AstroEvent[];
    getMinutesOfDaylight(year: number, month: number, day: number, observer: ISkyObserver, zone?: Timezone, gregorianChange?: GregorianChange): number;
    getMonthOfEvents(body: number, year: number, month: number, observer: ISkyObserver, zone?: Timezone, gregorianChange?: GregorianChange, targetAltitude?: number): AstroEvent[];
    getRiseAndSetEvents(body: number, year: number, month: number, day: number, dayCount: number, observer: ISkyObserver, zone?: Timezone, gregorianChange?: GregorianChange, twilightAltitude?: number): Promise<AstroEvent[][]>;
    getRiseAndSetEventsAsHtml(body: number, year: number, month: number, day: number, dayCount: number, observer: ISkyObserver, zone?: Timezone, gregorianChange?: GregorianChange, twilightAltitude?: number, options?: RiseAndSetHtmlOptions): Promise<string>;
    getGalileanMoonEvents(startJdu: number, endJdu: number, includeGrsTransits: boolean, zone?: Timezone, gregorianChange?: GregorianChange): Promise<AstroEvent[]>;
    getGalileanMoonEventsAsHtml(startJdu: number, endJdu: number, includeGrsTransits: boolean, zone?: Timezone, gregorianChange?: GregorianChange, options?: GalileanMoonsHtmlOptions): Promise<string>;
    private resolveLocalCircumstances;
    findEventAsync(planet: number, eventType: number, originalTime: number, observer: ISkyObserver, zone?: Timezone, gregorianChange?: GregorianChange, doPrevious?: boolean, argument?: any, maxTries?: number): Promise<AstroEvent>;
    findEventAsyncImpl(planet: number, eventType: number, originalTime: number, observer: ISkyObserver, zone?: Timezone, gregorianChange?: GregorianChange, doPrevious?: boolean, argument?: any, maxTries?: number): Promise<AstroEvent>;
    findEvent(planet: number, eventType: number, originalTime: number, observer: ISkyObserver, zone?: Timezone, gregorianChange?: GregorianChange, doPrevious?: boolean, argument?: any, maxTries?: number): AstroEvent;
    protected eventSearch(planet: number, eventType: number, originalTime: number, testTime: number[], observer: ISkyObserver, zone: Timezone, gregorianChange: GregorianChange, doPrevious: any, argument: any, tries: number, dateTime: DateTime, ymd: YMDDate): AstroEvent;
    protected getEventSearchValue(planet: number, eventType: number, time_JDU: number): number;
    protected isInferior(planet: number, time_JDU: number): boolean;
}
//# sourceMappingURL=event-finder.d.ts.map