import { ActionResponseData, FeatureResponseData, RoutePlannerResultResponseDataExtended, RoutingOptions, WaypointData, RoutePlannerInputData } from "../../models";
import { RoutePlannerCallOptions } from "../../models/interfaces/route-planner-call-options";
import { RouteMatrixHelper } from "./strategies/preserve-order/utils/route-matrix-helper";
import { RoutingHelper } from "./strategies/preserve-order/utils/routing-helper";
/**
 * Base class for route result editors with shared functionality
 */
export declare abstract class RouteResultEditorBase {
    protected readonly rawData: RoutePlannerResultResponseDataExtended;
    protected readonly callOptions: RoutePlannerCallOptions;
    protected readonly routingOptions: RoutingOptions;
    constructor(rawData: RoutePlannerResultResponseDataExtended, callOptions: RoutePlannerCallOptions, routingOptions: RoutingOptions);
    validateAgent(agentIndex: number): void;
    protected ensureItemsProvided(indexes: number[], itemType: string): void;
    protected ensureItemsUnique(indexes: number[], itemType: string): void;
    protected ensureNewItemsValid<T>(items: T[], itemType: string): void;
    getRawData(): RoutePlannerResultResponseDataExtended;
    cloneInputData(): any;
    executePlan(inputData: any): Promise<boolean>;
    executeAgentPlan(agentIndex: number, inputData: RoutePlannerInputData): Promise<boolean>;
    updateIssues(): void;
    private updateAgentAsUnassigned;
    private getUnassignedIndexes;
    private updateResult;
    getMatrixHelper(): RouteMatrixHelper;
    getRoutingHelper(): RoutingHelper;
    getAgentFeature(agentIndex: number): FeatureResponseData;
    getOrCreateAgentFeature(agentIndex: number): Promise<FeatureResponseData>;
    private createEmptyAgentFeature;
    private resolveAgentLocation;
    findEndActionIndex(actions: ActionResponseData[]): number;
    reindexActions(actions: ActionResponseData[]): void;
    addAgentCapabilities(agents: any[]): void;
    getAgentIndexForShipment(shipmentIndex: number): number | undefined;
    getAgentShipments(agentIndex: number): number[];
    getAgentIndexForJob(jobIndex: number): number | undefined;
    getAgentJobs(agentIndex: number): number[];
    getAgentActions(agentIndex: number): ActionResponseData[];
    getAgentWaypoints(agentIndex: number): WaypointData[];
    getExistingConsecutiveTravelTimes(agentIndex: number): number[];
}
