import { Count, Filter, FilterExcludingWhere, Where } from '@loopback/repository';
import { Subscription } from '../models';
import { BillingCycleRepository, PlanRepository, SubscriptionRepository } from '../repositories';
export declare class SubscriptionController {
    subscriptionRepository: SubscriptionRepository;
    planRepository: PlanRepository;
    billingCycleRepository: BillingCycleRepository;
    constructor(subscriptionRepository: SubscriptionRepository, planRepository: PlanRepository, billingCycleRepository: BillingCycleRepository);
    create(subscription: Omit<Subscription, 'id' | 'startDate' | 'endDate'>): Promise<Subscription>;
    private _unitMap;
    count(where?: Where<Subscription>): Promise<Count>;
    find(filter?: Filter<Subscription>): Promise<Subscription[]>;
    expireSoonSubscription(filter?: Filter<Subscription>): Promise<{
        id: string;
        daysRemainingToExpiry: number;
        subscriberId: string;
    }[]>;
    expiredSubscription(dayCount: number, filter?: Filter<Subscription>): Promise<{
        subscriptionId: string;
        subscriberId: string;
    }[]>;
    updateAll(subscription: Subscription, where?: Where<Subscription>): Promise<Count>;
    findById(id: string, filter?: FilterExcludingWhere<Subscription>): Promise<Subscription>;
    updateById(id: string, subscription: Subscription): Promise<void>;
    replaceById(id: string, subscription: Subscription): Promise<void>;
    deleteById(id: string): Promise<void>;
}
