import { OnModuleInit } from '@nestjs/common';
import { DataSource, Repository } from 'typeorm';
import { Campaign } from 'src/entities/campaign.entity';
import { Users } from 'src/entities/users.entity';
import { CampaignInfluencer } from 'src/entities/campaign_influencer.entity';
import { Draft } from 'src/entities/draft.entity';
import { DraftVersions } from 'src/entities/draft_versions.entity';
import { DraftComments } from 'src/entities/draft_comments.entity';
import { Posts } from 'src/entities/posts.entity';
import { SocialMedias } from 'src/entities/social-medias.entity';
import { SocketGateway } from 'src/common/services/socket/socket.gateway';
import { Card } from 'src/entities/card.entity';
import { CampaignPayment } from 'src/entities/campaign_payment.entity';
import { CommonService } from '../common/common.services';
import { StripeServices } from 'src/common/services/payment-gateway/stripe/stripe.service';
import { Settings } from 'src/entities/settings.entity';
import { CampaignPaymentHistory } from 'src/entities/campaign_payment_history.entity';
import { NotificationService } from 'src/common/services/notification/notification.service';
import { Notifications, Type } from 'src/entities/notifications.entity';
import { SendMailService } from "src/common/config/send-mail.service";
import { Categories } from 'src/entities/categories.entity';
import { CampaignCategory } from 'src/entities/campaign-caregories.entity';
import { CampaignRecommended } from 'src/entities/campaign_recommended.entity';
import { InfluencerCampaignRecommended } from 'src/entities/influencer_campaign_recommended.entity';
import { EncryptionService } from 'src/common/services/encryption/encryption.service';
import { InstagramServices } from 'src/common/services/instagram/instagram.service';
import { WhatsAppServices } from 'src/common/services/whatsapp/whatsapp.service';
import { CategoryTranslation } from 'src/entities/category-translations.entity';
import { CountryRecommendedCategory } from 'src/entities/country-recommended-categories.entity';
import { Countries } from 'src/entities/countries.entity';
import { CampaignCategoryCountryOrder } from 'src/entities/campaign-category-country-order.entity';
export declare class CampaignRepository implements OnModuleInit {
    private SocketGateway;
    private CommonService;
    private StripeService;
    private notificationService;
    private readonly dataSource;
    private readonly SendMailService;
    private readonly encryptService;
    private readonly instagramService;
    private readonly whatsappService;
    private Campaign;
    private Users;
    private CampaignInfluencer;
    private Notifications;
    private Draft;
    private DraftVersions;
    private DraftComments;
    private Posts;
    private SocialMedias;
    private CampaignPayment;
    private Card;
    private Settings;
    private CampaignPaymentHistory;
    private Categories;
    private CategoryTranslation;
    private CampaignCategory;
    private CampaignRecommended;
    private CountryRecommendedCategory;
    private Countries;
    private CampaignCategoryCountryOrder;
    private InfluencerCampaignRecommended;
    private s3;
    s3Config: {};
    constructor(SocketGateway: SocketGateway, CommonService: CommonService, StripeService: StripeServices, notificationService: NotificationService, dataSource: DataSource, SendMailService: SendMailService, encryptService: EncryptionService, instagramService: InstagramServices, whatsappService: WhatsAppServices, Campaign: Repository<Campaign>, Users: Repository<Users>, CampaignInfluencer: Repository<CampaignInfluencer>, Notifications: Repository<Notifications>, Draft: Repository<Draft>, DraftVersions: Repository<DraftVersions>, DraftComments: Repository<DraftComments>, Posts: Repository<Posts>, SocialMedias: Repository<SocialMedias>, CampaignPayment: Repository<CampaignPayment>, Card: Repository<Card>, Settings: Repository<Settings>, CampaignPaymentHistory: Repository<CampaignPaymentHistory>, Categories: Repository<Categories>, CategoryTranslation: Repository<CategoryTranslation>, CampaignCategory: Repository<CampaignCategory>, CampaignRecommended: Repository<CampaignRecommended>, CountryRecommendedCategory: Repository<CountryRecommendedCategory>, Countries: Repository<Countries>, CampaignCategoryCountryOrder: Repository<CampaignCategoryCountryOrder>, InfluencerCampaignRecommended: Repository<InfluencerCampaignRecommended>);
    onModuleInit(): Promise<void>;
    createCampaign(request: any): Promise<void>;
    addHotCategory(campaign: Campaign): Promise<void>;
    private resolveTargetCountries;
    applyInternationalOnlyVisibilityForInfluencer(query: any, influencerCountry?: string): any;
    applyInternationalTabHomeCountryExclusion(query: any, categoryId: string, influencerCountry?: string): Promise<any>;
    private deleteCampaignCategoryCountryOrdersForCampaign;
    getNextCountryCategoryOrder(countryId: string, categoryId: string): Promise<number>;
    getNonRecommendedCategoryIdsByCountry(countryId: string): Promise<string[]>;
    saveCampaignCategoryCountryOrders(campaign: Campaign, savedCampaignCategories: CampaignCategory[]): Promise<void>;
    saveCampaignCategory(request: any, campaign_id: string): Promise<void>;
    checkCampaignExists(id: string, authUser: any): Promise<Campaign>;
    checkUserExists(id: string): Promise<Users>;
    checkCampaignInfluencerExists(campaign_id: string, influencer_id: string): Promise<CampaignInfluencer>;
    addDraft(request: any, campaignInfluencer: any): Promise<void>;
    checkDraftExists(draft_id: string): Promise<Draft>;
    addDraftComment(draft_id: any, comment: any, authUser: any): Promise<void>;
    addPosts(request: any, campaignInfluencer: any): Promise<number>;
    uploadPostOnS3(campaign_influencer_id: any): Promise<void>;
    commonQuery(languageCode: any, countryId?: string): Promise<import("typeorm").SelectQueryBuilder<Campaign>>;
    draftCommonQuery(query: any): Promise<any>;
    campaignInfluencerCommonQuery(languageCode: string): Promise<import("typeorm").SelectQueryBuilder<Campaign>>;
    commonQueryAllCampaignInfluencer(languageCode: any): Promise<import("typeorm").SelectQueryBuilder<CampaignInfluencer>>;
    socketCampaignInfluencerDetails(id: any): Promise<void>;
    getCampaignBrandDetails(id: any): Promise<Users>;
    private applyPlaceholders;
    cometChatMessageCreate(authUser: any, type: string, metadata?: any): Promise<{
        brandMessage: string;
        influencerMessage: string;
        adminMessage: string;
    }>;
    sendCometMessage(authUser: any, template: any, groupId: any, userId: any, type?: string, metadata?: {}): Promise<void>;
    updateCometChatGroupTags(groupId: string, tag: any[], metadata?: Record<string, any>, groupDetails?: {
        name?: string;
        icon?: string;
        description?: string;
    }): Promise<void>;
    updateCometChatInfluencerGroup(influencerId: any): Promise<boolean>;
    private resolveCampaignUpdateEmailStatusKey;
    checkReceiverPreference(receiver: any): Promise<{
        whatsapp_notification: boolean;
    }>;
    private buildCampaignNotificationFrontendLink;
    private buildWhatsappNotificationLink;
    notification(receiver: any, description: any, sender?: any, redirect_type?: any, redirect_id?: any, redirect_slug?: any, metadata?: {
        campaignName: string;
        status: string;
    }, type?: Type): Promise<void>;
    checkNotificationLimit(userId: any, type: any, metadata: any): Promise<boolean>;
    checkAddDraftLimit(campaignInfluencerId: any): Promise<boolean>;
    checkChaseUpLimit(campaignInfluencerId: any): Promise<boolean>;
    checkAddDraftCommentLimit(fromUserId: any): Promise<boolean>;
    checkAddPostsLimit(metadata: any): Promise<boolean>;
    sendEmail(receiver: any, metadata: any, type: any, redirect_slug: any, redirect_id: any): Promise<void>;
    sendWhatsappNotification(receiver: any, metadata: any, description: any, redirect_slug: any, redirect_id: any): Promise<void>;
    weeklyCompletionRequestNotification(receiver: any, description: any, sender?: any, redirect_type?: any, redirect_id?: any, redirect_slug?: any, metadata?: {
        campaignName: string;
        influencerName: string;
        daysAgo: number;
    }, isEmail?: boolean): Promise<void>;
    adminNotification(description: any, sender?: any, redirect_type?: any, redirect_id?: any, redirect_slug?: any): Promise<void>;
    adminNotificationWithEmail(description: any, sender?: any, redirect_type?: any, redirect_id?: any, redirect_slug?: any): Promise<void>;
    influencerPayment(id: string, authUser: any, card_id?: string): Promise<{
        response: {
            paymentIntent: {
                clientSecret: string;
                requiresAction: boolean;
                id: string;
            };
            status: boolean;
            charge?: undefined;
            error?: undefined;
        };
    } | {
        response: {
            paymentIntent: import("stripe").Stripe.Response<import("stripe").Stripe.PaymentIntent>;
            status: boolean;
            charge?: undefined;
            error?: undefined;
        };
    } | {
        response: {
            charge: any;
            error: any;
            status: boolean;
            paymentIntent?: undefined;
        };
    } | {
        response: {
            paymentIntent: any;
            status: boolean;
            error: any;
        };
    }>;
    checkPaymentStatus(id: any): Promise<void>;
    sleep(ms: any): Promise<unknown>;
    createInvoiceAndUpload(paymentPdf: any): Promise<{
        fileName: string;
    }>;
    refundAmount(id: any): Promise<void>;
    saveInfluencerRecommendedScore(campaign_influencer_id: string, influencer_id: string): Promise<number>;
    getRecommendedInfluencer(campaignId: string, influencer_id?: string, limit?: number, offset?: number): Promise<any>;
    saveRecommendInfluencer(campaign_id: string): Promise<void>;
    getRecommendedCampaign(influencer_id: string, limit?: number, offset?: number): Promise<any>;
    saveRecommendedCampaign(influencer_id: string): Promise<void>;
    getRelatedPublicCampaignsForPreview(userId: string, filters: {
        country?: string;
        currency?: string;
        categories?: string[];
        platforms?: string[];
        isBarter?: string;
        jobPrivacy?: string;
    }, offset?: number, limit?: number): Promise<{
        items: {
            id: string;
            relevance_score: number;
        }[];
        total: number;
    }>;
    commonCampaignStatusNotificationQuery(status: string): Promise<import("typeorm").SelectQueryBuilder<CampaignInfluencer>>;
    commonCampaignBrandStatusNotificationQuery(status: string): Promise<import("typeorm").SelectQueryBuilder<CampaignInfluencer>>;
    commonCampaignInfluencerCompletedQuery(campaignId: string): Promise<boolean>;
}
