import type { AreaXCurve } from './area-x.js'; import type { Channel, ChannelOutput, CartesianScaleBindings, ChartAreaStateStyle, ChartCurve, ChartKey, ChartMark, ChartMarkMotionOptions, ChartMarkState, VisualChannel } from './types.js'; export type ViolinPosition = number | Date; export type ViolinYCurve = AreaXCurve; export type ViolinXCurve = Pick; interface ViolinOptions extends ChartMarkMotionOptions, CartesianScaleBindings { id?: string; /** Normalized half-envelope width in the inclusive range [0, 1]. */ width: Channel; /** Full peak width in category-step units. Defaults to 0.8. */ span?: number; key?: Channel; color?: Channel; fill?: VisualChannel; fillOpacity?: number; /** Set to null to omit the envelope outline. */ stroke?: VisualChannel | null; strokeOpacity?: number; strokeWidth?: number; strokeDasharray?: string; states?: readonly ChartMarkState>[]; } export interface ViolinYOptions extends ViolinOptions { x: Channel; y: Channel; curve?: ViolinYCurve; } export interface ViolinXOptions extends ViolinOptions { x: Channel; y: Channel; curve?: ViolinXCurve; } type PositionOutput = Extract, ViolinPosition>; type CategoryOutput = Extract, ChartKey>; type ViolinYCallOptions, ChartKey | null | undefined>, TYChannel extends Channel, ViolinPosition | null | undefined>> = Omit, PositionOutput, CategoryOutput>, 'x' | 'y'> & { x: TXChannel; y: TYChannel; }; type ViolinXCallOptions, ViolinPosition | null | undefined>, TYChannel extends Channel, ChartKey | null | undefined>> = Omit, PositionOutput, CategoryOutput>, 'x' | 'y'> & { x: TXChannel; y: TYChannel; }; /** Draws vertical mirrored profiles around categorical x baselines. */ export declare function violinY, ChartKey | null | undefined>, const TYChannel extends Channel, ViolinPosition | null | undefined>, const TXScaleId extends string = 'x', const TYScaleId extends string = 'y'>(source: Iterable, options: ViolinYCallOptions & { xScale?: TXScaleId; yScale?: TYScaleId; }): ChartMark, PositionOutput, CategoryOutput, PositionOutput, TXScaleId, TYScaleId>; /** Draws horizontal mirrored profiles around categorical y baselines. */ export declare function violinX, ViolinPosition | null | undefined>, const TYChannel extends Channel, ChartKey | null | undefined>, const TXScaleId extends string = 'x', const TYScaleId extends string = 'y'>(source: Iterable, options: ViolinXCallOptions & { xScale?: TXScaleId; yScale?: TYScaleId; }): ChartMark, CategoryOutput, PositionOutput, CategoryOutput, TXScaleId, TYScaleId>; export {};