import type { ReactNode } from 'react';
import type { LegendColorLayerProps, LocationColorProps } from './coloring.js';
import type { Location } from './location.js';
import type { MapShape } from './shapes.js';
/**
 * Base props to configure a DotLayer.
 * @typeParam T - Object extending Location
 */
export interface DotLayerBaseProps<T extends Location> {
    /**
     * An array of location data items to be displayed in the DotLayer
     */
    data: T[];
    /**
     * The shape of the dots
     * @defaultValue 'pin'
     */
    shape?: string | MapShape | ReactNode;
    /**
     * The bearing property, which determines the rotation angle of the dots.
     * It can be a constant number or a function that calculates the bearing based on the data item
     * @defaultValue 0
     */
    bearing?: number | ((item: T) => number);
    /**
     * The background setting for the DotLayer.
     * As boolean, it toggles the visibility and sets a default color.
     * As string, it defines the background color.
     * @defaultValue false
     */
    background?: boolean | string;
    /**
     * The shapeSize property allows to edit the size of the shape, icon, emoji
     * or ReactNode passed to the shape property in pixels.
     * @defaultValue 32
     */
    shapeSize?: number;
}
/**
 * The DotLayer props
 * @typeParam T - Object extending Location
 */
export type DotLayerProps<T extends Location> = DotLayerBaseProps<T> & (LocationColorProps<T> | LegendColorLayerProps);
/** @internal */
export type InternalDotLayerProps<T extends Location> = {
    layerId: string;
} & DotLayerProps<T>;
