import { DatePipe } from '@angular/common';
import { ChangeDetectorRef, Injector } from '@angular/core';
import { Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core';
import { EntityPermissionService } from '../../components/entity-permission/services.cs/entity-permission.service';
import { StateMachinesService } from '../../components/statemachines/services/statemachines.service';
import { WorkflowPermissionDetailService } from '../../components/workflow/services/workflow-permission-detail.service';
import { WorkflowSettingsService } from '../../components/workflow/services/workflow-settings.service';
import { CongViecService } from '../../congviec/congviec/services/congviec.service';
import { GridInfo } from '../../models/grid-info';
import { ResponseResult } from '../../models/response-result';
import { KeyValueType } from '../../models/types';
import { BaseService } from '../../services/base.service';
import { CommonService } from '../../services/common.service';
import { CrudService } from '../../services/crud.service';
import { CustomRouterService } from '../../services/custom-router.service';
import { ExportService } from '../../services/export.service';
import { ListHelperService } from '../../services/list-helper.service';
import { LoggerService } from '../../services/logger.service';
import { MasterDataService } from '../../services/master-data.service';
import { NotifierService } from '../../services/notifier.service';
import { UserService } from '../../services/user.service';
import { CrudFormData, CrudListData, CrudListSetting, FieldRowSpan, PopupSize, RefField } from '../form-schema';
import { ComponentBaseWithButton } from './component-base-with-button';
import { IListComponent } from './i-list-component';
export declare abstract class ListBase<T extends IListComponent> extends ComponentBaseWithButton {
    crudList: T;
    set contentCrudList(content: T);
    set contentTreeTable(content: T);
    parentModel: CrudListData;
    loadDetailFromQueryParam: boolean;
    private notConfigBaseServiceMessage;
    setting: CrudListSetting;
    model: CrudListData;
    formModel: CrudFormData;
    scopeDataEdit: any;
    showDetailForm: boolean;
    environment: any;
    countReady: number;
    numberOfPined: number;
    defaultFilterColumn: KeyValueType;
    hasCrudList: boolean;
    customGetData: boolean;
    readyToTrinhKy: boolean;
    plusUrl: string;
    loadingTimeout: any;
    dataSearchCommon: any;
    rowDataCurrent: any;
    popupSizeMax: PopupSize;
    /**
     * Addtional fields to add to gridInfo.fields when using setting.autoGenerateSelectFields
     * @date 11/4/2022 - 2:03:19 PM
     *
     * @type {string[]}
     */
    additionalFields: string[];
    protected _notifierService: NotifierService;
    protected _customRouterService: CustomRouterService;
    protected _listHelperService: ListHelperService;
    protected _commonService: CommonService;
    protected _translateService: TranslateService;
    protected _exportService: ExportService;
    protected _router: Router;
    protected _crudService: CrudService;
    protected _datePipe: DatePipe;
    protected _cd: ChangeDetectorRef;
    protected _userService: UserService;
    protected _masterDataService: MasterDataService;
    protected _entityPermissionService: EntityPermissionService;
    protected _workflowSettingService: WorkflowSettingsService;
    protected _workflowPermissionDetailService: WorkflowPermissionDetailService;
    protected _stateMachinesService: StateMachinesService;
    protected _congViecServiceInBase: CongViecService;
    protected _loggerService: LoggerService;
    constructor(_injector: Injector, _isTreeList: boolean);
    private setMainListComponentValue;
    ngOnInit(): void;
    private mergeInfoToColumnSchema;
    private getDataType;
    private generateFieldSearchText;
    _registerGlobalService(service: BaseService): void;
    getMenuButtons(rowData: any): any[] | Promise<any[]>;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    private handleAfterViewInit;
    setDefaultValueFilter(): void;
    reload(): Promise<void>;
    _triggerProcessData(infoGetData?: any): Promise<void>;
    private processData;
    modifyGridInfo(gridInfo: GridInfo): Promise<boolean | void>;
    private getData;
    private doGetRequest;
    _markLoading(): void;
    _handleReloaded(evt?: any): void;
    afterReloaded(): Promise<void>;
    _unmarkLoading(): void;
    private fireDataLoaded;
    getPromiseGetData(gridInfo: GridInfo): Promise<ResponseResult>;
    getDataCustom(gridInfo: GridInfo): void;
    _getDataSource(response: ResponseResult): Promise<[any[], any[]]>;
    private processGetData;
    beforeRenderDataSource(datasource: any): Promise<any>;
    private mergeRefFields;
    calculateRowSpan(dataSource: any[], fields: FieldRowSpan[], funcNext?: Function): void;
    afterProcessDataInBase(dataSource?: any[]): Promise<void>;
    afterGetData(): Promise<void>;
    /**
     * Thêm refField vào crud list trước khi tổng hợp dữ liệu
     * sẽ override các field bị trùng
     * @param refFields
     */
    addRefFields(refFields: RefField[]): void;
    groupInClient(dataSource: any): void;
    sortDataSourceByGroupField(dataSource: any[], groupField: string): void;
    _getRefDataDropdown(dataSource: any): Promise<void>;
    afterGetRefDataDropdown(field: string): void;
    private checkHasWorkflow;
    private getWorkflowDetailByWorkflowSetting;
    private getWorkflowCodeByTask;
    private appendColWorkflowStatus;
    getDataSourceTrangThaiWorkflow(): Promise<any[]>;
    private loadItemFromQueryParam;
    private loadDetailPid;
    _add(evt: any): Promise<void>;
    validateAdd(): Promise<boolean>;
    beforeAdd(): Promise<void>;
    _view(rowData: any): Promise<void>;
    _viewOnly(rowData: any): Promise<void>;
    beforeView(): Promise<void>;
    modifyViewModel(rowData: any): Promise<void>;
    _copyLinkMultiple(): Promise<void>;
    _copyLink(rowData: any): Promise<void>;
    _edit(rowData: any, scopeDataEdit?: any): Promise<void>;
    validateEdit(): Promise<boolean>;
    beforeEdit(): Promise<void>;
    modifyEditModel(modelEdit: any, rowData: any): Promise<void>;
    private cloneData;
    getPromiseDeleteItem(rowData: any): Promise<ResponseResult>;
    _delete(rowData: any): void;
    getPromiseDeleteItems(items: any): Promise<ResponseResult>;
    _deleteMultiple(items: any): void;
    beforeReloadAfterDelete(ids: string[]): void;
    onBeforeCancel(): void;
    _handleSaved(): void;
    _handleCancel($event: any): void;
}
//# sourceMappingURL=list-base.d.ts.map