import mongoose, { Document } from 'mongoose';
import { User } from '../users/users.model';
import { TAIModel } from './subscriptions.interface';
export type SubscriptionDocument = Subscription & Document;
export declare class Payment {
    stripeId: string;
}
export declare class Feature {
    gpt: boolean;
    claude: boolean;
    gemini: boolean;
}
export declare class ImageGenerationLimits {
    allModels: number;
    minimax: number;
    fluxSchnell: number;
}
export declare class Subscription {
    user: User;
    plan: 'free' | 'premium';
    aiModel: TAIModel;
    type: null | 'monthly' | 'yearly';
    startDate: Date;
    endDate: Date;
    status: 'active' | 'inactive' | 'suspended' | 'cancelled' | 'expired' | 'pending';
    queryLimit: number;
    imageLimit: number;
    softImageLimit: number;
    fileLimit: number;
    lastResetDate: Date;
    payMeSubscriptionId: string;
    isCancelRequested: boolean;
    lastResetAt: Date;
    isPromptEnhancerEnabled: boolean;
    enabledImageGeneration: Feature;
    enabledRealtimeSearch: Feature;
    imageGenerationLimits: ImageGenerationLimits;
    createdAt: Date;
    updatedAt: Date;
}
export declare const SubscriptionSchema: mongoose.Schema<Subscription, mongoose.Model<Subscription, any, any, any, mongoose.Document<unknown, any, Subscription, any, {}> & Subscription & {
    _id: mongoose.Types.ObjectId;
} & {
    __v: number;
}, any>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, Subscription, mongoose.Document<unknown, {}, mongoose.FlatRecord<Subscription>, {}, mongoose.DefaultSchemaOptions> & mongoose.FlatRecord<Subscription> & {
    _id: mongoose.Types.ObjectId;
} & {
    __v: number;
}>;
