import { type IInsightDefinition, type ISortItem } from "@gooddata/sdk-model";
import { type IBucketItem, type IBucketOfFun, type IExtendedReferencePoint, type IUiConfig } from "../../../interfaces/Visualization.js";
/**
 * Distributes measures between SIZE and COLOR buckets based on user preferences.
 * Primary measures go to SIZE, secondary measures go to COLOR.
 * If no preference is set, distributes all measures fairly between both buckets.
 *
 * @param buckets - All buckets from the reference point
 * @param uiConfig - UI configuration containing bucket item limits
 * @returns Object with sizeMeasures and colorMeasures arrays
 * @internal
 */
export declare function distributeMeasures(buckets: IBucketOfFun[], uiConfig: IUiConfig): {
    sizeMeasures: IBucketItem[];
    colorMeasures: IBucketItem[];
};
/**
 * Selects measures for a bucket, applying limits and excluding already-assigned measures.
 *
 * @param preferredMeasures - Measures explicitly assigned to this bucket
 * @param allMeasures - All available measures
 * @param excludeMeasures - Measures already assigned to another bucket
 * @param bucketName - Name of the bucket (for looking up limits)
 * @param uiConfig - UI configuration containing bucket item limits
 * @returns Filtered and limited measures array
 * @internal
 */
export declare function selectMeasuresForBucket(preferredMeasures: IBucketItem[], allMeasures: IBucketItem[], excludeMeasures: IBucketItem[], bucketName: string, uiConfig: IUiConfig): IBucketItem[];
/**
 * Creates the final bucket configuration with location, size, color, and segment buckets.
 *
 * @param buckets - All buckets from the reference point
 * @param sizeMeasures - Measures to place in SIZE bucket
 * @param colorMeasures - Measures to place in COLOR bucket
 * @param uiConfig - UI configuration containing bucket item limits
 * @returns Array of configured buckets
 * @internal
 */
export declare function createConfiguredBuckets(buckets: IBucketOfFun[], sizeMeasures: IBucketItem[], colorMeasures: IBucketItem[], uiConfig: IUiConfig): IBucketOfFun[];
/**
 * Extracts location attribute items from buckets. Only attributes with locationDisplayFormRef are valid.
 *
 * @param buckets - All buckets from the reference point
 * @param uiConfig - UI configuration containing bucket item limits
 * @returns Filtered location items
 * @internal
 */
export declare function getLocationItems(buckets: IBucketOfFun[], uiConfig: IUiConfig): IBucketItem[];
/**
 * Extracts segment attribute items from buckets.
 * Excludes location attributes and date attributes when location is present.
 *
 * @param buckets - All buckets from the reference point
 * @returns Filtered segment items (max 1)
 * @internal
 */
export declare function getSegmentItems(buckets: IBucketOfFun[]): IBucketItem[];
/**
 * Checks if clustering should be enabled based on bucket configuration.
 * Clustering is enabled only when there's a location but no measures or segments.
 *
 * @param buckets - All buckets from the reference point
 * @returns True if clustering should be enabled
 * @internal
 */
export declare function shouldEnableClustering(buckets: IBucketOfFun[]): boolean;
/**
 * Removes arithmetic and derived measures from the reference point.
 * Geo pushpin charts don't support these measure types.
 *
 * @param extendedReferencePoint - The reference point to sanitize
 * @returns Sanitized reference point without arithmetic or derived measures
 * @internal
 */
export declare function sanitizeMeasures(extendedReferencePoint: IExtendedReferencePoint): IExtendedReferencePoint;
/**
 * Creates sort configuration for the geo pushpin chart.
 * Sorts by segment attribute when present (2nd attribute after location).
 *
 * @param insight - The insight definition
 * @returns Array of sort items (empty if no segment attribute)
 * @internal
 */
export declare function createSortForSegment(insight: IInsightDefinition): ISortItem[];
//# sourceMappingURL=geoPushpinBucketHelper.d.ts.map