import type { LineWidthsPropertyDefine } from '..';
import type { ColorPropertyDefine, ColorsPropertyDefine, LineClamp, LineDashsPropertyDefine, TextOverflow, UnderlinePropertyDefine, LineDashPropertyDefine, LineThroughPropertyDefine, PaddingsPropertyDefine, StylePropertyFunctionArg, CursorPropertyDefine, MarkedPropertyDefine, FontSizePropertyDefine, FontFamilyPropertyDefine, FontWeightPropertyDefine, FontVariantPropertyDefine, FontStylePropertyDefine, TextAlignType, TextBaselineType } from '../style-define';
import type { ThemeStyle } from '../theme';
export interface ColumnStyle {
    padding?: PaddingsPropertyDefine;
    bgColor?: ColorPropertyDefine;
    textAlign?: TextAlignType;
    textBaseline?: TextBaselineType;
    color?: ColorPropertyDefine;
    fontSize?: FontSizePropertyDefine;
    fontFamily?: FontFamilyPropertyDefine;
    fontWeight?: FontWeightPropertyDefine;
    fontVariant?: FontVariantPropertyDefine;
    fontStyle?: FontStylePropertyDefine;
    textOverflow?: TextOverflow;
    clone: () => ColumnStyle;
    linkColor?: ColorPropertyDefine;
}
export type IHeaderStyle = ColumnStyle;
export type ISortheaderSyle = IHeaderStyle;
export interface IStyleOption {
    bgColor?: ColorPropertyDefine;
    padding?: PaddingsPropertyDefine;
    textAlign?: TextAlignType;
    textBaseline?: TextBaselineType;
    color?: ColorPropertyDefine;
    strokeColor?: ColorPropertyDefine;
    fontSize?: FontSizePropertyDefine;
    fontFamily?: FontFamilyPropertyDefine;
    fontWeight?: FontWeightPropertyDefine;
    fontVariant?: FontVariantPropertyDefine;
    fontStyle?: FontStylePropertyDefine;
    textOverflow?: TextOverflow;
    borderColor?: ColorsPropertyDefine;
    borderLineWidth?: LineWidthsPropertyDefine;
    lineHeight?: number;
    underline?: UnderlinePropertyDefine;
    underlineColor?: ColorPropertyDefine;
    underlineDash?: LineDashPropertyDefine;
    underlineOffset?: number;
    lineThrough?: LineThroughPropertyDefine;
    lineThroughColor?: ColorPropertyDefine;
    lineThroughDash?: LineDashPropertyDefine;
    borderLineDash?: LineDashsPropertyDefine;
    linkColor?: ColorPropertyDefine;
    cursor?: CursorPropertyDefine;
    textStick?: boolean | 'vertical' | 'horizontal';
    textStickBaseOnAlign?: boolean;
    marked?: MarkedPropertyDefine;
}
export declare const cellStyleKeys: string[];
export interface ITextStyleOption extends IStyleOption {
    autoWrapText?: boolean;
    lineClamp?: LineClamp;
}
export interface IImageStyleOption extends IStyleOption {
    margin?: number;
}
export type ColumnStyleOption = IStyleOption | ITextStyleOption | IImageStyleOption | ProgressBarStyleOption | CheckboxStyleOption | ((styleArg: StylePropertyFunctionArg) => IStyleOption | ITextStyleOption | IImageStyleOption);
export type HeaderStyleOption = (IStyleOption & {
    textStick?: boolean | 'vertical' | 'horizontal';
}) | ITextStyleOption | IImageStyleOption | ((styleArg: StylePropertyFunctionArg) => IStyleOption | ITextStyleOption | IImageStyleOption);
export type FullExtendStyle = HeaderStyleOption & ColumnStyleOption & ThemeStyle;
export interface ProgressBarStyleOption extends IStyleOption {
    showBar?: boolean | ((args: StylePropertyFunctionArg) => boolean);
    barColor?: ColorPropertyDefine;
    barBgColor?: ColorPropertyDefine;
    barHeight?: number | string;
    barBottom?: number | string;
    barPadding?: (number | string)[];
    barPositiveColor?: ColorPropertyDefine;
    barNegativeColor?: ColorPropertyDefine;
    barAxisColor?: ColorPropertyDefine;
    barRightToLeft?: boolean;
    showBarMark?: boolean;
    barMarkPositiveColor?: ColorPropertyDefine;
    barMarkNegativeColor?: ColorPropertyDefine;
    barMarkWidth?: number;
    barMarkPosition?: 'right' | 'bottom';
    barMarkInBar?: boolean;
}
export type CheckboxStyleOption = {
    size?: number;
    spaceBetweenTextAndIcon?: number;
    checkboxStyle?: CheckboxStyle;
} & ITextStyleOption;
export type RadioStyleOption = {
    size?: number;
    spaceBetweenTextAndIcon?: number;
    spaceBetweenRadio?: number;
    radioStyle?: RadioStyle;
} & ITextStyleOption;
export type SwitchStyleOption = {
    size?: number;
    spaceBetweenTextAndCircle?: number;
    switchStyle?: SwitchStyle;
} & ITextStyleOption;
export type ButtonStyleOption = {
    buttonStyle?: ButtonStyle;
} & ITextStyleOption;
export type CheckboxStyle = {
    size?: number;
    spaceBetweenTextAndIcon?: number;
    defaultFill?: string;
    defaultStroke?: string;
    disableFill?: string;
    checkedFill?: string;
    checkedStroke?: string;
    disableCheckedFill?: string;
    disableCheckedStroke?: string;
    checkIconImage?: string;
    indeterminateIconImage?: string;
};
export type RadioStyle = {
    size?: number;
    spaceBetweenTextAndIcon?: number;
    spaceBetweenRadio?: number;
    outerRadius?: number;
    innerRadius?: number;
    defaultFill?: string;
    defaultStroke?: string;
    disableFill?: string;
    checkedFill?: string;
    checkedStroke?: string;
    disableCheckedFill?: string;
    disableCheckedStroke?: string;
};
export type SwitchStyle = {
    spaceBetweenTextAndCircle?: number;
    circleRadius?: number;
    boxWidth?: number;
    boxHeight?: number;
    checkedFill?: string;
    uncheckedFill?: string;
    disableCheckedFill?: string;
    disableUncheckedFill?: string;
    circleFill?: string;
};
export interface ButtonStyle {
    buttonColor?: string;
    buttonBorderColor?: string;
    buttonLineWidth?: number;
    buttonBorderRadius?: number;
    buttonHoverColor?: string;
    buttonHoverBorderColor?: string;
    buttonTextHoverColor?: string;
    buttonDisableColor?: string;
    buttonDisableBorderColor?: string;
    buttonTextDisableColor?: string;
    buttonPadding?: number;
}
