export declare class Charge {
    id: string;
    tenantId: string;
    contractId: string;
    clientId: string;
    createdBy: string;
    number: string;
    description: string;
    amount: number;
    discount: number;
    fine: number;
    interest: number;
    amountPaid: number;
    dueDate: string;
    paidAt: Date;
    paymentMethod: string;
    paymentReference: string;
    paymentNotes: string;
    notified7d: boolean;
    notified1d: boolean;
    notifiedOverdue: boolean;
    status: string;
    cancelledAt: Date;
    gateway: string;
    gatewayChargeId: string;
    pixCopyPaste: string;
    pixTxid: string;
    boletoUrl: string;
    boletoBarcode: string;
    cardLinkUrl: string;
    linkExpiresAt: Date;
    createdAt: Date;
    updatedAt: Date;
}
export declare class ManualPaymentDto {
    amountPaid: number;
    paymentMethod: string;
    paymentReference?: string;
    paymentNotes?: string;
    paidAt?: string;
}
export declare class GeneratePaymentLinkDto {
    method: 'pix' | 'boleto' | 'card';
    expiresInHours?: number;
}
export declare class CreateChargeDto {
    contractId?: string;
    clientId: string;
    description: string;
    amount: number;
    discount?: number;
    dueDate: string;
}
export interface PaymentGateway {
    createCharge(params: {
        externalId: string;
        amount: number;
        dueDate: string;
        customerName: string;
        customerDocument: string;
        customerEmail: string;
        description: string;
    }): Promise<{
        gatewayId: string;
        pixQrCode?: string;
        boletoUrl?: string;
        boletoCode?: string;
    }>;
    getCharge(gatewayId: string): Promise<{
        status: string;
        paidAt?: Date;
    }>;
    cancelCharge(gatewayId: string): Promise<boolean>;
}
export declare class NoopPaymentGateway implements PaymentGateway {
    createCharge(): Promise<{
        gatewayId: string;
        pixQrCode: any;
        boletoUrl: any;
    }>;
    getCharge(): Promise<{
        status: string;
    }>;
    cancelCharge(): Promise<boolean>;
}
import { Repository, DataSource } from 'typeorm';
import { MailService } from '../email/email.module';
import { FiscalService } from '../fiscal/fiscal.module';
import { VapiService } from '../vapi/vapi.module';
export declare class PaymentsService {
    private readonly chargeRepo;
    private readonly dataSource;
    private readonly mailService;
    private readonly fiscalService;
    private readonly vapiService;
    private readonly logger;
    constructor(chargeRepo: Repository<Charge>, dataSource: DataSource, mailService: MailService, fiscalService: FiscalService, vapiService: VapiService);
    private nextChargeNumber;
    create(tenantId: string, userId: string, dto: CreateChargeDto): Promise<Charge>;
    findAll(tenantId: string, filters?: {
        status?: string;
        clientId?: string;
    }): Promise<Charge[]>;
    findOne(tenantId: string, id: string): Promise<Charge>;
    registerManualPayment(tenantId: string, chargeId: string, dto: ManualPaymentDto): Promise<Charge>;
    private tryAutoInvoice;
    generatePaymentLink(tenantId: string, chargeId: string, dto: GeneratePaymentLinkDto): Promise<Charge>;
    cancel(tenantId: string, id: string): Promise<Charge>;
    markOverdue(): Promise<void>;
    generateContractCharges(): Promise<void>;
    sendPaymentNotifications(): Promise<void>;
}
export declare class PaymentsController {
    private readonly paymentsService;
    constructor(paymentsService: PaymentsService);
    create(dto: CreateChargeDto, req: any): Promise<Charge>;
    findAll(req: any, status?: string, clientId?: string): Promise<Charge[]>;
    findOne(id: string, req: any): Promise<Charge>;
    pay(id: string, dto: ManualPaymentDto, req: any): Promise<Charge>;
    generatePaymentLink(id: string, dto: GeneratePaymentLinkDto, req: any): Promise<Charge>;
    cancel(id: string, req: any): Promise<Charge>;
}
export declare class PaymentsModule {
}
