import { BillingPeriodRepository } from '../../repository/billingPeriod/BillingPeriodRepository';
import { IFeaturesRepository } from '../../../../flags/features.repository.interface';
import { BillingPeriod } from '../../../../../prisma/enums';
import { Logger } from 'tslog';
export interface BillingPeriodInfo {
    billingPeriod: BillingPeriod | null;
    subscriptionStart: Date | null;
    subscriptionEnd: Date | null;
    trialEnd: Date | null;
    isInTrial: boolean;
    pricePerSeat: number | null;
    isOrganization: boolean;
}
export interface BillingPeriodServiceDeps {
    logger?: Logger<unknown>;
    repository?: BillingPeriodRepository;
    featuresRepository?: IFeaturesRepository;
}
export declare class BillingPeriodService {
    private logger;
    private repository;
    private featuresRepository;
    constructor(deps?: BillingPeriodServiceDeps);
    isAnnualPlan(teamId: number): Promise<boolean>;
    isInTrialPeriod(teamId: number): Promise<boolean>;
    shouldApplyMonthlyProration(teamId: number): Promise<boolean>;
    shouldApplyHighWaterMark(teamId: number): Promise<boolean>;
    isMonthlyBilling(teamId: number): Promise<boolean>;
    getOrCreateBillingPeriodInfo(teamId: number): Promise<BillingPeriodInfo>;
    getBillingPeriodInfo(teamId: number): Promise<BillingPeriodInfo>;
    updateBillingPeriod(params: {
        teamId: number;
        billingPeriod: BillingPeriod;
        pricePerSeat: number;
    }): Promise<void>;
}
//# sourceMappingURL=BillingPeriodService.d.ts.map