import { Subscription, SubscriptionDocument } from './subscriptions.model';
import mongoose, { Model } from 'mongoose';
import { IFullUser } from '../users/users.interface';
import { ISubscription, TSubscriptionError } from './subscriptions.interface';
import { IDataToReturn } from 'src/shared/language/language.interface';
import { LanguageService } from 'src/shared/language/language.service';
import { CompanyAnalyticsService } from '../company-analytics/company-analytics.service';
import { ChangeModelDto, UpdateFeatureSettingsDto } from './subscriptions.validation';
import { IImageModel } from '../image-history/image-history.interface';
import { AiModelsService } from '../app-config/ai-models/ai-models.service';
import { ConfigService } from '../app-config/config/config.service';
export declare class SubscriptionsService {
    private readonly subscriptionModel;
    private readonly languageService;
    private readonly companyAnalyticsService;
    private readonly aiModelsService;
    private readonly configService;
    private readonly logger;
    constructor(subscriptionModel: Model<Subscription>, languageService: LanguageService, companyAnalyticsService: CompanyAnalyticsService, aiModelsService: AiModelsService, configService: ConfigService);
    private getImageGenerationLimitKey;
    getAllSubscriptions(): Promise<Subscription[]>;
    getMySubscription(user: IFullUser): Promise<Subscription>;
    reduceLimits(user: IFullUser, type: 'image' | 'file' | 'text', session?: mongoose.ClientSession, imageModel?: IImageModel | 'all'): Promise<void>;
    canSendMessage(user: IFullUser, type: 'image' | 'file' | 'text', imageModel?: IImageModel): Promise<{
        canSend: boolean;
        cause: TSubscriptionError | null;
        model?: IImageModel | 'all';
    }>;
    sendSubscriptionError(user: IFullUser, language_modification: IDataToReturn, type: 'image' | 'file' | 'text', imageModel?: IImageModel): Promise<{
        canSend: boolean;
        cause: TSubscriptionError | null;
        model?: IImageModel | 'all';
    }>;
    changeSubscriptionPlan(user: IFullUser, plan: 'free' | 'premium'): Promise<mongoose.Document<unknown, {}, Subscription, {}, {}> & Subscription & {
        _id: mongoose.Types.ObjectId;
    } & {
        __v: number;
    }>;
    updateAiModel(body: ChangeModelDto, user: IFullUser): Promise<mongoose.Document<unknown, {}, Subscription, {}, {}> & Subscription & {
        _id: mongoose.Types.ObjectId;
    } & {
        __v: number;
    }>;
    togglePromptEnhancer(user: IFullUser): Promise<mongoose.Document<unknown, {}, Subscription, {}, {}> & Subscription & {
        _id: mongoose.Types.ObjectId;
    } & {
        __v: number;
    }>;
    isResetSoftLimits(subscription: ISubscription): Promise<boolean>;
    syncSubscription(subscription: SubscriptionDocument): Promise<boolean>;
    private getSubscriptionStatusFromPayme;
    updateFeatureSettings(user: IFullUser, body: UpdateFeatureSettingsDto): Promise<boolean>;
}
