import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
import { PoModalAction } from '../../../../components/po-modal';
import { PoModalComponent } from '../../../../components/po-modal/po-modal.component';
import { PoLanguageService } from '../../../../services/po-language/po-language.service';
import { PoTableColumnSpacing } from '../../../po-table';
import { PoTableColumnSort } from '../../../po-table/interfaces/po-table-column-sort.interface';
import { PoLookupAdvancedFilter } from '../interfaces/po-lookup-advanced-filter.interface';
import { PoLookupColumn } from '../interfaces/po-lookup-column.interface';
import { PoLookupFilter } from '../interfaces/po-lookup-filter.interface';
import { PoLookupLiterals } from '../interfaces/po-lookup-literals.interface';
import { PoDisclaimerGroup } from './../../../po-disclaimer-group/po-disclaimer-group.interface';
import { PoDisclaimer } from './../../../po-disclaimer/po-disclaimer.interface';
import { PoTableComponent } from './../../../po-table/po-table.component';
export declare const poLookupLiteralsDefault: {
    en: PoLookupLiterals;
    es: PoLookupLiterals;
    pt: PoLookupLiterals;
    ru: PoLookupLiterals;
};
/**
 * @docsPrivate
 *
 * Classe base do componente Po Lookup Modal.
 */
export declare abstract class PoLookupModalBaseComponent implements OnDestroy, OnInit {
    protected changeDetector: ChangeDetectorRef;
    poModal: PoModalComponent;
    poTable: PoTableComponent;
    /**
     * Objeto com os campos que serão criados no busca avançada.
     *
     * > Caso não seja passado um objeto ou então ele esteja em branco o link de busca avançada ficará escondido.
     *
     * Exemplo de URL com busca avançada: http://localhost:3000/v1/heroes?filter=&page=1&pageSize=10`&name=Tony%20Stark&nickname=Homem%20de%20Ferro&email=irnman@marvel.com`
     *
     * Caso algum parâmetro seja uma lista, a concatenação é feita utilizando virgula.
     * Exemplo: http://localhost:3000/v1/heroes?filter=&page=1&pageSize=10`&name=Tony%20Stark,Peter%20Parker,Gohan`
     *
     */
    advancedFilters: Array<PoLookupAdvancedFilter>;
    /**
     * Lista das colunas da tabela.
     * Essa propriedade deve receber um array de objetos que implementam a interface PoLookupColumn.
     */
    columns: Array<PoLookupColumn>;
    /** Lista de itens da tabela. */
    items: Array<any>;
    /** Classe de serviço com a implementação do cliente. */
    filterService: PoLookupFilter;
    /** Classe de serviço com a implementação do cliente. */
    filterParams: any;
    /** Se verdadeiro, esconde o gerenciador de tarefas, responsável pela definição de quais colunas serão exibidas. */
    hideColumnsManager: boolean;
    /** Se verdadeiro, ativa a funcionalidade de scroll infinito para a tabela exibida no retorno da consulta. */
    infiniteScroll: boolean;
    /** Se verdadeiro, ativa a funcionalidade de multipla seleção. */
    multiple: boolean;
    /** Evento utilizado ao selecionar um registro da tabela. */
    model: EventEmitter<any>;
    /** Classe de serviço com items selecionados */
    selectedItems: any;
    /** Indica a coluna que será utilizada como descrição do campo e como filtro dentro da janela. */
    fieldLabel: string;
    /**
     * @description
     *
     * Indica a coluna que será utilizada como valor do campo.
     *
     * > Atenção: Caso não seja passada ou tenha o conteúdo incorreto, não irá atualizar o model do formulário.
     */
    fieldValue: string;
    /**
     * Define o espaçamento interno das células, impactando diretamente na altura das linhas do table dentro do modal. Os
     * valores permitidos são definidos pelo enum **PoTableColumnSpacing**.
     */
    spacing: PoTableColumnSpacing;
    /** Define o tamanho do componente. */
    size: string;
    /**
     * Habilita ou desabilita a quebra automática de texto. Quando ativada, o texto que excede
     * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma
     * leitura clara.
     *
     * > Incompatível com `virtual-scroll`, que requer altura fixa nas linhas.
     *
     */
    textWrap?: boolean;
    /**
     * @optional
     *
     * @description
     *
     * Habilita o `virtual-scroll` na tabela para melhorar a performance com grandes volumes de dados.
     * A altura da tabela já é pré-definida, portanto o `virtual-scroll` será ativado automaticamente.
     *
     * > Incompatível com `p-text-wrap` e `master-detail`, pois o `virtual-scroll` exige altura fixa nas linhas.
     *
     * @default `true`
     */
    virtualScroll?: boolean;
    /**
     * @optional
     *
     * @description
     * Evento disparado ao fechar o popover do gerenciador de colunas após alterar as colunas visíveis.
     *
     * O componente envia como parâmetro um array de string com as colunas visíveis atualizadas.
     * Por exemplo: ["idCard", "name", "hireStatus", "age"].
     */
    changeVisibleColumns: EventEmitter<string[]>;
    /**
     * @optional
     *
     * @description
     * Evento disparado ao clicar no botão de restaurar padrão no gerenciador de colunas.
     *
     * O componente envia como parâmetro um array de string com as colunas configuradas inicialmente.
     * Por exemplo: ["idCard", "name", "hireStatus", "age"].
     */
    columnRestoreManager: EventEmitter<string[]>;
    hasNext: boolean;
    isLoading: boolean;
    page: number;
    pageSize: number;
    searchValue: string;
    appliedSearchValue: string;
    tableLiterals: any;
    advancedFilterModalTitle: string;
    dynamicFormValue: {};
    disclaimer: PoDisclaimer;
    disclaimerGroup: PoDisclaimerGroup;
    isAdvancedFilter: boolean;
    primaryActionAdvancedFilter: PoModalAction;
    secondaryActionAdvancedFilter: PoModalAction;
    selecteds: Array<any>;
    protected sort: PoTableColumnSort;
    private filterSubscription;
    private searchSubscription;
    private showMoreSubscription;
    private disclaimerLabel;
    private _literals;
    private _title;
    private readonly language;
    primaryAction: PoModalAction;
    secondaryAction: PoModalAction;
    /** Objeto com as literais usadas no `po-lookup-modal`. */
    set literals(value: PoLookupLiterals);
    get literals(): PoLookupLiterals;
    /** Título da modal. */
    set title(value: string);
    get title(): string;
    constructor(languageService: PoLanguageService, changeDetector: ChangeDetectorRef);
    ngOnDestroy(): void;
    ngOnInit(): void;
    createDisclaimer(): void;
    addDisclaimer(value: any, property: string): void;
    onChangeDisclaimerGroup(): void;
    search(): void;
    searchFilteredItems(): void;
    showMoreEvent(): void;
    setSelectedItems(): void;
    setDisclaimersItems(): void;
    private applyDisclaimerLabelValue;
    private formatValueToCurrency;
    private formatValueToBoolean;
    private setAdvancedFilterModalProperties;
    private getAdvancedFilters;
    private getFilteredItems;
    private getFilteredParams;
    private getOrderParam;
    private initializeData;
    private setLookupResponseProperties;
    private setTableLiterals;
    abstract openModal(): void;
    abstract destroyDynamicForm(): void;
}
