Files
maps-saas/apps/api/dist/tactical/tactical.service.d.ts
T

70 lines
2.0 KiB
TypeScript

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<TacticalSymbol[]>;
private haversineDistance;
private calculateBearing;
private estimateElevation;
}