import { AfterViewInit, OnDestroy, OnInit, TemplateRef } from "@angular/core";
import { FormBuilder, FormGroup } from "@angular/forms";
import { ActivatedRoute, Router } from "@angular/router";
import { TranslateService } from "@ngx-translate/core";
import { FormField } from "@seniorsistemas/angular-components";
import { HotkeysService } from "angular2-hotkeys";
import { ConfirmationService } from "primeng/api";
import { MessageService } from "primeng/api";
import { Observable } from "rxjs";
import { FieldCustomizationService } from "../../../shared/services/field-customization.service";
import { FocusService } from "../../../shared/focus/focus.service";
import { CompensationType } from "../../../core/enums/compensation-type";
import { PeriodType } from "../../../core/enums/period-type";
import { AdjustmentReason } from "../../../core/entities/adjustment-reason/adjustment-reason";
import { Workschedule } from "../../../core/entities/workschedule/workschedule";
import { Employee } from "../../../core/entities/employee/employee";
import { Situation } from "../../../core/entities/situation/situation";
import { CompanyClockingEventIndicationsService } from "../../../core/entities/company-clocking-event-indications/company-clocking-event-indications.service";
import { CompensationService } from "../../../core/entities/compensation/compensation.service";
import { AdjustmentReasonSituationService } from "../../../core/entities/adjustment-reason-situation/adjustment-reason-situation.service";
import { WorkscheduleService } from "../../../core/entities/workschedule/workschedule.service";
import { EmployeeService } from "../../../core/entities/employee/employee.service";
import { SituationService } from "../../../core/entities/situation/situation.service";
import { SituationClockingEventService } from "../../../core/entities/situation-clocking-event/situation-clocking-event.service";
import { EmployeeScheduleData } from "../../../core/dtos/employee-schedule-data";
export declare class CompensationFormComponent implements OnInit, OnDestroy, AfterViewInit {
    private companyClockingEventIndicationsService;
    private compensationService;
    private router;
    private route;
    private messageService;
    private confirmationService;
    private formBuilder;
    private translate;
    private hotkeysService;
    private fieldCustomization;
    private focusService;
    private adjustmentReasonSituationService;
    private workscheduleService;
    private employeeService;
    private situationService;
    private situationClockingEventService;
    localeConfig: any;
    currencyLocaleOptions: any;
    permissions: any;
    allPermissions: any;
    formGroup: FormGroup;
    loading: boolean;
    mainPanelCollapsed: boolean;
    compensationType: {
        label: string;
        value: CompensationType;
    }[];
    adjustmentReasonLookupSuggestions: AdjustmentReason[];
    adjustmentReasonLookupDisplayFields: string[];
    adjustmentReasonAdvancedDisplayFields: string[];
    adjustmentReasonLookupSeparator: string;
    adjustmentReasonSearchFields: FormField[];
    adjustmentReasonSearchGridFields: FormField[];
    adjustmentReasonSearchGridData: AdjustmentReason[];
    adjustmentReasonSearchTotalRecords: number;
    compensation: any;
    workscheduleLookupSuggestions: Workschedule[];
    workscheduleLookupDisplayFields: string[];
    workscheduleAdvancedDisplayFields: string[];
    workscheduleLookupSeparator: string;
    workscheduleSearchFields: FormField[];
    workscheduleSearchGridFields: FormField[];
    workscheduleSearchGridData: Workschedule[];
    workscheduleSearchTotalRecords: number;
    contractTypeOptions: {
        label: string;
        value: string;
    }[];
    employeeLookupSuggestions: Employee[];
    employeeLookupDisplayFields: string[];
    employeeAdvancedDisplayFields: string[];
    employeeLookupSeparator: string;
    employeeSearchFields: FormField[];
    employeeSearchGridFields: FormField[];
    employeeSearchGridData: Employee[];
    employeeSearchTotalRecords: number;
    situationLookupSuggestions: Situation[];
    situationLookupDisplayFields: string[];
    situationAdvancedDisplayFields: string[];
    situationLookupSeparator: string;
    situationSearchFields: FormField[];
    situationSearchGridFields: FormField[];
    situationSearchGridData: Situation[];
    situationSearchTotalRecords: number;
    customTemplate: TemplateRef<any>;
    customFormFields: TemplateRef<any>;
    onSubmitObservable: Observable<any>;
    onLockedEmployeeChanges: Observable<EmployeeScheduleData>;
    lockedEmployee: EmployeeScheduleData;
    private onClose;
    private onLoadFormSubject;
    onCloseObservable: Observable<boolean>;
    onLoadForm: Observable<boolean>;
    selectedSituationId: string;
    controlAdjustmentReason: boolean;
    mandatoryAdjustmentReasonBySituation: Map<string, boolean>;
    mandatoryAdjustmentReason: boolean;
    cacheAdjustmentReasonIsEnable: Map<string, boolean>;
    cacheLimitDaysBackwardScheduling: Map<string, Date>;
    enablePeriods: {
        label: string;
        value: PeriodType;
    }[];
    enableFileds: CompensationValidationFields;
    controlOfFormFields: Map<CompensationType, CompensationValidationFields>;
    adjustmentReasonIsRequired: boolean;
    private routeParams;
    private ngUnsubscribe;
    constructor(companyClockingEventIndicationsService: CompanyClockingEventIndicationsService, compensationService: CompensationService, router: Router, route: ActivatedRoute, messageService: MessageService, confirmationService: ConfirmationService, formBuilder: FormBuilder, translate: TranslateService, hotkeysService: HotkeysService, fieldCustomization: FieldCustomizationService, focusService: FocusService, adjustmentReasonSituationService: AdjustmentReasonSituationService, workscheduleService: WorkscheduleService, employeeService: EmployeeService, situationService: SituationService, situationClockingEventService: SituationClockingEventService);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    setHotkeys(): void;
    isNew(): boolean;
    onRouteParamsChange(params: any): void;
    updateSuggestions(value: any): void;
    getSuggestionValue(displayFields: string[], ownerEntity: string, value: any, separator: string): any;
    onRouteDataChange(data: any): void;
    onCancel(): void;
    onSendFile(filesToDelete: any, filesToCommit: any[]): Observable<{}>;
    onSave(): void;
    finishOperation(): void;
    onDelete(): void;
    getProp(obj: any, path: any): any;
    onAdjustmentReasonLookupRequest(value: string): void;
    onAdjustmentReasonSearchRequest(event: any): void;
    onWorkscheduleLookupRequest(value: string): void;
    onWorkscheduleSearchRequest(event: any): void;
    onEmployeeLookupRequest(value: string): void;
    onEmployeeSearchRequest(event: any): void;
    onSituationLookupRequest(value: string): void;
    onSituationSearchRequest(event: any): void;
    private getFormGroup;
    private getAdjustmentReasonSearchFields;
    private getAdjustmentReasonSearchGridFields;
    private getWorkscheduleSearchFields;
    private getWorkscheduleSearchGridFields;
    private getEmployeeSearchFields;
    private getEmployeeSearchGridFields;
    private getSituationSearchFields;
    private getSituationSearchGridFields;
    private goBack;
    private validateAllFormFields;
    private getSaveObservable;
    private getDeleteObservable;
    private validateVisualization;
    private loadLabelFromEnum;
    private loadEnumFromLabel;
    private validLimitDaysBackwardScheduling;
    private startDateIsBeforeOrEqualToEndDate;
    private enableAndDisableFields;
    private enableOrDisableField;
    setCahceLimmitDays(companyId: string, limitDays: number): void;
    getAdjustmentReasonInfoSign(): string;
    /**
     * Verifica na definição de apuração se é utilizado e depois se é obrigatório na especialização do ponto da situação.
     *
     * @param formGroup Formulario
     */
    private mandatoryAdjustmentReasonValidator;
    private enableAdjustmentReason;
    patchValuesAndUpdateSuggestions(value: any, result: any): void;
    private loadLockedEmployee;
    private addMessage;
    private disableFieldsOnEdit;
}
interface CompensationValidationFields {
    interval: boolean;
    numberOfHours: boolean;
    workSchedule: boolean;
    periods: {
        label: string;
        value: PeriodType;
    }[];
}
export {};
