export interface ParametrosPlano { id_plano: string; nome_plano: string; prazo_meses: number; taxa_administracao_total: number; fundo_reserva_mensal: number; seguro_prestamista: number; } export interface SimulacaoInput { credito_desejado: number; parametros: ParametrosPlano; tem_lance: boolean; lance_percentual?: number; } export interface ResultadoParcela { fundo_comum: number; taxa_administracao: number; fundo_reserva: number; seguro: number; total: number; } export interface ResultadoSimulacao { credito: number; prazo: number; parcela_integral: ResultadoParcela; parcela_reduzida?: ResultadoParcela; valor_lance?: number; prazo_apos_lance?: number; } export interface TransacaoPortabilidade { valor: number; contemplada: boolean; } export interface SimulacaoSecundarioInput { fluxos_mensais: number[]; transacoes_portabilidade?: TransacaoPortabilidade[]; portabilidade_percentual_contemplada?: number; portabilidade_percentual_nao_contemplada?: number; volume_contratado?: number; fee_percentual?: number; percentual_cartas_parcela_reduzida?: number; meses_pos_ultima_contemplacao?: number; sem_correcao_antes_contemplacao?: boolean; } export interface RegrasSecundarioAplicadas { portabilidade_contemplada: number; portabilidade_nao_contemplada: number; sem_correcao_antes_contemplacao: boolean; fee_sobre_volume_reduzido_70: boolean; } export interface ResultadoSimulacaoSecundario { fluxo_ajustado: number[]; custo_portabilidade: number; custo_fee_parcela_reduzida: number; custo_total_deducoes: number; caixa_maximo_negativo: number; payback_meses: number | null; tir_mensal: number | null; tir_anual: number | null; regras_aplicadas: RegrasSecundarioAplicadas; } export interface ScpFlowPatternSummary { id: string; nome: string; descricao: string; pontos: number; inicio?: string; fim?: string; } export interface ScpClientDefault { client_id: string; client_name: string; default_pattern_id: string; status: string; } export interface ScpFlowPoint { periodo: string; fluxo: number; } export interface MontarFluxoClienteScpInput { client_id: string; pattern_id?: string; escala_fluxo?: number; deslocamento_meses?: number; novo_client_id?: string; novo_client_name?: string; } export interface MontarFluxoClienteScpOutput { client_id: string; client_name: string; source_client_id: string; pattern_id: string; pattern_name: string; escala_fluxo: number; deslocamento_meses: number; pontos: ScpFlowPoint[]; fluxos_mensais: number[]; } export interface SimularSecundarioComPerfilScpInput extends MontarFluxoClienteScpInput, Omit {} export interface ResultadoSimulacaoSecundarioComPerfil extends ResultadoSimulacaoSecundario { fluxo_cliente: MontarFluxoClienteScpOutput; } export interface SimularConversaoScpConsorcioInput extends SimularSecundarioComPerfilScpInput { valor_imovel_base?: number; desconto_imovel_percentual?: number; percentual_entrada_imovel?: number; agio_consorcio_percentual?: number; taxa_custos_transacao_percentual?: number; } export interface ResultadoModoConversaoScpConsorcio { natureza_cenario: string; observacao: string; valor_imovel_base: number; desconto_imovel_percentual: number; percentual_entrada_imovel: number; agio_consorcio_percentual: number; taxa_custos_transacao_percentual: number; valor_imovel_com_desconto: number; valor_entrada_imovel: number; valor_credito_consorcio: number; valor_custos_transacao: number; investimento_total_conversao: number; valor_saida_consorcio_secundario: number; lucro_projetado_conversao: number; roi_projetado_conversao: number | null; } export interface ResultadoSimulacaoConversaoScpConsorcio extends ResultadoSimulacaoSecundarioComPerfil { modo_conversao: ResultadoModoConversaoScpConsorcio; } export declare function calcularSimulacao(input: SimulacaoInput): ResultadoSimulacao; export declare function calcularIndicadoresSecundario( input: SimulacaoSecundarioInput ): ResultadoSimulacaoSecundario; export declare function listarPerfisFluxoScpDefault(): { clients: ScpClientDefault[]; patterns: ScpFlowPatternSummary[]; }; export declare function montarFluxoClienteScp( input: MontarFluxoClienteScpInput ): MontarFluxoClienteScpOutput; export declare function simularSecundarioComPerfilScp( input: SimularSecundarioComPerfilScpInput ): ResultadoSimulacaoSecundarioComPerfil; export declare function simularModoConversaoScpConsorcio( input: SimularConversaoScpConsorcioInput ): ResultadoSimulacaoConversaoScpConsorcio;