import * as CSS from 'csstype';
export declare type NumberScale = Array<number>;
export declare type FontConfigCache = Array<iFontOpenType>;
export declare type iTailwindTheme = Function;
export declare type iTailwindConfig = {
    theme: {
        extend: any;
        [key: string]: any;
    };
    variants: any;
    corePlugins: any;
    plugins: any;
    compositor: ICompositorConfig;
};
export interface iFontOpenType {
    key: string;
    file?: string;
    fallback: string;
    familyName: string;
    upm: number;
    xHeight: number;
    capHeight: number;
    lineGap: number;
    ascent: number;
    descent: number;
    weight: number;
    italic: boolean;
}
export declare type FontConfigFile = {
    file: string;
    key: string;
    familyName: string;
    fallback: string;
    weight?: number;
    italic?: boolean;
    upm: undefined;
    xHeight: undefined;
    capHeight: undefined;
    ascent: undefined;
    descent: undefined;
};
export declare type FontsConfig = Array<FontConfigFile | iFontOpenType>;
export interface UtilityOptions {
    useRem: boolean;
    snap: boolean;
    type: boolean;
    rhythm: boolean;
    measure: boolean;
    matrix: boolean;
    xray: boolean;
}
export interface ICompositorConfig {
    root: number;
    baseline: number;
    leading: number;
    matrix: number;
    type: NumberScale;
    measure: NumberScale;
    rhythm: NumberScale;
    fonts: FontsConfig;
    options: UtilityOptions;
    styles: iCompositorThemeStyles;
}
export interface iCompositorThemeStyles {
    ruler: {
        color: string;
    };
}
export interface Style extends CSS.Properties {
    [key: string]: any;
}
export interface TypeFamilyParams {
    font: iFontOpenType;
}
export interface StyleFamily {
    fontFamily: CSS.FontFamilyProperty;
    fontWeight: CSS.FontWeightProperty;
    fontStyle: CSS.FontStyleProperty;
    display: CSS.DisplayProperty;
    '&::before, &::after': {
        content: CSS.ContentProperty;
        height: CSS.HeightProperty<number>;
        display: CSS.DisplayProperty;
    };
}
export interface TypeStyleRelParams {
    font: iFontOpenType;
    baseline: number;
    root: number;
    size: number;
    leading: number;
    useRem: boolean;
}
export interface TypeStyleParams {
    font: iFontOpenType;
    baseline: number;
    size: number;
    snap: boolean;
    leading: number;
    root?: number;
    useRem: boolean;
}
export interface StyleTypography {
    fontSize: CSS.FontSizeProperty<string>;
    lineHeight: CSS.LineHeightProperty<string | number>;
    paddingTop: CSS.PaddingTopProperty<string>;
    paddingBottom: CSS.PaddingTopProperty<string>;
    '&::before': {
        marginTop: CSS.MarginProperty<string>;
    };
    '&::after': {
        marginBottom: CSS.MarginProperty<string>;
    };
}
