import { EventEmitter } from '@angular/core';
import { TransactionConnectorService } from '../../../service/transaction-connector.service';
import { DeliveryPlanningCalendarModes } from '../../../enum/delivery-planning-calendar-modes.enum';
import { CalendarView } from '@colijnit/sharedcomponents';
import { DeliveryPlanningViewModes } from '../../../enum/delivery-planning-view-modes.enum';
import { Planning } from '@colijnit/transactionapi/build/model/planning.bo';
import { PlanningTransportWeekDay } from '@colijnit/transactionapi/build/model/planning-transport-week-day.bo';
import { PlanningTransportWeek } from '@colijnit/transactionapi/build/model/planning-transport-week.bo';
import { DeliveryPlanningModes } from '../../../enum/delivery-planning-modes.enum';
import { PlanOrder } from '@colijnit/transactionapi/build/model/plan-order.bo';
import { DeliveryMethod } from '@colijnit/transactionapi/build/model/delivery-method.bo';
import { District } from '@colijnit/transactionapi/build/model/district.bo';
import { Skill } from '@colijnit/transactionapi/build/model/skill.bo';
import { RelationListObject } from '@colijnit/transactionapi/build/model/relation-list-object.bo';
import { UserGroup } from '@colijnit/transactionapi/build/model/user-group.bo';
import { DeliveryPlanningTileModes } from '../../../enum/delivery-planning-tile-modes.enum';
import { Subject } from 'rxjs';
import { TransactionSearchView } from '@colijnit/transactionapi/build/model/transaction-search-view.bo';
export declare class DeliveryPlanningService {
    private _transaction;
    private _dragging;
    private _planTransportWeek;
    private _planTransportWeekArr;
    private _deliveryMethods;
    private _districts;
    private _skills;
    private _employees;
    private _userGroups;
    currentCalendarMode: DeliveryPlanningCalendarModes;
    currentTileMode: DeliveryPlanningTileModes;
    datePlanningMode: CalendarView;
    viewMode: DeliveryPlanningViewModes;
    currentPlanningMode: DeliveryPlanningModes;
    currentPlanning: Planning;
    currentStartDate: Date;
    planOrderDate: Date;
    currentTransId: number;
    deletingOrder: PlanOrder;
    linesPlanOrder: PlanOrder;
    availabilityCheckEvent: EventEmitter<PlanOrder>;
    availabilityResetEvent: EventEmitter<void>;
    reRenderHourScheduling: Subject<void>;
    movingTransId: number;
    relationId: number;
    employeeView: boolean;
    triptychMode: boolean;
    planRayon: boolean;
    lspMode: boolean;
    selectedPlanTransport: PlanningTransportWeekDay;
    get dragging(): boolean;
    get planTransportWeek(): PlanningTransportWeek[];
    get planTransportWeekArr(): PlanningTransportWeekDay[][];
    get deliveryMethods(): DeliveryMethod[];
    get districts(): District[];
    get employees(): RelationListObject[];
    get skills(): Skill[];
    get userGroups(): UserGroup[];
    set dragging(value: boolean);
    set deliveryMethods(methods: DeliveryMethod[]);
    set districts(districts: District[]);
    set employees(employees: RelationListObject[]);
    set skills(skills: Skill[]);
    set userGroups(groups: UserGroup[]);
    constructor(_transaction: TransactionConnectorService);
    getOrderSequenceValue(): Promise<number>;
    getTransportOrders(planningTransportWeekDay: PlanningTransportWeekDay): Promise<PlanningTransportWeekDay>;
    getOrderLinesPlanned(order: PlanOrder): Promise<void>;
    getSequenceOrderValue(order: PlanOrder): Promise<void>;
    getPlanningTransportWeek(): Promise<void>;
    updatePlanningTransportValues(): Promise<void>;
    private _updateChangedProperties;
    convertPlanningTransportWeekToArray(planningTransportWeek: PlanningTransportWeek[]): PlanningTransportWeekDay[][];
    convertToPlanTransportWeek(nestedArray: PlanningTransportWeekDay[][]): PlanningTransportWeek[];
    totalAssemblyTime(planOrder: PlanOrder): number;
    addMinutes(date: Date, minutes: number): Date;
    hasMatch(list1: number[], list2: number[]): boolean;
    reorderItem<T extends {
        startTime: Date;
        endTime: Date;
    }>(array: T[], item: T, direction: "up" | "down"): void;
    deliveryMethodAvailabilityCheck(planOrder: PlanOrder, transportDay: PlanningTransportWeekDay): Promise<boolean>;
    districtAvailabilityCheck(planOrder: PlanOrder, transportDay: PlanningTransportWeekDay): Promise<boolean>;
    filterTransactionsForDeliveryPlanning(transactions: TransactionSearchView[], transportDay: PlanningTransportWeekDay): Promise<TransactionSearchView[]>;
}
