import { Coordinate, Vector2 } from '@antv/coord'; import { Primitive } from '@antv/vendor/d3-array'; import { Channel } from './common'; import { Scale } from './component'; import { TransformSpec } from './transform'; export type MarkOptions = Record; export type CompositeMarkOptions = Record; export type MarkComponent = { (options?: O): Mark; props?: MarkProps; }; export type CompositeMarkComponent = { (options?: O, context?: any): CompositeMark; props?: MarkProps; }; export type MarkProps = { defaultShape?: string; defaultLabelShape?: string; channels?: Channel[]; preInference?: TransformSpec[]; postInference?: TransformSpec[]; shape?: Record; }>; composite?: boolean; interaction?: { shareTooltip?: boolean; seriesTooltip?: boolean; crosshairs?: boolean; }; }; export type Mark = CompositeMark | SingleMark; export type CompositeMark = Promise | MarkOptions[] | MarkOptions; export type SingleMark = (I: number[], scale: Record, channel: MarkChannel, coordinate: Coordinate) => [I: number[], point2d: Vector2[][], series?: number[][]]; export type MarkChannel = Record;