import { AggregationsRequestOptions, AggregationsResponse, AggregationType } from '@carto/api-client';
import { ModelQueryFactory } from './utils/create-model';
import { ModelComponentProps, ModelHookResponse, ModelProps } from './types';
export type AggregationsWidgetProps = Omit<AggregationsRequestOptions, 'aggregations'> & {
    aggregations: ({
        operation: 'custom';
        aggregationExp: string;
        alias: string;
    } | {
        column: string;
        operation: Exclude<AggregationType, 'custom'>;
        alias: string;
    })[];
};
export declare const getAggregations: ModelQueryFactory<AggregationsWidgetProps, AggregationsResponse>;
/**
 * `useAggregations` is a hook that performs multiple aggregations simultaneously on different columns in a single request.
 * `AggregationsModel` is the render-props component equivalent. Supports custom SQL aggregation expressions alongside standard operations.
 *
 * @example
 * ```tsx
 * <AggregationsModel
 *   accessToken={token}
 *   sourceId="my_source"
 *   widgetProps={{
 *     aggregations: [
 *       { column: 'revenue', operation: 'sum', alias: 'total_revenue' },
 *       { column: 'id', operation: 'count', alias: 'total_count' },
 *     ],
 *   }}
 * >
 *   {({ data }) => <MetricsDisplay data={data} />}
 * </AggregationsModel>
 * ```
 */
declare function useAggregations<P extends ModelProps<AggregationsWidgetProps, AggregationsResponse>>(props: P): ModelHookResponse<P, AggregationsResponse>;
declare function AggregationsModel<P extends ModelProps<AggregationsWidgetProps, AggregationsResponse>>(props: ModelComponentProps<AggregationsWidgetProps, AggregationsResponse, P>): React.ReactElement;
export { useAggregations, AggregationsModel };
