import { ConfigService } from "@nestjs/config";
import { InvoiceStatus, Prisma } from "@prisma/client";
import { PrismaService } from "../prisma/prisma.service";
import type { InvoiceDto } from "./dto/invoice.dto";
interface GenerateOptions {
    period?: string;
    merchantId?: string;
}
export interface GenerationResult {
    generated: InvoiceDto[];
    skipped: {
        merchantId: string;
        reason: string;
    }[];
}
export declare class InvoiceService {
    private readonly prisma;
    private readonly config?;
    private readonly logger;
    constructor(prisma: PrismaService, config?: ConfigService | undefined);
    generate(opts?: GenerateOptions): Promise<GenerationResult>;
    list(filters: {
        status?: InvoiceStatus;
        period?: string;
        merchantId?: string;
        limit?: number;
        cursor?: string;
    }): Promise<{
        data: InvoiceDto[];
        nextCursor: string | null;
    }>;
    findOne(id: string): Promise<InvoiceDto>;
    markPaid(id: string): Promise<InvoiceDto>;
    private generateForMerchant;
    private toDto;
    private previousPeriod;
    private isCycleDue;
    private cycleRange;
    private createSelfBillingIntent;
    onIntentApproved(intentId: string, metadata: Prisma.JsonValue): Promise<void>;
}
export {};
