import { AxisTypes } from './components/axis/types';
import type { Types } from '@antv/f2-graphic';
type PX_FIELD_NAME = 'lineWidth' | 'lineDash' | 'x' | 'y' | 'r' | 'r0' | 'x1' | 'y1' | 'x2' | 'y2' | 'radius' | 'width' | 'height' | 'fontSize' | 'sx' | 'sy' | 'swidth' | 'sheight' | 'points' | 'shadowBlur' | 'shadowOffsetX' | 'shadowOffsetY';
type pxstr = `${number}px`;
export type px = number | pxstr | string;
export type Point = Types.Point;
export interface PxPoint {
    x: px;
    y: px;
}
export interface DataRecord {
    origin: any;
    [k: string]: any;
}
export * from '@antv/scale';
export type { AxisTypes };
type SupportPx<T> = {
    [k in keyof T]: k extends PX_FIELD_NAME ? NonNullable<T[k]> extends number ? number | pxstr : NonNullable<T[k]> extends number[] ? number[] | pxstr[] : NonNullable<T[k]> extends Types.Point[] ? PxPoint[] : T[k] : T[k];
};
export interface Style {
    width?: px;
    height?: px;
    minWidth?: px;
    minHeight?: px;
    maxWidth?: px;
    maxHeight?: px;
    left?: px;
    right?: px;
    top?: px;
    bottom?: px;
    margin?: px | px[];
    marginTop?: px;
    marginRight?: px;
    marginBottom?: px;
    marginLeft?: px;
    padding?: px | px[];
    paddingTop?: px;
    paddingRight?: px;
    paddingBottom?: px;
    paddingLeft?: px;
    flexDirection?: 'column' | 'row';
    justifyContent?: 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around';
    alignItems?: 'flex-start' | 'center' | 'flex-end' | 'stretch';
    alignSelf?: 'flex-start' | 'center' | 'flex-end' | 'stretch';
    display?: 'flex';
    flex?: number;
    flexWrap?: 'wrap' | 'nowrap';
    position?: 'relative' | 'absolute';
    backgroundColor?: string;
}
interface IntrinsicElementsProps {
    style?: Style;
    [k: string]: any;
}
export interface Ref {
    current?: any;
}
export interface Props {
    children?: any;
    [propName: string]: any;
}
export type ElementType = string | ((props: Props, context?: any) => any) | (new (props: Props, context?: any) => any);
export interface ShapeAttrs extends Partial<SupportPx<Types.ShapeAttrs>> {
    [k: string]: any;
}
export interface GroupProps extends IntrinsicElementsProps {
    attrs?: RectAttrs;
}
export type CircleAttrs = Partial<SupportPx<Types.CircleAttrs>>;
export interface CircleProps extends IntrinsicElementsProps {
    attrs?: CircleAttrs;
}
export type RectAttrs = Partial<SupportPx<Types.RectAttrs>>;
export interface RectProps extends IntrinsicElementsProps {
    attrs?: RectAttrs;
}
export type LineAttrs = Partial<SupportPx<Types.LineAttrs>>;
export interface LineProps extends IntrinsicElementsProps {
    attrs?: LineAttrs;
}
export type PolygonAttrs = Partial<SupportPx<Types.PolygonAttrs>>;
export interface PolygonProps extends IntrinsicElementsProps {
    attrs?: PolygonAttrs;
}
export type PolylineAttrs = Partial<SupportPx<Types.PolylineAttrs>>;
export interface PolylineProps extends IntrinsicElementsProps {
    attrs?: PolylineAttrs;
}
export type ArcAttrs = Partial<SupportPx<Types.ArcAttrs>>;
export interface ArcProps extends IntrinsicElementsProps {
    attrs?: ArcAttrs;
}
export type SectorAttrs = Partial<SupportPx<Types.SectorAttrs>>;
export interface SectorProps extends IntrinsicElementsProps {
    attrs?: SectorAttrs;
}
export type TextAttrs = Partial<SupportPx<Types.TextAttrs>>;
export interface TextProps extends IntrinsicElementsProps {
    attrs?: TextAttrs;
}
export type CustomAttrs = Partial<SupportPx<Types.CustomAttrs>>;
export interface CustomProps extends IntrinsicElementsProps {
    attrs?: CustomAttrs;
}
export type MarkerAttrs = Partial<SupportPx<Types.MarkerAttrs>>;
export interface MarkerProps extends IntrinsicElementsProps {
    attrs?: MarkerAttrs;
}
export type ImageAttrs = Partial<SupportPx<Types.ImageAttrs>>;
export interface ImageProps extends IntrinsicElementsProps {
    attrs?: ImageAttrs;
}
