import { RedisService } from '../common/redis.service'; export interface ArtilleryMissionRequest { gunLat: number; gunLng: number; targetLat: number; targetLng: number; gunElevationOffset?: number; targetElevationOffset?: number; chargeType?: string; muzzleVelocity?: number; caliber?: string; } export interface TacticalSymbol { id: string; type: 'friendly' | 'hostile' | 'neutral' | 'unknown' | 'radar' | 'artillery' | 'minefield' | 'checkpoint' | 'hlz' | 'op'; name: string; name_ar: string; lat: number; lng: number; elevation?: number; notes?: string; timeAdded: string; } export declare class TacticalService { private readonly redisService; private readonly logger; constructor(redisService: RedisService); calculateArtilleryFireMission(dto: ArtilleryMissionRequest): Promise<{ fireMissionId: string; caliber: string; muzzleVelocityMs: number; distanceMeters: number; distanceKm: number; azimuthDegrees: number; azimuthMils: number; gunElevationMeters: number; targetElevationMeters: number; apexAltitudeMeters: number; timeOfFlightSeconds: number; lowAngle: { degrees: number; mils: number; }; highAngle: { degrees: number; mils: number; }; hasCrestClearance: boolean; criticalObstacle: any; trajectoryPoints: any[]; }>; assessHelicopterLandingZones(lat: number, lng: number, radiusMeters?: number): Promise<{ centerLat: number; centerLng: number; searchRadiusMeters: number; totalAssessed: number; suitableCount: number; zones: any[]; }>; saveScenario(name: string, symbols: TacticalSymbol[]): Promise<{ success: boolean; count: number; name: string; }>; getScenario(name: string): Promise; private haversineDistance; private calculateBearing; private estimateElevation; }