import type { DatumParams } from '../readers/wkt';
import type { VectorPoint } from '../geometry';
import type { ProjectionParams, ProjectionTransform, Transformer } from '.';
/**
 * Modifies projection parameters to properly define a datum
 * @param params - projection specific parameters to be adjusted
 * @param transformer - the projection transformer to potentially pull data from
 */
export declare function buildDatum(params: ProjectionParams, transformer: Transformer): void;
/**
 * Compares datums to see if they have equal datums
 * @param source - source projection starting from
 * @param dest - destination projection to end at
 * @returns true if projection datums are equal
 */
export declare function compareDatums(source: ProjectionTransform, dest: ProjectionTransform): boolean;
/**
 * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates
 * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),
 * according to the current ellipsoid parameters.
 *
 * Latitude  : Geodetic latitude in radians                     (input)
 * Longitude : Geodetic longitude in radians                    (input)
 * Height    : Geodetic height, in meters                       (input)
 * X         : Calculated Geocentric X coordinate, in meters    (output)
 * Y         : Calculated Geocentric Y coordinate, in meters    (output)
 * Z         : Calculated Geocentric Z coordinate, in meters    (output)
 * @param p - lon-lat WGS84 point
 * @param es - eccentricity
 * @param a - semi-major axis
 */
export declare function geodeticToGeocentric(p: VectorPoint, es: number, a: number): void;
/**
 * converts a geocentric point to a geodetic point
 * @param p - Geocentric point
 * @param es - ellipsoid eccentricity
 * @param a - ellipsoid semimajor axis
 * @param b - ellipsoid semiminor axis
 */
export declare function geocentricToGeodetic(p: VectorPoint, es: number, a: number, b: number): void;
/**
 * pj_geocentic_to_wgs84( p )
 * p = point to transform in geocentric coordinates (x,y,z)
 * point object, nothing fancy, just allows values to be
 * passed back and forth by reference rather than by value.
 * Other point classes may be used as long as they have
 * x and y properties, which will get modified in the transform method.
 * @param p - Geocentric point
 * @param datumType - datum type
 * @param datumParams - datum parameters
 */
export declare function geocentricToWgs84(p: VectorPoint, datumType: number, datumParams: DatumParams): void;
/**
 * pj_geocentic_from_wgs84() coordinate system definition,
 * point to transform in geocentric coordinates (x,y,z)
 * @param p - lon-lat WGS84 point
 * @param datumType - datum type
 * @param datumParams - datum parameters
 */
export declare function geocentricFromWgs84(p: VectorPoint, datumType: number, datumParams: DatumParams): void;
/**
 * check if either of the projections are not WGS84
 * @param source - source projection
 * @param dest - destination projection
 * @returns - true if either of the projections are not WGS84
 */
export declare function checkNotWGS(source: ProjectionTransform, dest: ProjectionTransform): boolean;
/**
 * Transforms a point from one datum to another
 * @param point - lon-lat WGS84 point to mutate
 * @param source - source projection
 * @param dest - destination projection
 */
export declare function datumTransform(point: VectorPoint, source: ProjectionTransform, dest: ProjectionTransform): void;
/**
 * Apply a grid shift given the source projection (assums a nadgrid has been set up)
 * @param source - source projection
 * @param inverse - if true, the grid shift is applied in reverse
 * @param point - the point to apply the grid shift
 */
export declare function applyGridShift(source: ProjectionTransform, inverse: boolean, point: VectorPoint): void;
//# sourceMappingURL=datum.d.ts.map