import mongoose from "mongoose";
import { SUBSCRIPTIONS_ERROR_TYPES } from "./subscriptions.constant";
export type TAIModel = string;
export interface ISubscription {
    _id: mongoose.Schema.Types.ObjectId;
    user: string | mongoose.Schema.Types.ObjectId;
    aiModel: TAIModel;
    plan: 'free' | 'beginer' | 'standard' | 'premium';
    type: null | 'monthly' | 'yearly';
    startDate: Date;
    endDate: Date | null;
    queryLimit: number;
    imageLimit: number;
    softImageLimit: number;
    fileLimit: number;
    status: 'active' | 'inactive' | 'suspended' | 'cancelled' | 'expired' | 'pending';
    lastResetDate?: Date;
    payMeSubscriptionId?: string;
    isCancelRequested?: boolean;
    enabledImageGeneration: {
        gpt: boolean;
        claude: boolean;
        gemini: boolean;
    };
    enabledRealtimeSearch: {
        gpt: boolean;
        claude: boolean;
        gemini: boolean;
    };
    isPromptEnhancerEnabled: boolean;
    lastResetAt?: Date;
    imageGenerationLimits: {
        allModels: number;
        minimax: number;
        fluxSchnell: number;
    };
}
export type TSubscriptionError = keyof typeof SUBSCRIPTIONS_ERROR_TYPES;
