/** Método de pago configurable por org (el catálogo NO se hardcodea en el SDK). */ export interface PaymentMethodOption { id: string; label: string; /** Efectivo: admite recibir de más y devolver cambio. */ cash?: boolean; requiresReference?: boolean; requiresAccount?: boolean; /** Tope por método (saldo de cuenta de cliente, monedero). */ maxAmount?: number; /** Cuentas/cajas destino elegibles (requiresAccount). */ accounts?: Array<{ id: string; label: string; }>; } export interface PaymentTender { key: string; method: string; amount: number; reference?: string; account_id?: string; } export interface PaymentSummary { total: number; paid: number; /** Lo que falta por cobrar (>= 0). */ remaining: number; /** Cambio a entregar: exceso cubierto por efectivo (>= 0). */ change: number; /** Exceso en métodos no-efectivo (no se puede devolver): error. */ overpaid: number; settled: boolean; } export declare function newTender(method: string, amount?: number): PaymentTender; export declare function summarizePayment(total: number, tenders: PaymentTender[], methods: PaymentMethodOption[]): PaymentSummary; export interface PaymentValidation { /** Errores por renglón de pago `"<índice>."`. */ errors: Record; /** Error general. */ form?: string; valid: boolean; } export interface PaymentPolicy { /** Permite cobro parcial (anticipo/abono). Default false. */ allowPartial?: boolean; } export declare function validatePayment(total: number, tenders: PaymentTender[], methods: PaymentMethodOption[], policy?: PaymentPolicy): PaymentValidation; /** Payload hacia el backend: montos reales; el cambio no es un pago. */ export declare function serializePayment(tenders: PaymentTender[], methods: PaymentMethodOption[], total: number): { payments: { account_id?: string | undefined; reference?: string | undefined; method: string; amount: number; }[]; paid: number; change: number; remaining: number; }; //# sourceMappingURL=payment.d.ts.map