import type { ComponentProps } from 'react';
import type { $Values, Optional } from 'utility-types';
import type { BulletColorConfig } from './utils/color';
import { ChartType } from '..';
import type { Spec } from '../../specs/spec_type';
import { SpecType } from '../../specs/spec_type';
import type { SFProps } from '../../state/spec_factory';
import type { ValueFormatter } from '../../utils/common';
import type { GenericDomain } from '../../utils/domain';
/** @public */
export interface BulletDatum {
    title: string;
    subtitle?: string;
    value: number;
    target?: number;
    domain: GenericDomain;
    niceDomain?: boolean;
    /**
     * Approximate number of ticks to be returned. Must be greater than 0.
     *
     * Or
     *
     * Function that returns the exact ticks to use, this if you pass bad ticks we will not be able to help you!
     * Sort order must match the direction of the domain.
     *
     * Defaults to auto ticks based on length
     *
     * See https://d3js.org/d3-scale/linear#linear_ticks
     */
    ticks?: number | number[] | ((domain: GenericDomain) => number[]);
    syncCursor?: boolean;
    valueFormatter: ValueFormatter;
    targetFormatter?: ValueFormatter;
    tickFormatter: ValueFormatter;
}
/** @public */
export declare const BulletSubtype: Readonly<{
    vertical: "vertical";
    horizontal: "horizontal";
    /**
     * This bullet subtype is not yet fully supported
     * See https://github.com/elastic/elastic-charts/issues/2200
     * @alpha
     */
    circle: "circle";
    halfCircle: "half-circle";
    twoThirdsCircle: "two-thirds-circle";
}>;
/** @public */
export type BulletSubtype = $Values<typeof BulletSubtype>;
/** @public */
export interface BulletValueLabels {
    active: string;
    value: string;
    target: string;
}
/** @alpha */
export interface BulletSpec extends Spec {
    specType: typeof SpecType.Series;
    chartType: typeof ChartType.Bullet;
    data: (BulletDatum | undefined)[][];
    subtype: BulletSubtype;
    tickSnapStep?: number;
    colorBands?: BulletColorConfig;
    valueLabels?: Optional<BulletValueLabels>;
}
declare const buildProps: import("../../state/spec_factory").BuildProps<BulletSpec, "chartType" | "specType", never, "valueLabels" | "tickSnapStep" | "colorBands", "id" | "data" | "subtype">;
/**
 * Add Goal spec to chart
 * @alpha
 */
export declare const Bullet: (props: SFProps<BulletSpec, keyof (typeof buildProps)["overrides"], keyof (typeof buildProps)["defaults"], keyof (typeof buildProps)["optionals"], keyof (typeof buildProps)["requires"]>) => null;
/** @public */
export type BulletProps = ComponentProps<typeof Bullet>;
export {};
//# sourceMappingURL=spec.d.ts.map