import { OnModuleInit } from '@nestjs/common';
import Stripe from 'stripe';
import { PaymentGateway } from '../payment-gateway.interface';
import { Plan } from 'src/entities/plan.entity';
import { Repository } from 'typeorm';
import { Users } from 'src/entities/users.entity';
import { Subscription } from 'src/entities/subscription.entity';
import { SubscriptionHistory } from 'src/entities/subscription-history.entity';
import { CampaignPayment } from 'src/entities/campaign_payment.entity';
import { CampaignPaymentHistory } from 'src/entities/campaign_payment_history.entity';
import { EncryptionService } from '../../encryption/encryption.service';
import { SendMailService } from 'src/common/config/send-mail.service';
import { PaymentRepository } from 'src/modules/payment/payment.reporitory';
import { Card } from 'src/entities/card.entity';
export declare class StripeServices implements OnModuleInit, PaymentGateway {
    private encryptionService;
    private sendMailService;
    private paymentRepository;
    private Users;
    private Plan;
    private Subscription;
    private SubscriptionHistory;
    private CampaignPayment;
    private CampaignPaymentHistory;
    private Card;
    private stripe;
    private s3;
    s3Config: {};
    constructor(encryptionService: EncryptionService, sendMailService: SendMailService, paymentRepository: PaymentRepository, Users: Repository<Users>, Plan: Repository<Plan>, Subscription: Repository<Subscription>, SubscriptionHistory: Repository<SubscriptionHistory>, CampaignPayment: Repository<CampaignPayment>, CampaignPaymentHistory: Repository<CampaignPaymentHistory>, Card: Repository<Card>);
    onModuleInit(): Promise<void>;
    createProduct(name: string, description: string): Promise<Stripe.Response<Stripe.Product>>;
    updateProduct(productId: string, name: string, description: string): Promise<Stripe.Response<Stripe.Product>>;
    archiveProduct(productId: string, status: any): Promise<Stripe.Response<Stripe.Product>>;
    createPrice(productId: string, amount: number, currency: string, interval: string): Promise<Stripe.Response<Stripe.Price>>;
    saveCard(source_id: string, metadata?: Record<string, any>): Promise<{
        card_id: string;
        response: Stripe.Response<Stripe.PaymentMethod>;
        meta: any;
    } | {
        card_id: any;
        response: any;
        meta: {
            message: any;
        };
    }>;
    createSubscription(customerId: string, priceId: string, payment_method_id: string, metadata?: Record<string, any>): Promise<{
        response: {
            subscriptionId: string;
            clientSecret: string;
            requiresAction: boolean;
        };
        status: boolean;
    } | {
        response: Stripe.Response<Stripe.Subscription>;
        status: boolean;
    }>;
    createCustomer(user: any): Promise<string>;
    createCheckoutSession(customerId: string, priceId: string, metadata?: Record<string, any>): Promise<string>;
    subscriptionUpdateConfirm(customerId: string, subscriptionId: string, subscriptionItemId: string, priceId: string): Promise<string>;
    subscriptionSchedules(customerId: string, priceId: string, payment_method_id: string, start_date: string, metadata?: Record<string, any>): Promise<{
        response: Stripe.Response<Stripe.SubscriptionSchedule>;
        status: boolean;
    }>;
    cancelSubscriptionSchedule(scheduleId: string): Promise<{
        response: boolean;
    }>;
    cancelSubscription(subscriptionId: string): Promise<{
        response: boolean;
    }>;
    deletePaymentMethod(paymentMethodId: string): Promise<{
        response: boolean;
    }>;
    webhook(request: any): Promise<boolean>;
    subscriptionSchedulesCanceled(subscriptionScheduleCanceled: any): Promise<void>;
    subscriptionScheduleCreated(subscriptionScheduleCreated: any): Promise<void>;
    sleep(ms: any): Promise<unknown>;
    generateReceiptNumber(): Promise<string>;
    chargeSucceed(charge: any): Promise<boolean>;
    checkPaymentStatus(id: any): Promise<void>;
    createInvoiceAndUpload(paymentPdf: any): Promise<{
        fileName: string;
    }>;
    chargeFailed(charge: any): Promise<boolean>;
    paymentSucceeded(invoice: any): Promise<void>;
    paymentFailed(invoice: any): Promise<void>;
    saveSubscriptionBk(subscriptionCreated: any): Promise<boolean>;
    saveSubscription(subscription: any, from: string): Promise<void>;
    savePaymentMethod(paymentMethodId: any, authUser: any): Promise<void>;
    clientSecret(user: any): Promise<{
        client_secret: string;
    }>;
    paymentIntents(amount: number, currency: string, cardToken: string, customerId?: string, metadata?: Record<string, any>): Promise<{
        response: {
            paymentIntent: {
                clientSecret: string;
                requiresAction: boolean;
                id: string;
            };
            status: boolean;
            charge?: undefined;
            error?: undefined;
        };
    } | {
        response: {
            paymentIntent: Stripe.Response<Stripe.PaymentIntent>;
            status: boolean;
            charge?: undefined;
            error?: undefined;
        };
    } | {
        response: {
            charge: any;
            error: any;
            status: boolean;
            paymentIntent?: undefined;
        };
    }>;
    refundPayment(chargeId: string): Promise<false | Stripe.Response<Stripe.Refund>>;
    billingPortal(customerId: string): Promise<string>;
    getInvoiceLink(invoiceId: string): Promise<string>;
    reactivateSubscription(subscriptionId: any, startDate: any, id: any): Promise<{
        status: boolean;
        response: Stripe.Response<Stripe.Subscription>;
        message: string;
    } | {
        status: boolean;
        response: any;
        message: any;
    }>;
    updateCustomerBillingPortal(products: any): Promise<void>;
}
