import { OrderStatus, TransactionBaseService } from "@medusajs/medusa";
type CustomersHistory = {
    customerCount: string;
    date: string;
};
export type CustomersHistoryResult = {
    dateRangeFrom?: number;
    dateRangeTo?: number;
    dateRangeFromCompareTo?: number;
    dateRangeToCompareTo?: number;
    current: CustomersHistory[];
    previous: CustomersHistory[];
};
type CustomersCounts = {
    dateRangeFrom?: number;
    dateRangeTo?: number;
    dateRangeFromCompareTo?: number;
    dateRangeToCompareTo?: number;
    current: number;
    previous: number;
};
type Distributions = {
    returnCustomerRate?: number;
    orderOneTimeFrequency?: number;
    orderRepeatFrequency?: number;
};
type CustomersOrdersDistribution = {
    dateRangeFrom?: number;
    dateRangeTo?: number;
    dateRangeFromCompareTo?: number;
    dateRangeToCompareTo?: number;
    current: Distributions;
    previous: Distributions;
};
type CustomersRetentionRate = {
    dateRangeFrom?: number;
    dateRangeTo?: number;
    dateRangeFromCompareTo?: number;
    dateRangeToCompareTo?: number;
    current: number;
    previous: number;
};
export default class CustomersAnalyticsService extends TransactionBaseService {
    private readonly customerService;
    private readonly orderService;
    constructor(container: any);
    getHistory(from?: Date, to?: Date, dateRangeFromCompareTo?: Date, dateRangeToCompareTo?: Date): Promise<CustomersHistoryResult>;
    getNewCount(from?: Date, to?: Date, dateRangeFromCompareTo?: Date, dateRangeToCompareTo?: Date): Promise<CustomersCounts>;
    getNumberOfReturningCustomers(): Promise<number>;
    getRepeatCustomerRate(orderStatuses: OrderStatus[], from?: Date, to?: Date, dateRangeFromCompareTo?: Date, dateRangeToCompareTo?: Date): Promise<CustomersOrdersDistribution>;
    getCumulativeHistory(from?: Date, to?: Date, dateRangeFromCompareTo?: Date, dateRangeToCompareTo?: Date): Promise<CustomersHistoryResult>;
    getRetentionRate(orderStatuses: OrderStatus[], from?: Date, to?: Date, dateRangeFromCompareTo?: Date, dateRangeToCompareTo?: Date): Promise<CustomersRetentionRate>;
}
export {};
