import { MarketingData } from "../../core";
import { BaseModel } from "./Base";
import { Lead } from "./Lead";
export declare enum PaymentStatus {
    DRAFT = "draft",
    PENDING = "pending",
    COMPLETED = "completed",
    FAILED = "failed",
    REFUNDED = "refunded",
    CANCELLED = "cancelled",
    AUTHORIZED = "authorized"
}
export declare enum ProductType {
    VEHICLE_DEPOSIT = "vehicle_deposit",
    VALUATION_CERTIFICATE = "valuation_certificate"
}
export declare class Payment extends BaseModel {
    userId?: string;
    leadId?: string;
    lead?: Lead;
    amount: number;
    currency: string;
    status: PaymentStatus;
    productType: ProductType;
    stripePaymentIntentId: string | null;
    stripeCheckoutSessionId: string | null;
    stripeClientSecret: string | null;
    stripeRefundId: string | null;
    failureReason: string | null;
    failureCode: string | null;
    failureMessage: string | null;
    declineCode: string | null;
    networkStatus: string | null;
    errorType: string | null;
    rawErrorResponse: Record<string, never> | null;
    paymentDate: Date | null;
    lastAttemptDate: Date | null;
    retryCount: number | null;
    usedPromoCodeId: string | null;
    discountedAmount?: number | null;
    marketing?: MarketingData | null;
    clientPoBox?: string | null;
    clientTrn?: string | null;
    clientEmirate?: string | null;
}
