import { IntensityService } from "./services/IntensityService";
import { IntensityRequestUnion, IntensityResponse } from "../@types/intensity";
import { StrongService } from "./services/StrongService";
import { StrongResponse } from "../@types/strong";
import { NewsService } from "./services/NewsService";
import { NewsFeedResponse } from "../@types/news";
import { QuakeService } from "./services/QuakeService";
import { QuakeHistoryResponse, QuakeResponse, QuakesResponse, QuakeStatsResponse } from "../@types/quake";
import { VolcanoService } from "./services/VolcanoService";
import { VolcanoAlertLevelResponse, VolcanoID, VolcanoQuakeResponse } from "../@types/volcano";
import { NetworkService } from "./services/NetworkService";
import { NetworkFDSNStationRequest, NetworkFDSNStationResponse, NetworkGNSStationResponse, NetworkSensorRequest, NetworkSensorResponse } from "../@types/network";
import { Geometry, MMI } from "../@types/common";
import { QuakeMapUtil } from "./utils/QuakeMapUtil";
/**
 * Main class for interacting with the GeoNet API and related utilities.
 * Provides access to all GeoNet services through a unified interface.
 *
 * @remarks
 * This class acts as a central interface for all GeoNet API services and related utilities, thus providing a simplified
 * way for accessing earthquake, volcano, network data, among others, from GeoNet.
 *
 * @example
 * ```typescript
 * import { GeoNet } from "geonet";
 * const geonet = new GeoNet();
 *
 * // Get recent earthquakes
 * const quakes = await geonet.getQuakes(...);
 * ```
 *
 * @see {@link https://api.geonet.org.nz} GeoNet API Documentation.
 * @see {@link IntensityService} For intensity-related methods.
 * @see {@link StrongService} For strong motion-related methods.
 * @see {@link NewsService} For news-related methods.
 * @see {@link QuakeService} For quake-related methods.
 * @see {@link VolcanoService} For volcano-related methods.
 * @see {@link NetworkService} For network-related methods.
 * @see {@link QuakeMapUtil} For generating GeoNet quake map URLs.
 *
 * @since 1.0.0
 */
export declare class GeoNet {
    private readonly intensityService;
    private readonly strongService;
    private readonly newsService;
    private readonly quakeService;
    private readonly volcanoService;
    private readonly networkService;
    private readonly quakeMapUtil;
    /**
     * Creates a new instance of the GeoNet client.
     *
     * @param {IntensityService} intensityService - Service for intensity data.
     * @param {StrongService} strongService - Service for strong motion data.
     * @param {NewsService} newsService - Service for news feed data.
     * @param {QuakeService} quakeService - Service for earthquake data.
     * @param {VolcanoService} volcanoService - Service for volcanic activity data.
     * @param {NetworkService} networkService - Service for network sensor data.
     */
    constructor(intensityService?: IntensityService, strongService?: StrongService, newsService?: NewsService, quakeService?: QuakeService, volcanoService?: VolcanoService, networkService?: NetworkService, quakeMapUtil?: QuakeMapUtil);
    /** @inheritdoc {@link IntensityService.getIntensity} */
    getIntensity(req: IntensityRequestUnion): Promise<IntensityResponse>;
    /** @inheritdoc {@link StrongService.getStrong} */
    getStrong(publicID: string): Promise<StrongResponse>;
    /** @inheritdoc {@link NewsService.getNews} */
    getNews(page?: number): Promise<NewsFeedResponse>;
    /** @inheritdoc {@link QuakeService.getQuake} */
    getQuake(publicID: string): Promise<QuakeResponse>;
    /** @inheritdoc {@link QuakeService.getQuakeHistory} */
    getQuakeHistory(publicID: string): Promise<QuakeHistoryResponse>;
    /** @inheritdoc {@link QuakeService.getQuakeStats} */
    getQuakeStats(): Promise<QuakeStatsResponse>;
    /** @inheritdoc {@link QuakeService.getQuakes} */
    getQuakes(mmi: MMI): Promise<QuakesResponse>;
    /** @inheritdoc {@link VolcanoService.getVolcanoAlertLevel} */
    getVolcanoAlertLevel(): Promise<VolcanoAlertLevelResponse>;
    /** @inheritdoc {@link VolcanoService.getVolcanoQuakes} */
    getVolcanoQuakes(volcanoID: VolcanoID): Promise<VolcanoQuakeResponse>;
    /** @inheritdoc {@link NetworkService.getNetworkSensor} */
    getNetworkSensor(req: NetworkSensorRequest): Promise<NetworkSensorResponse>;
    /** @inheritdoc {@link NetworkService.getNetworkGNSSDetails} */
    getNetworkGNSSDetails(code: string): Promise<NetworkGNSStationResponse>;
    /** @inheritdoc {@link NetworkService.getNetworkFDSNDetails} */
    getNetworkFDSNDetails(req: NetworkFDSNStationRequest): Promise<NetworkFDSNStationResponse>;
    /** @inheritdoc {@link QuakeMapUtil.generateMapURL} */
    generateMapURL(coordinates: Geometry["coordinates"], mmi: MMI): string;
    /** @inheritdoc {@link QuakeMapUtil.generateColourCode} */
    generateColourCode(mmi: MMI): string;
}
