import { SelectionModel } from '@angular/cdk/collections';
import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
import { FormControl, FormGroup } from '@angular/forms';
import { MatCheckboxChange } from '@angular/material/checkbox';
import { Subscription, Observable, Subject } from 'rxjs';
import { MieDelegheDTO } from '../../models/mie-deleghe-dto';
import { NaturaRichiedenteDTO } from '../../models/natura-richiedente.dto';
import { PersonaFisicaBaseDTO } from '../../models/persona-fisica-base-dto';
import { PersonaFisicaDTO } from '../../models/persona-fisica-dto';
import { PersonaGiuridicaBaseDTO } from '../../models/persona-giuridica-base-dto';
import { PersonaGiuridicaDTO } from '../../models/persona-giuridica-dto';
import { DatiPersonaFisica } from '../../models/portale/dati-persona-fisica';
import { Localita } from '../../models/portale/localita';
import { Nazione } from '../../models/portale/nazione';
import { PersonaFisica } from '../../models/portale/persona-fisica-model';
import { PersonaGiuridica } from '../../models/portale/persona-giuridica-model';
import { RappresentanteDTO } from '../../models/rappresentante-dto';
import { TipologicaDTO } from '../../models/tipologica-d-t-o';
import { Utente } from '../../models/utente';
import { ComponentOutputStatus } from '../../normalizzazione/component-output-status';
import { DelegheService } from '../../services/deleghe-services/deleghe.service';
import { MessageService } from '../../services/message.service';
import { UtenteService } from '../../services/utente/utente.service';
import { Modals } from '../../utils/modals';
export declare class DelegheComponent implements OnInit, OnDestroy {
    private delegheService;
    private modals;
    private msg;
    private utenteService;
    private ref;
    form: FormGroup;
    rappresentanza: RappresentanteDTO;
    province: Observable<Array<Localita>>;
    nazioni: Observable<Array<Nazione>>;
    tipologieRichiedenti$: Observable<Array<NaturaRichiedenteDTO>>;
    deleghe$: Observable<MieDelegheDTO>;
    tipologiaDeposito$: Observable<TipologicaDTO>;
    generalContractorValue: boolean;
    nextStep: EventEmitter<RappresentanteDTO>;
    previousStep: EventEmitter<RappresentanteDTO>;
    salvaBozza: EventEmitter<RappresentanteDTO>;
    isGeneralContractor: EventEmitter<boolean>;
    tipoRichiedente: FormControl;
    deleghe: FormControl;
    generalContractor: FormControl;
    displayedColumns: string[];
    selection: SelectionModel<any>;
    CODICE_LEGALE: string;
    direction: string;
    isFinal: boolean;
    nsDanteCausa: string;
    nsTutore: string;
    nsLegale: string;
    tipoRichiedente$: Observable<NaturaRichiedenteDTO>;
    tipoRichiedenteSub: Subscription;
    isFormValid: boolean;
    listaDeleghe: Array<PersonaFisicaBaseDTO | PersonaGiuridicaBaseDTO>;
    listaDeleghe$: Observable<Array<any>>;
    personaFisica$: Observable<PersonaFisica>;
    personaFisica: DatiPersonaFisica;
    pfSubscription: Subscription;
    personaGiuridica$: Observable<PersonaGiuridica>;
    personaGiuridica: PersonaGiuridica;
    pgSubscription: Subscription;
    defaultDeleghe: boolean;
    personaFisicaBase: PersonaFisicaBaseDTO;
    personaGiuridicaBase: PersonaGiuridicaBaseDTO;
    namespaceInfoPf: string;
    nspg: string;
    showComponentPF: boolean;
    showComponentPG: boolean;
    isSearching: boolean;
    delega: string;
    formControlGeneralContractor: boolean;
    utente: Utente;
    listaDelegheDefault: Array<PersonaFisicaBaseDTO | PersonaGiuridicaBaseDTO>;
    codiceTipoDeposito: string;
    tipologiaRichiedenteInit$: Observable<Array<NaturaRichiedenteDTO>>;
    flagDelegaSeStesso: boolean;
    changesPersonaFisica$: Subject<ComponentOutputStatus<(value: RappresentanteDTO) => void>>;
    changesPersonaGiuridica$: Subject<ComponentOutputStatus<(value: RappresentanteDTO) => void>>;
    isValidSedi: boolean;
    $selected: Subscription;
    validazioneeSede: boolean;
    idSedeSelezionata: string;
    isNew: boolean;
    couldBeDittaIndividuale: boolean;
    constructor(delegheService: DelegheService, modals: Modals, msg: MessageService, utenteService: UtenteService, ref: ChangeDetectorRef);
    ngOnInit(): void;
    resetValidation(): void;
    forward(_: any): void;
    onSalvaBozza($event: any): void;
    backward($event: any): void;
    complete($event: any): void;
    initRappresentante(): void;
    ngOnDestroy(): void;
    setDelega(persona: any): void;
    hasSelecteDelegante(): boolean;
    viewDeleghe(): boolean;
    getPersonaFisica(id: string): void;
    getPersonaGiuridica(id: string): void;
    isPersonaFisica(tipoPersona: Array<string>): boolean;
    isPersonaGiuridica(tipoPersona: Array<string>): boolean;
    initDeleghe(tipoRichiedente: NaturaRichiedenteDTO): void;
    resetDeleghe(): void;
    mapperPersonaFisica(datiPersona: DatiPersonaFisica): void;
    initPersonaFisica(id: string): PersonaFisicaBaseDTO;
    initPersonaGiuridica(id: string): PersonaGiuridicaBaseDTO;
    mapperPersonaGiuridica(datiPersona: PersonaGiuridica): void;
    personaFisicaReady(personaFisicaStatus: ComponentOutputStatus<PersonaFisicaDTO>): void;
    personaGiuridicaReady(personaGiuridicaStatus: ComponentOutputStatus<PersonaGiuridicaDTO>): void;
    richiedenteComparator(m1: NaturaRichiedenteDTO, m2: NaturaRichiedenteDTO): boolean;
    delegheComparator(m1: PersonaFisicaBaseDTO, m2: PersonaFisicaBaseDTO): boolean;
    fromIdAndTipo(codice: string, tipoNaturaRichiedente: string): NaturaRichiedenteDTO;
    onChangeGeneralContractor(event: MatCheckboxChange): void;
}
