import { PrismaService } from "../../../core/database/prisma/prisma.service";
import { Prisma, PaymentDirection, PaymentMethod, PaymentRelatedType, PaymentStatus, PreDelContractStatus } from '@prisma/client';
export interface CreatePaymentInput {
    paymentNo: string;
    relatedType: PaymentRelatedType;
    relatedId: string;
    robotUnitId?: string;
    direction: PaymentDirection;
    amount: number;
    currencyCode: string;
    paymentMethod?: PaymentMethod;
    paymentStatus?: PaymentStatus;
    preDelContractStatus?: PreDelContractStatus;
    paidAt?: Date | string;
    sapClearingDocNo?: string;
    depositTransferFormAttachmentId?: string;
    depositTransferContractAttachmentId?: string;
}
export declare class PaymentService {
    private readonly prisma;
    private readonly logger;
    constructor(prisma: PrismaService);
    create(input: CreatePaymentInput, userId: string, organizationId: string): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        version: number;
        amount: Prisma.Decimal;
        currencyCode: string;
        robotUnitId: string | null;
        direction: import("@prisma/client").$Enums.PaymentDirection;
        paymentStatus: import("@prisma/client").$Enums.PaymentStatus | null;
        relatedType: import("@prisma/client").$Enums.PaymentRelatedType;
        relatedId: string;
        paymentNo: string;
        sapClearingDocNo: string | null;
        paymentMethod: import("@prisma/client").$Enums.PaymentMethod | null;
        preDelContractStatus: import("@prisma/client").$Enums.PreDelContractStatus | null;
        paidAt: Date | null;
        depositTransferFormAttachmentId: string | null;
        depositTransferContractAttachmentId: string | null;
    }>;
    findAll(q: {
        relatedType?: PaymentRelatedType;
        relatedId?: string;
        robotUnitId?: string;
        direction?: PaymentDirection;
        status?: PaymentStatus;
        page?: number;
        limit?: number;
    }): Promise<{
        items: {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            deletedAt: Date | null;
            organizationId: string;
            createdById: string;
            version: number;
            amount: Prisma.Decimal;
            currencyCode: string;
            robotUnitId: string | null;
            direction: import("@prisma/client").$Enums.PaymentDirection;
            paymentStatus: import("@prisma/client").$Enums.PaymentStatus | null;
            relatedType: import("@prisma/client").$Enums.PaymentRelatedType;
            relatedId: string;
            paymentNo: string;
            sapClearingDocNo: string | null;
            paymentMethod: import("@prisma/client").$Enums.PaymentMethod | null;
            preDelContractStatus: import("@prisma/client").$Enums.PreDelContractStatus | null;
            paidAt: Date | null;
            depositTransferFormAttachmentId: string | null;
            depositTransferContractAttachmentId: string | null;
        }[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
    }>;
    findOne(id: string): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        version: number;
        amount: Prisma.Decimal;
        currencyCode: string;
        robotUnitId: string | null;
        direction: import("@prisma/client").$Enums.PaymentDirection;
        paymentStatus: import("@prisma/client").$Enums.PaymentStatus | null;
        relatedType: import("@prisma/client").$Enums.PaymentRelatedType;
        relatedId: string;
        paymentNo: string;
        sapClearingDocNo: string | null;
        paymentMethod: import("@prisma/client").$Enums.PaymentMethod | null;
        preDelContractStatus: import("@prisma/client").$Enums.PreDelContractStatus | null;
        paidAt: Date | null;
        depositTransferFormAttachmentId: string | null;
        depositTransferContractAttachmentId: string | null;
    }>;
    markPaid(id: string, paidAt: Date | string, userId: string): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        version: number;
        amount: Prisma.Decimal;
        currencyCode: string;
        robotUnitId: string | null;
        direction: import("@prisma/client").$Enums.PaymentDirection;
        paymentStatus: import("@prisma/client").$Enums.PaymentStatus | null;
        relatedType: import("@prisma/client").$Enums.PaymentRelatedType;
        relatedId: string;
        paymentNo: string;
        sapClearingDocNo: string | null;
        paymentMethod: import("@prisma/client").$Enums.PaymentMethod | null;
        preDelContractStatus: import("@prisma/client").$Enums.PreDelContractStatus | null;
        paidAt: Date | null;
        depositTransferFormAttachmentId: string | null;
        depositTransferContractAttachmentId: string | null;
    }>;
}
