import { Describe } from 'superstruct';
import { ColorConfig } from './color-config';
export declare const HeadingLevels: readonly ["h1", "h2", "h3", "h4", "h5", "h6"];
export type HeadingLevel = (typeof HeadingLevels)[number];
export type FontSizeConfigVal = {
    unit: 'px' | 'rem';
    value: number;
};
export declare const FontSizeConfigValStruct: Describe<FontSizeConfigVal>;
export type FontFaceWeight = number | string;
export declare const FontFaceWeightStruct: Describe<FontFaceWeight>;
export declare enum FontFaceSourceFormats {
    woff2 = "woff2",
    woff = "woff"
}
export type FontFaceSource = {
    /**
     * Note: if /when we eventually add 'local' type support, format isn't used!
     */
    format: keyof typeof FontFaceSourceFormats;
    type: 'url';
    path: string;
};
export declare const FontFaceFormatsEnumStruct: import("superstruct").Struct<"woff2" | "woff", {
    woff2: "woff2";
    woff: "woff";
}>;
export declare const FontFaceSourceStruct: Describe<FontFaceSource>;
export type FontFaceConfig = {
    /**
     * registered name of the custom font
     *
     * MDN Docs on {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-family @font-face's font-family property}
     */
    family?: string;
    /**
     * number between 1 and 1000.
     *
     * note: since two weights are allowed (with variable fonts), this type is an
     * optional array for easy parsing down the road.
     *
     * MDN Docs on {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-weight @font-face's font-weight property}.
     */
    weight?: FontFaceWeight | FontFaceWeight[];
    /**
     * the collection of urls / paths pointing to font files
     *
     * MDN Docs on {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src @font-face's src property}.
     */
    src?: FontFaceSource[];
    /**
     * the style of the custom font (ex. normal or italic)
     *
     * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-style See MDN docs on font-style}.
     */
    style?: string;
};
export declare const FontFaceConfigStruct: Describe<FontFaceConfig>;
export type FontSizeConfig = {
    min: FontSizeConfigVal;
    max?: FontSizeConfigVal;
};
export declare enum TextTransforms {
    inherit = "As typed",
    capitalize = "Capitalize",
    lowercase = "Lowercase",
    uppercase = "Uppercase"
}
export declare enum FontStretches {
    'ultra-condensed' = "Ultra-condensed",
    'extra-condensed' = "Extra-condensed",
    condensed = "Condensed",
    'semi-condensed' = "Semi-condensed",
    normal = "Normal",
    'semi-expanded' = "Semi-expanded",
    expanded = "Expanded",
    'extra-expanded' = "Extra-expanded",
    'ultra-expanded' = "Ultra-expanded"
}
export type TypographyConfig = {
    /**
     * min / max height used to future-proof way of supporting responsive typography
     */
    fontSize?: FontSizeConfig;
    /**
     * reminder: line-heights can also be unitless!
     */
    lineHeight?: string | number;
    fontWeight?: FontFaceWeight;
    /**
     * note: letter-spacing can't be unitless, unit required!
     */
    letterSpacing?: string;
    /**
     * if not specified, Knapsack default font, otherwise should allow for a stack of font strings + fallbacks (including the names of custom registered fonts)
     */
    fontFamily?: string;
    textColor?: ColorConfig;
    textTransform?: keyof typeof TextTransforms;
    fontStretch?: keyof typeof FontStretches;
};
export interface TypographyLinkConfig {
    fontWeight?: FontFaceWeight;
    textColor?: ColorConfig;
    hoverColor?: ColorConfig;
    underline?: boolean;
    textTransform?: keyof typeof TextTransforms;
    fontStretch?: keyof typeof FontStretches;
}
export declare const TypographyLinkConfigStruct: Describe<TypographyLinkConfig>;
export declare const FontSizeConfigStruct: Describe<FontSizeConfig>;
export declare const TypographyConfigStruct: Describe<TypographyConfig>;
export declare const pageElements: {
    readonly pageTitle: TypographyConfig;
    readonly pageDescription: TypographyConfig;
    readonly headingLarge: TypographyConfig;
    readonly headingMedium: TypographyConfig;
    readonly headingSmall: TypographyConfig;
    readonly bodyText: TypographyConfig;
    readonly link: TypographyLinkConfig;
};
export declare const pageElementsV2: {
    readonly pageTitle: TypographyConfig;
    readonly pageDescription: TypographyConfig;
    readonly headingXLarge: TypographyConfig;
    readonly headingLarge: TypographyConfig;
    readonly headingMedium: TypographyConfig;
    readonly headingSmall: TypographyConfig;
    readonly headingXSmall: TypographyConfig;
    readonly bodyText: TypographyConfig;
    readonly link: TypographyLinkConfig;
};
export type PageElementNames = keyof typeof pageElementsV2;
export type PageElementConfig = (typeof pageElementsV2)[PageElementNames];
//# sourceMappingURL=typography-config.d.ts.map