import type { GeometryUnion } from "@arcgis/core/unionTypes.js";
import type { Feature } from "@vertigis/arcgis-extensions/data/Feature.js";
import type { CountResult } from "@vertigis/arcgis-extensions/tasks/CountResult.js";
import type { AddressLike, GeocodeOptions, Geocoder } from "@vertigis/arcgis-extensions/tasks/geocoding/Geocoder";
import type { Command } from "../Command.js";
import { CommandRegistry } from "../CommandRegistry.js";
import type { Operation } from "../Operation.js";
import { OperationRegistry } from "../OperationRegistry.js";
import type { Features } from "../common.js";
/**
 * A type that represents a geocoder or an array of configurable geocoders.
 */
export type GeocodersLike = Geocoder | Geocoder[];
/**
 * Arguments for the "geocode.geocode" and "geocode.count" operations.
 */
export interface GeocodeArgs {
    /**
     * The address to look up.
     */
    address: AddressLike;
    /**
     * Options that affect geocode results.
     */
    options: GeocodeOptions;
}
/**
 * Arguments for the "geocode.batch-geocode" operation.
 */
export interface BatchGeocodeArgs {
    /**
     * The addresses to look up.
     */
    addresses: AddressLike[];
    /**
     * Options that affect geocode results.
     */
    options: GeocodeOptions;
}
/**
 * Arguments for the "geocode.suggest" operation.
 */
export interface SuggestArgs {
    /**
     * The search text entered by the user.
     */
    searchText: string;
    /**
     * Options that affect geocode results.
     */
    options: GeocodeOptions;
}
/**
 * Arguments for the "geocode.reverse-geocode" operation.
 */
export interface ReverseGeocodeArgs {
    /**
     * The location to look up.
     */
    geometry: GeometryUnion;
    /**
     * Options that affect geocode results.
     */
    options: GeocodeOptions;
}
/**
 * Arguments for the "geocode.update-default-geocoder" operation.
 */
export interface SetActiveGeocodersArgs {
    /**
     * Geocoders to be activated.
     */
    geocoders: GeocodersLike;
}
export declare class GeocodeCommands extends CommandRegistry {
    protected readonly _prefix = "geocode";
    /**
     * Sets given geocoders as active. Web only.
     *
     * @webOnly
     */
    get setActiveGeocoders(): Command<SetActiveGeocodersArgs | GeocodersLike>;
}
export declare class GeocodeOperations extends OperationRegistry {
    protected readonly _prefix = "geocode";
    /**
     * Finds one or more locations corresponding to an address.
     */
    get geocode(): Operation<GeocodeArgs, Features>;
    /**
     * Finds locations corresponding to multiple addresses. The geocoder must
     * have the supportsBatchGeocoding capability. Web only.
     *
     * @webOnly
     */
    get batchGeocode(): Operation<BatchGeocodeArgs, Features>;
    /**
     * Counts the number of locations corresponding to an address.
     */
    get count(): Operation<GeocodeArgs, CountResult>;
    /**
     * Suggests matching addresses to search for based on some input text. The
     * geocoder must have the supportsSuggest capability.
     */
    get suggest(): Operation<SuggestArgs, string[]>;
    /**
     * Finds the address at a particular location. The geocoder must have the
     * supportsReverseGeocoding capability.
     */
    get reverseGeocode(): Operation<ReverseGeocodeArgs, Feature>;
    /**
     * Returns all configured geocoders including the active ones. Web only.
     *
     * @webOnly
     */
    get getGeocoders(): Operation<void, Geocoder[]>;
    /**
     * Returns the active configured geocoders. Web only.
     *
     * @webOnly
     */
    get activeGeocoders(): Operation<void, Geocoder[]>;
}
