/** * Tracking service for Nova Poshta API * Handles document tracking and status monitoring */ import type { ClientContext } from '../core/client'; import type { TrackDocumentsRequest, TrackingResponse, DocumentMovementRequest, DocumentMovementResponse, DocumentListRequest, DocumentListResponse, TrackingStatusData } from '../types/tracking'; import { DeliveryStatus } from '../types/enums'; export interface TrackingStatistics { readonly totalTracked: number; readonly delivered: number; readonly inTransit: number; readonly atWarehouse: number; readonly failed: number; readonly unknown: number; } export interface TrackingFilter { readonly status?: DeliveryStatus[]; readonly dateFrom?: string; readonly dateTo?: string; readonly citySender?: string; readonly cityRecipient?: string; } /** * Service for tracking documents and monitoring delivery status */ export declare class TrackingService { readonly namespace: "tracking"; private transport; private apiKey?; attach(ctx: ClientContext): void; /** * Track multiple documents */ trackDocuments(request: TrackDocumentsRequest): Promise; /** * Track a single document by number */ trackDocument(documentNumber: string, phone?: string): Promise; /** * Get document movement history */ getDocumentMovement(request: DocumentMovementRequest): Promise; /** * Get list of documents for a date range */ getDocumentList(request: DocumentListRequest): Promise; /** * Track multiple documents and return organized results */ trackMultiple(documentNumbers: string[]): Promise<{ successful: TrackingStatusData[]; failed: string[]; statistics: TrackingStatistics; }>; /** * Filter tracking results by criteria */ filterTrackingResults(results: TrackingStatusData[], filter: TrackingFilter): TrackingStatusData[]; /** * Get tracking statistics for a set of results */ calculateStatistics(results: TrackingStatusData[]): TrackingStatistics; /** * Check if document is delivered */ isDelivered(status: TrackingStatusData): boolean; /** * Check if document is in transit */ isInTransit(status: TrackingStatusData): boolean; /** * Check if document is at warehouse/postomat */ isAtWarehouse(status: TrackingStatusData): boolean; /** * Get human-readable status description */ getStatusDescription(status: DeliveryStatus, language?: 'ua' | 'ru' | 'en'): string; /** * Monitor documents with periodic updates */ monitorDocuments(documentNumbers: string[], callback: (results: TrackingStatusData[]) => void, intervalMs?: number): Promise<() => void>; /** * Track waybill (legacy method for compatibility) * @deprecated Use trackDocument() or trackDocuments() method instead */ trackWaybill(request: { documents: Array<{ documentNumber: string; phone?: string; }>; }): Promise; /** * Get status documents (legacy method for compatibility) * @deprecated Use trackDocuments() method instead */ getStatusDocuments(request: TrackDocumentsRequest): Promise; } //# sourceMappingURL=trackingService.d.ts.map