"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const validate_1 = require("../validate"); const symbol_1 = require("../helper/symbol"); const type_1 = require("../utils/type"); class Point { constructor(longitude, latitude) { validate_1.Validate.isGeopoint('longitude', longitude); validate_1.Validate.isGeopoint('latitude', latitude); this.longitude = longitude; this.latitude = latitude; } parse(key) { return { [key]: { type: 'Point', coordinates: [this.longitude, this.latitude] } }; } toJSON() { return { type: 'Point', coordinates: [ this.longitude, this.latitude, ], }; } toReadableString() { return `[${this.longitude},${this.latitude}]`; } static validate(point) { return point.type === 'Point' && type_1.isArray(point.coordinates) && validate_1.Validate.isGeopoint('longitude', point.coordinates[0]) && validate_1.Validate.isGeopoint('latitude', point.coordinates[1]); } get _internalType() { return symbol_1.SYMBOL_GEO_POINT; } } exports.Point = Point;