import { FDSNCommon, LatLonRegion } from "./common";
import { DateTime, Interval } from "luxon";
import { EventParameters, Quake, USGS_HOST } from "../events/quakeml";
/**
 * Major version of the FDSN spec supported here.
 * Currently is 1.
 */
export declare const SERVICE_VERSION = 1;
/**
 * Service name as used in the FDSN DataCenters registry,
 * https://www.fdsn.org/datacenters
 */
export declare const SERVICE_NAME = "fdsnws-event-1";
export { USGS_HOST };
/**
 * Query to a FDSN Event web service.
 *
 * @see https://www.fdsn.org/webservices/
 * @param host optional host to connect to, defaults to USGS
 */
export declare class EventQuery extends FDSNCommon {
    /** @private */
    _eventId: string | undefined;
    /** @private */
    _startTime: DateTime | undefined;
    /** @private */
    _endTime: DateTime | undefined;
    /** @private */
    _updatedAfter: DateTime | undefined;
    /** @private */
    _minMag: number | undefined;
    /** @private */
    _maxMag: number | undefined;
    /** @private */
    _magnitudeType: string | undefined;
    /** @private */
    _minDepth: number | undefined;
    /** @private */
    _maxDepth: number | undefined;
    /** @private */
    _minLat: number | undefined;
    /** @private */
    _maxLat: number | undefined;
    /** @private */
    _minLon: number | undefined;
    /** @private */
    _maxLon: number | undefined;
    /** @private */
    _latitude: number | undefined;
    /** @private */
    _longitude: number | undefined;
    /** @private */
    _minRadius: number | undefined;
    /** @private */
    _maxRadius: number | undefined;
    /** @private */
    _includeArrivals: boolean | undefined;
    /** @private */
    _includeAllOrigins: boolean | undefined;
    /** @private */
    _includeAllMagnitudes: boolean | undefined;
    /** @private */
    _limit: number | undefined;
    /** @private */
    _offset: number | undefined;
    /** @private */
    _orderBy: string | undefined;
    /** @private */
    _contributor: string | undefined;
    /** @private */
    _catalog: string | undefined;
    /** @private */
    _format: string | undefined;
    constructor(host?: string);
    /**
     * Gets/Sets the version of the fdsnws spec, 1 is currently the only value.
     *  Setting this is probably a bad idea as the code may not be compatible with
     *  the web service.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    specVersion(value?: string): EventQuery;
    getSpecVersion(): string;
    /**
     * Gets/Sets the protocol, http or https. This should match the protocol
     *  of the page loaded, but is autocalculated and generally need not be set.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    protocol(value?: string): EventQuery;
    getProtocol(): string | undefined;
    /**
     * Gets/Sets the remote host to connect to.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    host(value?: string): EventQuery;
    getHost(): string | undefined;
    /**
     * Gets/Sets the remote port to connect to.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    port(value?: number): EventQuery;
    getPort(): number | undefined;
    /**
     * Gets/Sets the nodata parameter, usually 404 or 204 (default), controlling
     * the status code when no matching data is found by the service.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    nodata(value?: number): EventQuery;
    getNodata(): number | undefined;
    /**
     * Get/Set the timeout in seconds for the request. Default is 30.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    timeout(value?: number): EventQuery;
    getTimeout(): number | undefined;
    /**
     * Get/Set the eventid query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    eventId(value?: string): EventQuery;
    getEventId(): string | undefined;
    /**
     * Get/Set the starttime query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    startTime(value?: DateTime): EventQuery;
    getStartTime(): DateTime | undefined;
    /**
     * Get/Set the endtime query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    endTime(value?: DateTime): EventQuery;
    getEndTime(): DateTime | undefined;
    /**
     * Sets startTime and endTime using the given time window
     *
     * @param   se time window
     * @returns     this
     */
    timeRange(se: Interval): EventQuery;
    /**
     * Get/Set the updatedafter query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    updatedAfter(value?: DateTime): EventQuery;
    getUpdatedAfter(): DateTime | undefined;
    /**
     * Get/Set the minmag query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    minMag(value?: number): EventQuery;
    getMinMag(): number | undefined;
    /**
     * Get/Set the maxmag query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    maxMag(value?: number): EventQuery;
    getMaxMag(): number | undefined;
    /**
     * Get/Set the magnitudetype query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    magnitudeType(value?: string): EventQuery;
    getMagnitudeType(): string | undefined;
    /**
     * Get/Set the mindepth query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    minDepth(value?: number): EventQuery;
    getMinDepth(): number | undefined;
    /**
     * Get/Set the maxdepth query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    maxDepth(value?: number): EventQuery;
    getMaxDepth(): number | undefined;
    /**
     * Get/Set the minlat query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    minLat(value?: number): EventQuery;
    getMinLat(): number | undefined;
    /**
     * Get/Set the maxlat query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    maxLat(value?: number): EventQuery;
    getMaxLat(): number | undefined;
    /**
     * Get/Set the minlon query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    minLon(value?: number): EventQuery;
    getMinLon(): number | undefined;
    /**
     * Get/Set the maxlon query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    maxLon(value?: number): EventQuery;
    getMaxLon(): number | undefined;
    /**
     * Get/Set the latitude query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    latitude(value?: number): EventQuery;
    getLatitude(): number | undefined;
    /**
     * Get/Set the longitude query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    longitude(value?: number): EventQuery;
    getLongitude(): number | undefined;
    /**
     * Get/Set the minradius query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    minRadius(value?: number): EventQuery;
    getMinRadius(): number | undefined;
    /**
     * Get/Set the maxradius query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    maxRadius(value?: number): EventQuery;
    getMaxRadius(): number | undefined;
    /**
     * Get/Set the includearrivals query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    includeArrivals(value?: boolean): EventQuery;
    getIncludeArrivals(): boolean | undefined;
    /**
     * Get/Set the includeallorigins query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    includeAllOrigins(value?: boolean): EventQuery;
    getIncludeAllOrigins(): boolean | undefined;
    /**
     * Get/Set the includeallmagnitudes query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    includeAllMagnitudes(value?: boolean): EventQuery;
    getIncludeAllMagnitudes(): boolean | undefined;
    /**
     * Get/Set the format query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    format(value?: string): EventQuery;
    getFormat(): string | undefined;
    /**
     * Get/Set the limit query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    limit(value?: number): EventQuery;
    getLimit(): number | undefined;
    /**
     * Get/Set the offset query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    offset(value?: number): EventQuery;
    getOffset(): number | undefined;
    /**
     * Get/Set the orderby query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    orderBy(value?: string): EventQuery;
    getOrderBy(): string | undefined;
    /**
     * Get/Set the catalog query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    catalog(value?: string): EventQuery;
    getCatalog(): string | undefined;
    /**
     * Get/Set the contributor query parameter.
     *
     * @param value optional new value if setting
     * @returns new value if getting, this if setting
     */
    contributor(value?: string): EventQuery;
    getContributor(): string | undefined;
    latLonRegion(value: LatLonRegion | null): EventQuery;
    /**
     * Checks to see if any parameter that would limit the data
     * returned is set. This is a crude, coarse check to make sure
     * the client doesn't ask for EVERYTHING the server has.
     *
     * @returns true is some parameter is set
     */
    isSomeParameterSet(): boolean;
    /**
     * Queries the remote service and parses the returned xml.
     *
     *  @returns Promise to an Array of Quake objects.
     */
    query(): Promise<Array<Quake>>;
    queryEventParameters(): Promise<EventParameters>;
    /**
     * Queries the remote server, to get QuakeML xml.
     *
     * @returns xml Document
     */
    queryRawXml(): Promise<Document>;
    /**
     * Forms the basic URL to contact the web service, without any query paramters
     *
     * @returns the url
     */
    formBaseURL(): string;
    /**
     * Forms the URL to get catalogs from the web service, without any query paramters
     *
     * @returns the url
     */
    formCatalogsURL(): string;
    /**
     * Queries the remote web service to get known catalogs
     *
     * @returns Promise to Array of catalog names
     */
    queryCatalogs(): Promise<Array<string>>;
    /**
     * Forms the URL to get contributors from the web service, without any query paramters
     *
     * @returns the url
     */
    formContributorsURL(): string;
    /**
     * Queries the remote web service to get known contributors
     *
     * @returns Promise to Array of contributor names
     */
    queryContributors(): Promise<Array<string>>;
    /**
     * Forms the URL to get version from the web service, without any query paramters
     *
     * @returns the url
     */
    formVersionURL(): string;
    /**
     * Queries the remote web service to get its version
     *
     * @returns Promise to version string
     */
    queryVersion(): Promise<string>;
    /**
     * Form URL to query the remote web service, encoding the query parameters.
     *
     * @returns url
     */
    formURL(): string;
}
