import { CommonService } from 'src/common/common.service';
import { ModelsService } from 'src/models/models.service';
import { ConfigService } from '@nestjs/config';
import { Types } from 'mongoose';
import { PlanCreateDto } from 'src/subscritpion/dto/plan.dto';
import { AddBankAccountDto } from 'src/bank/dto/bank.dto';
export declare class StripeService {
    private readonly Model;
    private readonly CommonService;
    private readonly ConfigService;
    private readonly stripeClient;
    private webhookSecret;
    constructor(Model: ModelsService, CommonService: CommonService, ConfigService: ConfigService);
    createPaymentIntent(paymentIntentObj: any): Promise<{
        client_secret: any;
        ephemeralKey: any;
        customer: any;
        payment_intent_id: any;
        amount: number;
    }>;
    createCheckoutSession(params: {
        customer_id: string;
        price_id?: string;
        amount?: number;
        currency?: string;
        mode: 'subscription' | 'payment';
        success_url: string;
        cancel_url: string;
        metadata?: any;
    }): Promise<any>;
    handleCheckoutSessionCompleted(session: any): Promise<void>;
    createEphemeralKey(stripe_customer_id: any): Promise<any>;
    handleWebhook(headers: any, body: any): Promise<any>;
    handlePaymentIntentSucceeded(paymentIntent: any): Promise<void>;
    handlePaymentIntentFailed(paymentIntent: any): Promise<void>;
    refundPayment(paymentId: string): Promise<any>;
    createPlan(createDto: PlanCreateDto): Promise<{
        product: any;
        price: any;
    }>;
    createCustomer(name: string, countryCode: string, phone: string): Promise<any>;
    createNewSubscription(operatorObjectId: Types.ObjectId, customer_id: string, plan: any): Promise<{
        client_secret: any;
        amount: number;
        subscription_id: unknown;
        is_upgraded: boolean;
        is_downgraded: boolean;
        ephemeralKey: any;
    }>;
    extractPaymentFromInvoice(invoice: any): {
        payment_intent_id: any;
        client_secret: any;
        amount: number;
    };
    private computeExpireAt;
    ensureStripeCustomer(user_id: Types.ObjectId): Promise<any>;
    handleSubscriptionCreated(dataObject: any): Promise<void>;
    handleInvoicePaymentSucceeded(dataObject: any): Promise<void>;
    handleInvoicePaymentFailed(dataObject: any): Promise<void>;
    handleSubscriptionDeleted(dataObject: any): Promise<void>;
    createConnectedAccount(email: string): Promise<any>;
    createAccountOnStripe(body: AddBankAccountDto, user: any): Promise<{
        account: any;
        bank: any;
        file: any;
    }>;
    withdrawMoney(): Promise<any>;
    uploadDoc(file: any): Promise<any>;
    createBankToken(body: AddBankAccountDto, name: string): Promise<any>;
    AddAccount(body: any, bank_token_id: string, user: any, file_id: any): Promise<any>;
    uploadStripeDoc(file_url: any): Promise<any>;
    createPayout(stripe_account_id: string, amount: number, currency: string): Promise<any>;
    cancelSubscription(stripe_subscription_id: string): Promise<any>;
    reactivateSubscription(stripe_subscription_id: string): Promise<any>;
    upgradeSubscription(stripe_subscription_id: string, new_price_id: string): Promise<any>;
    downgradeSubscription(stripe_subscription_id: string, new_price_id: string, customer_id: string): Promise<{
        schedule: any;
        current_period_end: any;
    }>;
    isSubscriptionActive(stripe_subscription_id: string): Promise<boolean>;
    handleSubscriptionUpdated(dataObject: any): Promise<void>;
    getStripeSubscription(subId: string): Promise<any>;
    releaseSubscriptionSchedule(scheduleId: string): Promise<any>;
}
