export interface ICoberturasBuscarCoberturasComPrecoFormatoComparativo {
  Coberturas: Cobertura[];
  ProcedimentosSite: ProcedimentosSite2[];
  TiposProcedimentos: TiposProcedimento[];
}

export interface ICoberturasBuscarCoberturasComPrecoFormatoComparativoFront {
  Cobertura: Cobertura;
  ProcedimentosSite?: ProcedimentosSite2[];
  TiposProcedimentos?: TiposProcedimento[];
  isBestOffer?: boolean;
  Description?: string;
}

interface TiposProcedimento {
  Id: string;
  Nome: string;
  Abreviacao: string;
  PermiteReembolso: string;
  DataCadastro: string;
  Ativo: string;
}

interface ProcedimentosSite2 {
  Id: string;
  Nome: string;
  TiposProcedimentosId: string;
  Ativo: string;
  DataCadasto: string;
}

interface Cobertura {
  Id: string;
  Nome: string;
  Coparticipativo: string;
  Coparticipacao?: any;
  Franquia?: any;
  Ativo: string;
  DataCadastro: string;
  Ordem: string;
  Reembolso: string;
  ValorReembolso?: any;
  ValorIndicacao: string;
  CoberturasIdPrincipal?: any;
  EstadosId: string;
  CidadesId?: any;
  OrigemCheckout: string;
  TipoReembolso: string;
  TiposCoberturasId: string;
  HtmlSite?: any;
  MaisVendido: string;
  Baby: string;
  CarenciaZero?: any;
  TaxaAdesao?: any;
  DescontoMarketPlace: string;
  LocalDisponibilidade: string;
  UpgradeApp: string;
  ExibeSite: string;
  PaginaInicial: string;
  Imagem?: string;
  TiposCoberturasNome: string;
  Valores: Valore[];
  Procedimentos: Procedimento[];
  Boleto: Boleto;
  Cartao: Cartao;
  ProcedimentosCarenciaZero: ProcedimentosCarenciaZero;
  ProcedimentosSite: ProcedimentosSite[];
  Especie: string;
}

interface ProcedimentosSite {
  isOpen: any;
  Nome: string;
  Procedimentos: string[];
}

interface ProcedimentosCarenciaZero {
  '1': _1;
  '2'?: _1;
}

interface _1 {
  CoberturasProcedimentosId: string;
  CoberturasProcedimentosCoberturasId: string;
  CoberturasProcedimentosProcedimentosId: string;
  CoberturasProcedimentosLimiteAno: string;
  CoberturasProcedimentosPeriodicidade: string;
  CoberturasProcedimentosCarencia: string;
  CoberturasProcedimentosValorReembolso: string;
  CoberturasProcedimentosAtivo: string;
  CoberturasProcedimentosDataCadastro: string;
  CoberturasProcedimentosModalidadeReembolso: string;
  CoberturasId: string;
  CoberturasTiposCoberturasId: string;
  CoberturasNome: string;
  CoberturasCoparticipativo: string;
  CoberturasCoparticipacao?: any;
  CoberturasFranquia?: any;
  CoberturasAtivo: string;
  CoberturasDataCadastro: string;
  ProcedimentosId: string;
  ProcedimentosCodigo: string;
  ProcedimentosNome: string;
  ProcedimentosCarencia: string;
  ProcedimentosTipo: string;
  ProcedimentosTipoNome: string;
  ProcedimentosLimiteAno: string;
  ProcedimentosAtivo: string;
  ProcedimentosDataCadastro: string;
}

interface Cartao {
  Composicao: Composicao2;
}

interface Composicao2 {
  DataFidelidade: string;
  ValorAdesao: number;
  ComposicaoMensalidade: ComposicaoMensalidade[];
  ComposicaoAdesao: ComposicaoMensalidade[];
  Pets: Pet2[];
  ValorDescontosMensalidades: number;
  ValorMensalidade: number;
  ValorTotalMensalidade: number;
  ValorTotal: number;
  ValorComDesconto: number;
  CampanhasCoberturasExibeSite: string;
}

interface Pet2 {
  CoberturasId: string;
  Especie: number;
  DataNascimento: string;
  RacasId: string;
  TipoFiltro: number;
  Data: string;
  ConsultoresId: string;
  Ordem: number;
  Planos: Planos;
  Descontos: Desconto2[];
  ValoresAdesoes: ValoresAdesoe[];
  ValorUnitario: string;
  ValorDescontos: number;
  ValorAdesao: number;
  ValorAdesaoReal: number;
  DescontoCartao: string;
  Campanhas: Campanha[];
  ComposicaoMensalidade: ComposicaoMensalidade[];
  ComposicaoAdesao: ComposicaoMensalidade[];
  CampanhasCoberturasId?: string;
  CampanhasCoberturasTabelasId?: string;
}

interface Desconto2 {
  Origem: number;
  PorcentagemDesconto: number;
  ValorDesconto: number | string;
  Descricao: string;
}

interface Boleto {
  Composicao: Composicao;
}

interface Composicao {
  DataFidelidade: string;
  ValorAdesao: number;
  ComposicaoMensalidade: ComposicaoMensalidade[];
  ComposicaoAdesao: ComposicaoMensalidade[];
  Pets: Pet[];
  ValorDescontosMensalidades: number;
  ValorMensalidade: number;
  ValorTotalMensalidade: number;
  ValorTotal: number;
  ValorComDesconto: number;
}

interface Pet {
  CoberturasId: string;
  Especie: number;
  DataNascimento: string;
  RacasId: string;
  TipoFiltro: number;
  Data: string;
  ConsultoresId: string;
  Ordem: number;
  Planos: Planos;
  Descontos: Desconto[];
  ValoresAdesoes: ValoresAdesoe[];
  ValorUnitario: string;
  ValorDescontos: number;
  ValorAdesao: number;
  ValorAdesaoReal: number;
  DescontoCartao: number;
  Campanhas: Campanha[];
  ComposicaoMensalidade: ComposicaoMensalidade[];
  ComposicaoAdesao: ComposicaoMensalidade[];
}

interface Campanha {
  PorcentagemDescontoAdesao: string;
  PorcentagemDescontoParcela: string;
  OrdemDesconto: number;
  TotalParcelasDesconto: string;
  CampanhasCoberturasId: string;
  UpGrade: string;
  CoberturasId: string;
  ParcelaInicial: number;
  ParcelaFinal: number;
  CupomDesconto?: any;
  TempoIndeterminado: string;
  CashBack: string;
  ValorCashBack?: any;
  PeriodicidadeCashBack?: any;
  FrequenciaCashBack?: any;
  TipoValorCashBack?: any;
  UsoUnico: string;
  DescontoMesAdesao: string;
  PorcentagemDescontoMesAdesao?: string;
}

interface ValoresAdesoe {
  Id: string;
  Valor: string;
  Ativo: string;
  DataCadastro: string;
  TipoCoberturasId: string;
  DataInicioValidade: string;
}

interface Desconto {
  Origem: number;
  PorcentagemDesconto: number;
  ValorDesconto: number;
  Descricao: string;
}

interface Planos {
  Id: string;
  Nome: string;
  Especie: string;
  Porte: string;
  IdadeInicial: string;
  IdadeFinal: string;
  Valor: string;
  DescontoCartao: string;
  CoberturasId: string;
  Fidelidade: string;
  Ativo: string;
  DataCadastro: string;
  DataVigencia: string;
  IdSistemaAntigo?: any;
  ConsultoresId?: any;
}

interface ComposicaoMensalidade {
  Nome: string;
  Valor: number | string;
  Tipo?: number;
  ParcelaInicial?: number;
  ParcelaFinal?: number;
  PorcentagemDesconto?: string;
  ValParcelaInicial?: number;
  TotalParcelas?: string;
}

interface Procedimento {
  Id: string;
  CoberturasId: string;
  Ativo: string;
  DataCadastro: string;
  ProcedimentosSiteId: string;
}

interface Valore {
  CoberturasId: string;
  CoberturasNome: string;
  CoberturasCoparticipativo: string;
  CoberturasCoparticipacao?: any;
  CoberturasFranquia?: any;
  CoberturasOrdem: string;
  CoberturasReembolso: string;
  CoberturasValorReembolso?: any;
  CoberturasTipoReembolso: string;
  CoberturasNivel: string;
  PlanosId: string;
  PlanosNome: string;
  PlanosEspecie: string;
  PlanosPorte: string;
  PlanosValor: string;
  PlanosDescontoCartao: string;
  PlanosFidelidade: string;
  PlanosDataVigencia: string;
  PlanosIdSistemaAntigo?: any;
  CoberturasQuantidadeProcedimentos: string;
}

