import { ModelService } from '../model/model.service';
import { CreateOfferDto } from './dto/create-offer.dto';
import { UpdateOfferDto } from './dto/update-offer.dto';
import { Types } from 'mongoose';
export declare class OfferService {
    private readonly model;
    constructor(model: ModelService);
    create(salonId: string, dto: CreateOfferDto): Promise<import("mongoose").Document<unknown, {}, import("../model/schemas/offer.schema").Offer, {}, {}> & import("../model/schemas/offer.schema").Offer & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }>;
    findAll(salonId?: string): Promise<(import("mongoose").FlattenMaps<import("../model/schemas/offer.schema").Offer> & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    })[]>;
    findAllByClientId(clientId: string, currentDate?: Date): Promise<{
        stats: {
            totalSpend: any;
            appointmentCount: any;
        };
        offers: (import("mongoose").FlattenMaps<import("../model/schemas/offer.schema").Offer> & Required<{
            _id: Types.ObjectId;
        }> & {
            __v: number;
        })[];
    }>;
    findOne(id: string): Promise<import("mongoose").FlattenMaps<import("../model/schemas/offer.schema").Offer> & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }>;
    update(id: string, dto: UpdateOfferDto): Promise<import("mongoose").Document<unknown, {}, import("../model/schemas/offer.schema").Offer, {}, {}> & import("../model/schemas/offer.schema").Offer & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }>;
    delete(id: string): Promise<{
        message: string;
    }>;
    getApplicableOffers(clientId: string, timezone?: string): Promise<(import("mongoose").FlattenMaps<import("../model/schemas/offer.schema").Offer> & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    })[]>;
    getUpsellOffersForBookingDate({ salonId, bookingDate, windowDays, timezone, }: {
        salonId: string;
        bookingDate: string;
        windowDays?: number;
        timezone?: string;
    }): import("mongoose").Query<(import("mongoose").Document<unknown, {}, import("../model/schemas/offer.schema").Offer, {}, {}> & import("../model/schemas/offer.schema").Offer & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    })[], import("mongoose").Document<unknown, {}, import("../model/schemas/offer.schema").Offer, {}, {}> & import("../model/schemas/offer.schema").Offer & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }, {}, import("../model/schemas/offer.schema").Offer, "find", {}>;
}
