import { ETelco } from 'src/enums/telco.enum';
import { EServiceKey, ETransactionStatus } from 'src/modules/product/product.enum';
export declare enum EDashboardGranularity {
    day = "day",
    week = "week",
    month = "month"
}
export declare class DashboardQueryDTO {
    dateFrom?: string;
    dateTo?: string;
    granularity?: EDashboardGranularity;
    telco?: ETelco;
    serviceKey?: EServiceKey;
    status?: ETransactionStatus;
    clientId?: string;
    limit?: number;
    include?: string;
}
export interface IDashboardRange {
    dateFrom: string;
    dateTo: string;
}
export interface IDashboardSummary {
    totalTransactions: number;
    totalSuccess: number;
    totalFailed: number;
    totalPending: number;
    successRate: number;
    failureRate: number;
    totalRevenue: number;
    totalVolume: number;
    discountImpact: number;
    avgTransactionValue: number;
}
export interface IDashboardComparison {
    previous: IDashboardSummary;
    change: Partial<Record<keyof IDashboardSummary, number | null>>;
}
export interface IDashboardTimeseriesPoint {
    date: string;
    revenue: number;
    volume: number;
    successCount: number;
    totalCount: number;
}
export interface IDashboardBreakdownItem {
    label: string;
    revenue: number;
    volume: number;
    successCount: number;
    totalCount: number;
}
export interface IDashboardClientBreakdownItem extends IDashboardBreakdownItem {
    clientId: string | null;
    clientName: string | null;
}
export interface IDashboardBreakdowns {
    byTelco: IDashboardBreakdownItem[];
    byServiceKey: IDashboardBreakdownItem[];
    topClients?: IDashboardClientBreakdownItem[];
}
export interface IDashboardRecentTransaction {
    ref: string;
    telco: ETelco;
    serviceKey: EServiceKey;
    price: number;
    walletDebitAmount: number;
    status: ETransactionStatus;
    createdAt: string;
    clientId: string | null;
    clientName: string | null;
}
export interface IDashboardAnalyticsResponse {
    range: IDashboardRange;
    summary?: IDashboardSummary;
    comparison?: IDashboardComparison;
    timeseries?: IDashboardTimeseriesPoint[];
    breakdowns?: IDashboardBreakdowns;
    recent?: IDashboardRecentTransaction[];
}
