import { ChangeDetectorRef, ElementRef, EventEmitter, OnInit } from '@angular/core';
import { DatePickerComponent } from 'ng2-date-picker';
import { EditorConfig } from 'vcomply-editor';
import { SnackBarService } from '../ui-kit/snack-bar/snack-bar.service';
import { PolicyForm } from '../workflow-interfaces/create-policy-form';
import { AuthService } from '../workflow-services/auth.service';
import { PolicyService } from '../workflow-services/policy.service';
import { ResponsibilityService } from '../workflow-services/responsibility.service';
import { UiKitService } from '../workflow-services/ui-kit.service';
import { PlatformLocation } from '@angular/common';
import { ActivatedRoute, Router } from '@angular/router';
import { FrequencyService } from '../sharedComponents/frequency/frequency.service';
import { FormatAndEvidenceComponent } from '../sharedComponents/format-and-evidence/format-and-evidence.component';
import { RestApiService } from '../sharedComponents/link-program/restapi.service';
import { CommonService } from '../services/common.service';
import { OrganizationUserService } from '../workflow-services/organization-user.service';
import { OrganizationCommonService } from '../workflow-services/common-workflow-services/organization-common.service';
import { ComplianceCommonService } from '../workflow-services/common-workflow-services/compliance-common.service';
import { IframeService } from '../services/iframe.service';
import { DateUtilityService } from '../report-a-case/services/date-utility.service';
import { DialogService } from '../ui-kit/dialog/dialog.service';
import * as i0 from "@angular/core";
export declare class WorkflowPolicyComponent implements OnInit {
    private policyService;
    private snackBar;
    private uiKitService;
    private authService;
    private responsibilityService;
    private router;
    private route;
    private frequencyService;
    private changeRef;
    private restApiService;
    private commonService;
    private organizationUserService;
    private organizationCommonService;
    private complianceCommonService;
    private iframeService;
    private dateUtilityService;
    private dialog;
    ASSETS: {
        responsibility_center: string;
        case_type: string;
        case_category: string;
        when: string;
        what: string;
        case_resolution_deadline: string;
        case_assignees: string;
        format_evidence: string;
        case_owners: string;
        link_controls: string;
        link_items: string;
        spreadsheet_multiple_category: string;
        recommended_action: string;
        risks: string;
        exception_type: string;
        priority: string;
        associated_risks: string;
        oversight: string;
        add_risk_more_option: string;
        lables: string;
        reviewer: string;
        checkpoints: string;
        assessments: string;
        objectives: string;
        audit: string;
        roles: string;
        approval: string;
        recurring: string;
        lock_scope: string;
        custom_fields: string;
        link_risks: string;
        placeholder: string;
        add_logic: string;
        image_choice: string;
        logic_image_choice: string;
        thank_you_image: string;
        upload: string;
        select_users: string;
        everyone_as_per_category: string;
        bulb: string;
        enter_icon: string;
        im_creating: string;
        notes: string;
        attestations: string;
        risk_category: string;
        issue_type: string;
        type: string;
        search_data: string;
        approval_workflow: string;
        sequential: string;
        round_robin: string;
        anyone: string;
        collaborator: string;
    };
    CONSTANTS: any;
    LINKS: any;
    pickerChanged: EventEmitter<any>;
    mode: string;
    policyId: string;
    feature: any;
    showConfirmationAlert: EventEmitter<any>;
    datePicker: DatePickerComponent;
    populateOption: EventEmitter<any>;
    disconnectRefresh: EventEmitter<any>;
    shiftToEditMode: EventEmitter<any>;
    convertFileData: any;
    selectedCategory: string;
    isSendForAttestation: boolean;
    templateId: string;
    formatEvidence: FormatAndEvidenceComponent;
    datePickerPopUp: ElementRef;
    description: EditorConfig;
    workflowType: string;
    scrollToBottom: boolean;
    navigateToDocumentsSection: boolean;
    activeSelector: string;
    rcList: any;
    usersList: any;
    allApprovers: any;
    allReviewers: any;
    assigneesList: any;
    ownerlist: any;
    reviewersList: any;
    overseersList: any;
    rcListLoaded: boolean;
    usersListLoaded: boolean;
    categoryList: any;
    groupsList: any[];
    workFlowList: any[];
    approverWorkFlowList: any[];
    submitted: boolean;
    ccEmailObjIds: any[];
    ccFailGroupObjIds: any[];
    usersAccessList: any[];
    usersAccessListIds: any[];
    groupsAccessListIds: any[];
    groupsAccessList: any[];
    SelectedListOfPolicies: any[];
    paginatedUsersList: any;
    isPaginationEnabled: boolean;
    paginatedUsersCache: Map<string, any>;
    loader: boolean;
    categoriesListLoaded: boolean;
    groupsListLoaded: boolean;
    categoryConfig: {
        panelTitle: string;
        floatingTextSingular: string;
        floatingTextPlural: string;
        searchPlaceholder: string;
        searchEnabled: boolean;
        selectAllEnabled: boolean;
        workflow: string;
        noDataText: string;
    };
    approvalWorkflowConfig: {
        panelTitle: string;
        floatingTextSingular: string;
        floatingTextPlural: string;
        searchPlaceholder: string;
        searchEnabled: boolean;
        selectAllEnabled: boolean;
    };
    addMoreLevels: boolean;
    approversListIndex: number;
    workflowList: string[];
    datePickerOverlay: boolean;
    dateConfig: {
        disableKeypress: boolean;
        format: string;
        unSelectOnClick: boolean;
        openOnClick: boolean;
        openOnFocus: boolean;
    };
    frequencyDetails: {
        pattern: string;
        notificationPending: number;
        dateOfModified: number;
        deactivationValue: number;
        selectedReport: number;
        lifecycle: string;
        startDate: number;
        startOnTheDay: number;
        window: number;
        failed: number;
        time: string;
        failedTime: string;
        continuous_failed_days: number;
    };
    reviewerFrequencyDetails: {
        pattern: string;
        notificationPending: number;
        dateOfModified: number;
        deactivationValue: number;
        selectedReport: number;
        lifecycle: string;
        startDate: number;
        startOnTheDay: number;
        window: number;
        failed: number;
        time: string;
        failedTime: string;
        continuous_failed_days: number;
    };
    frequencyPlaceholder: string;
    reviewerFrequencyPlaceholder: string;
    sideSelectorElements: string[];
    riskClassification: {
        name: string;
        value: number;
        class: string;
    }[];
    showRiskClassification: boolean;
    showCreateDocuments: boolean;
    organization_id: string;
    member_obj_id: string;
    memberId: number;
    userInfo: any;
    policyApprovalFlag: number;
    baseURL: string;
    groupEnabled: any;
    overseerGroupsList: any[];
    enableApprovalWorkflow: boolean;
    isVersionValid: boolean;
    selectedLinkProgram: any;
    versionErrorMessage: string;
    selectedWorkflow: any[];
    editApprovalWorkflow: any;
    approvalWorkflowIds: any[];
    defaultEditApprovers: any;
    createApprovalClick: boolean;
    editWorkflowLevel: {};
    noWorkflowSelected: boolean;
    templateView: boolean;
    templateUrl: string;
    constructor(policyService: PolicyService, snackBar: SnackBarService, uiKitService: UiKitService, authService: AuthService, responsibilityService: ResponsibilityService, router: Router, route: ActivatedRoute, frequencyService: FrequencyService, platformLocation: PlatformLocation, changeRef: ChangeDetectorRef, restApiService: RestApiService, commonService: CommonService, organizationUserService: OrganizationUserService, organizationCommonService: OrganizationCommonService, complianceCommonService: ComplianceCommonService, iframeService: IframeService, dateUtilityService: DateUtilityService, dialog: DialogService);
    policyForm: PolicyForm;
    ngOnInit(): void;
    _initiateAPI(): void;
    _initiateEditAPI(): void;
    getOrgDetails(): void;
    getLinkedPolicies(policyId: string): void;
    /**
     * Displays the listing pages the left side of policy form to set and edit the dropdown fields values
     * @param type holds name of particular list is to be displayed
     * @param event contains boolean value to display the list or not
     * @param workflowType it sets the approval workflow type while editing the approval workflow.
     */
    activateSelector(type: any, event: boolean, workflowType?: any): void;
    /**
     * Closes the listing pages
     */
    disableSelector(): void;
    /**
     * Fetches Responsibility centers list
     */
    getRCList(): void;
    /**
     * Fetches organization users list
     */
    getUsersList(): void;
    updateMemberIdKey(list: any): any;
    /**
     * Fetches Policy Categories list
     */
    getCategoriesList(): void;
    /**
     * Fetches organization users groups list
     */
    getGroupsList(): void;
    overseerGroupList(): void;
    /**
     * Sets the approvers workflow from the selected workflow on Approvers workflow list
     * @param event contains selected predefined workflow
     */
    selectedWorkflowChange(event: any): void;
    /**
     * Merges approvers from newLevels with approvers from currentLevels
     * while preserving approval-related flags.
     * Also filters out levels that end up with no approvers.
     *
     * @param newLevels - Array of new levels with approvers.
     * @param currentLevels - Object containing existing levels.
     * @returns A new array of levels with merged approvers and preserved flags.
     */
    private preserveApprovalFlags;
    /**
     * Fetches Approvers workflow list based on selected policy categories
     * @param id contains selected categories id's
     */
    getApproverWorkFlow(id: any, data?: any): void;
    updateDefaultWorkflow(workflow: any): void;
    private mergeApproversForLevel;
    removeWorkflow(): void;
    /**
     * Fetches Approvers and reviewers list based on selected policy categories
     * @param categoryIds contains selected categories id's
     */
    getApproversAndReviewersList(categoryIds: any, approverIds?: any, reviewerIds?: any, policy?: any): void;
    private hasWorkflowChanges;
    /*******
     * It is to populate more options elements while editing the policy form
     */
    populateOptionalFields(): void;
    /**
     * It is to add and remove the elements from More option to the policy Form
     * @param event contains details related to checked value, code particular elements from More options
     */
    addMoreInfo(event: any): void;
    /**
     * It is to ensure whether all required lists on Policy from is loaded from the api call or not
     */
    checkWhetherAllListsLoaded(): void;
    /**
     * Triggers the confirmation popup when availability on Policy portal toggle in ON
     * @param event contains toggle value which is always true or false
     */
    availabilityOnPortal(event: any): void;
    /**
     * Receives the input from the Confirmation dialog of available on Policy portal
     * @param event contains selected option from the confirmation dialog which is always either 'YES' or 'NO'
     */
    confirmPolicyPortal(event: any): void;
    /**
     * Sets the policyForm with selected elements from the listing, frequency, file upload components
     * @param type defines the particular field on Policy form.
     * @param selectedItems contains the list of selected items from the list
     */
    saveSelectedList(type: string, selectedItems: any): void;
    listOfSelectedPolicies(selectedPolicies: any): any;
    getGroupObjectId(overseerGroup?: any): any;
    /**
     * Removes the particular element from selected list
     * @param type defines the particular case
     * @param event holds the id or key of element to be removed
     * @param removeIndex contains the index of the element to be removed
     */
    remove(type: any, event: any, removeIndex?: any): void;
    /**
     * Refreshes the assignees and overseers list such that both list does not contain the same users based on selection
     */
    refreshAllLists(): void;
    /**
     * Returns whole list based on selected id's from a particular list elements
     * @param list it is the main list  which contains all elements list
     * @param key contains key to filter selected list from the list
     * @param ids selected ids array
     */
    setList(list: any[], ids: any[], key: string): any;
    /**
     * Returns id's from a particular list elements
     * @param list actual selected list
     * @param key contains key to extract id from the list
     */
    returnIds(list: any[], key: string): any[];
    /**
     * Sets the reviewer type in approval workflow
     * @param event contains selected reviewer type
     */
    reviewerTypeChange(event: any): void;
    /**
     * Sets frequency in edit  mode
     */
    frequencyDataPopulation(event: any, mode?: 'SELECT' | 'POPULATE'): void;
    /**
     * Sets the selected frequency details in the policyForm
     * @param event contains selected frequency details
     */
    frequencyData(event: any): void;
    /**
     * Populates the frequency field with selected data from frequency component
     * @param event contains selected frequency details
     */
    frequencyPopulation(event: any): void;
    reviewerFrequencyDataPopulation(event: any): void;
    resetReviewerFrequency(): void;
    /**
     * Sets the selected reviewer frequency details in the policyForm
     * @param event contains selected frequency details
     */
    reviewerFrequencyData(event: any): void;
    /**
     * Populates the reviewer frequency field with selected data from frequency component
     * @param event contains selected frequency details
     */
    reviewerFrequencyPopulation(event: any): void;
    /**
     * Validates the data submitted on create policy form
     */
    validatePolicy(): boolean;
    /**
     * Makes an api call to create a policy
     * @param policy contains policyForm data
     */
    submitPolicy(): false | undefined;
    linkDocumentWithPolicy(document: any): void;
    /**
     * opens the date picker on policy form
     */
    openDatePicker(): void;
    /**
     * closes the date picker from policy form
     */
    closeDatePicker(evt: any): void;
    editPolicyFromDocuments(): void;
    checkForCreateDocuments(): void;
    editPolicy(): void;
    populatePolicyForm(data: any, categoryIds: any): void;
    changeName(event: string): string;
    typeSelected(event: boolean): void;
    onVersion(event: any): void;
    clickApprovalWorkflow(event: boolean): void;
    listCancelClicked(event: any): void;
    selectedApprovalWorkflow(event: any): void;
    updatedProgramDetails(event: any): void;
    onAssessmentSelect(event: any): void;
    getAssessmentDetails(assessmentDetails: any, type?: string): void;
    setOwnersOnLoad(): void;
    approvalWorkflowAPICall(event: any): void;
    convertApprovalWorkflow(approverList: any): any;
    deleteLevel(index: any): void;
    editWorkflow(event: any): void;
    createApprovalWorkflow(): void;
    closeClickedCreateForm(): void;
    editLevelClicked(editLevel: any, index: any): void;
    setAccessField(event: number): void;
    getUsersAccessListByCategory(categoryDetails: any): void;
    populatePolicyAccessDetails(policyDetails: any): void;
    resetPolicyAccessDetails(): void;
    removeFrequency(): void;
    documentClick(event: any): void;
    onTemplateSelect(event: any, isPreselected?: boolean): void;
    setNavigationUrl(): void;
    navigateToTemplate(): void;
    get isPastDate(): boolean;
    getUsersListWithPagination(event?: any): void;
    refreshPaginatedUsersList(): void;
    setPaginationOptions(data: any, searchKey: string): void;
    onAllAttestorsToggle(selected: boolean): void;
    isCachedData(page: string): boolean;
    selectAllUsers(selected: boolean): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<WorkflowPolicyComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<WorkflowPolicyComponent, "app-workflow-policy", never, { "mode": { "alias": "mode"; "required": false; }; "policyId": { "alias": "policyId"; "required": false; }; "feature": { "alias": "feature"; "required": false; }; "convertFileData": { "alias": "convertFileData"; "required": false; }; "selectedCategory": { "alias": "selectedCategory"; "required": false; }; "isSendForAttestation": { "alias": "isSendForAttestation"; "required": false; }; "templateId": { "alias": "templateId"; "required": false; }; }, { "pickerChanged": "pickerChanged"; "showConfirmationAlert": "showConfirmationAlert"; "populateOption": "populateOption"; "disconnectRefresh": "disconnectRefresh"; "shiftToEditMode": "shiftToEditMode"; }, never, never, false, never>;
}
