export type InvoiceItem = { description: string; quantity: number; unitPrice: number; taxPercent: number; discountPercent?: number; }; export declare function round(value: number, decimals?: number): number; /** * Calcula os totais financeiros de um documento de faturação * em conformidade com as regras fiscais da AGT / SAFT. * * Regras aplicadas: * - O desconto é percentual e reduz a base tributável * - O imposto é calculado sobre o valor líquido (após desconto) * - O cálculo é feito item a item * - Arredondamento fiscal a 2 casas decimais (ROUND_HALF_UP) * - grossTotal = netTotal + taxPayable * * @param {InvoiceItem[]} items * Lista de itens da fatura. * * Cada item deve conter: * - quantity: Quantidade faturada * - unitPrice: Preço unitário * - taxPercent: Parcentagem da Taxa de imposto (ex: 14 para IVA) * - discountPercent (opcional): Percentagem de desconto aplicada ao item * * @returns * Totais do documento: * - netTotal: Total líquido sem impostos * - taxPayable: Total de impostos a pagar * - grossTotal: Total bruto do documento * * @example * const totals = calculateDocumentTotals([ * { quantity: 1, unitPrice: 100000, taxPercent: 14, discountPercent: 10 }, * { quantity: 2, unitPrice: 50000, taxPercent: 14 } * ]) * * // Resultado: * // { * // netTotal: 180000, * // taxPayable: 25200, * // grossTotal: 205200 * // } */ export declare function calculateDocumentTotals(items: InvoiceItem[]): { netTotal: number; taxPayable: number; grossTotal: number; };