import { UsersDocument } from "src/schema/users.schema";
import { Model, Types } from "mongoose";
import { ConfigService } from "@nestjs/config";
import { EmailService } from "src/email/email.service";
import Stripe from "stripe";
import { PaymentDetailsDocument } from "src/schema/user-payment-details.schema";
import { Invoice } from "src/schema/invoice.schema";
import { AlertsService } from "src/alerts/alerts.service";
import { ResponseService } from "src/common/service/response.service";
import { Response } from "express";
export declare class StripeService {
    private userModal;
    private paymentDetailsModel;
    private invoiceModel;
    private readonly configService;
    private readonly emailService;
    private readonly alertService;
    private readonly resService;
    private stripe;
    private webhookSecret;
    private clientId;
    constructor(userModal: Model<UsersDocument>, paymentDetailsModel: Model<PaymentDetailsDocument>, invoiceModel: Model<Invoice>, configService: ConfigService, emailService: EmailService, alertService: AlertsService, resService: ResponseService);
    private sendInvoicePaidEmails;
    createConnectAccount(id: string): Promise<string>;
    createOnboardingLink(accountId: string): Promise<Stripe.Response<Stripe.AccountLink>>;
    constructWebhookEvent(payload: Buffer, signature: string): Stripe.Event;
    handleAccountUpdated(account: Stripe.Account): Promise<void>;
    disconnectAccount(userId: string): Promise<void>;
    handleAccountDisconnected(data: any): Promise<void>;
    getAccountStatusByAccountId(accountId: string): Promise<{
        stripeAccountId: string;
        stripeConnected: boolean;
        chargesEnabled: boolean;
        payoutsEnabled: boolean;
        detailsSubmitted: boolean;
        requirements: {
            currently_due: string[];
            disabled_reason: Stripe.Account.Requirements.DisabledReason | null;
        };
    }>;
    createCheckoutSession(invoiceId: string): Promise<{
        success: boolean;
        url: string | null;
    }>;
    handleCheckoutSessionCompleted(session: Stripe.Checkout.Session): Promise<{
        _id: Types.ObjectId;
        stripeSessionId: string;
    } | undefined>;
    getPaymentStatus(res: Response, sessionId: string): Promise<Response<any, Record<string, any>>>;
    private isValidEmail;
}
