import { FontItemType, ImgItemType, BorderRadiusType, BackgroundType, ShadowType, FontExtendType } from './index';
export type PrizeFontType = FontItemType & FontExtendType;
export type ButtonFontType = FontItemType & FontExtendType;
export type CellFontType = PrizeFontType | ButtonFontType;
export type BlockImgType = ImgItemType & {};
export type PrizeImgType = ImgItemType & {
    activeSrc?: string;
};
export type ButtonImgType = ImgItemType & {};
export type CellImgType = PrizeImgType | ButtonImgType;
export type BlockType = {
    borderRadius?: BorderRadiusType;
    background?: BackgroundType;
    padding?: string;
    paddingTop?: string | number;
    paddingRight?: string | number;
    paddingBottom?: string | number;
    paddingLeft?: string | number;
    imgs?: Array<BlockImgType>;
};
export type CellType<T, U> = {
    x: number;
    y: number;
    col?: number;
    row?: number;
    borderRadius?: BorderRadiusType;
    background?: BackgroundType;
    shadow?: ShadowType;
    fonts?: Array<T>;
    imgs?: Array<U>;
};
export type PrizeType = CellType<PrizeFontType, PrizeImgType> & {
    range?: number;
    disabled?: boolean;
};
export type ButtonType = CellType<ButtonFontType, ButtonImgType> & {
    callback?: Function;
};
export type DefaultConfigType = {
    gutter?: number;
    speed?: number;
    accelerationTime?: number;
    decelerationTime?: number;
};
export type DefaultStyleType = {
    borderRadius?: BorderRadiusType;
    background?: BackgroundType;
    shadow?: ShadowType;
    fontColor?: PrizeFontType['fontColor'];
    fontSize?: PrizeFontType['fontSize'];
    fontStyle?: PrizeFontType['fontStyle'];
    fontWeight?: PrizeFontType['fontWeight'];
    lineHeight?: PrizeFontType['lineHeight'];
    wordWrap?: PrizeFontType['wordWrap'];
    lengthLimit?: PrizeFontType['lengthLimit'];
    lineClamp?: PrizeFontType['lineClamp'];
};
export type ActiveStyleType = {
    background?: BackgroundType;
    shadow?: ShadowType;
    fontColor?: PrizeFontType['fontColor'];
    fontSize?: PrizeFontType['fontSize'];
    fontStyle?: PrizeFontType['fontStyle'];
    fontWeight?: PrizeFontType['fontWeight'];
    lineHeight?: PrizeFontType['lineHeight'];
};
export type RowsType = number;
export type ColsType = number;
export type StartCallbackType = (e: MouseEvent, button?: ButtonType) => void;
export type EndCallbackType = (prize: object) => void;
export default interface LuckyGridConfig {
    width: string | number;
    height: string | number;
    rows?: RowsType;
    cols?: ColsType;
    blocks?: Array<BlockType>;
    prizes?: Array<PrizeType>;
    buttons?: Array<ButtonType>;
    button?: ButtonType;
    defaultConfig?: DefaultConfigType;
    defaultStyle?: DefaultStyleType;
    activeStyle?: ActiveStyleType;
    start?: StartCallbackType;
    end?: EndCallbackType;
}
