export interface ServiceCost {
    service: string;
    amount: number;
    unit: string;
}
export interface DimensionCost {
    key: string;
    amount: number;
    unit: string;
}
export type CostDimension = 'SERVICE' | 'USAGE_TYPE' | 'OPERATION' | 'REGION' | 'LINKED_ACCOUNT' | 'RESOURCE_ID';
export interface CostExplorerOptions {
    useCache?: boolean;
}
export declare class CostExplorerClient {
    private client;
    private profile;
    private useCache;
    /** Set after each call so callers can render a "(cached, NNN seconds old)" hint. */
    lastCacheAgeSeconds: number | null;
    constructor(profile?: string, options?: CostExplorerOptions);
    /**
     * Group total cost by SERVICE for a single time period, sorted descending.
     */
    getCostByService(params: {
        start: string;
        end: string;
        granularity?: 'DAILY' | 'MONTHLY';
    }): Promise<ServiceCost[]>;
    /**
     * Group and aggregate cost across every returned time bucket for one Cost
     * Explorer dimension. Handles response pagination and caches the normalized
     * result rather than provider response envelopes.
     */
    getCostByDimension(params: {
        start: string;
        end: string;
        dimension: CostDimension;
        granularity?: 'DAILY' | 'MONTHLY';
        filter?: unknown;
    }): Promise<DimensionCost[]>;
    /** Total unblended cost per day over a window (for the spend trend chart). */
    getDailyTotals(params: {
        start: string;
        end: string;
    }): Promise<number[]>;
}
