/// <reference types="react" />
import * as t from './common/types';
import { transform } from './css/css';
export declare class CssValue {
}
export declare type Falsy = undefined | null | false;
export declare type CssProps = React.CSSProperties;
export declare type CssPropsMap = {
    [selector: string]: CssPropsMapObject;
};
export declare type CssPropsMapObject = CssProps & {
    ':first-child'?: CssProps;
    ':last-child'?: CssProps;
    ':focus'?: CssProps;
    ':hover'?: CssProps;
    ':visited'?: CssProps;
};
export declare type CssClassName = (...styles: Array<CssProps | undefined>) => string;
export declare type CssMergeRules = (...rules: any[]) => CssProps;
export declare type CssFormat = (...styles: Array<t.CssProps | CssValue | Falsy>) => CssValue;
export declare type ICssStyle = {
    transform: typeof transform;
    format: CssFormat;
    global: CssGlobal;
    head: ICssHead;
    image: CssFormatImage;
    toEdges: CssToEdges<CssEdges>;
    toMargins: CssToEdges<CssMarginEdges>;
    toPadding: CssToEdges<CssPaddingEdges>;
    toShadow: CssToShadow;
    toPosition: CssToPosition;
    toAbsolute: CssToAbsolute;
    toRadius: CssToRadius;
};
export declare type CssGlobal = (styles: CssPropsMap, options?: {
    prefix?: string;
}) => void;
export declare type ICssHead = {
    importStylesheet(url: string): ICssHead;
};
declare type N = string | number | null | undefined;
export declare type CssEdgeInput = N;
export declare type CssEdgesInput = N | [N] | [N, N] | [N, N, N, N];
export declare type CssToEdges<T> = (input?: CssEdgesInput | [], options?: {
    defaultValue?: CssEdgesInput;
}) => Partial<T>;
export declare type CssEdges = {
    top: string | number;
    right: string | number;
    bottom: string | number;
    left: string | number;
};
export declare type CssMarginEdges = {
    marginTop: string | number;
    marginRight: string | number;
    marginBottom: string | number;
    marginLeft: string | number;
};
export declare type CssPaddingEdges = {
    paddingTop: string | number;
    paddingRight: string | number;
    paddingBottom: string | number;
    paddingLeft: string | number;
};
export declare type CssFormatImageOptions = {
    width?: number;
    height?: number;
};
export declare type CssFormatImage = (image1x: string | undefined, image2x: string | undefined, options?: CssFormatImageOptions) => ICssBackgroundImage;
export declare type ICssBackgroundImage = {
    backgroundImage: string;
    width?: number;
    height?: number;
    backgroundSize: string;
    backgroundRepeat: string;
};
export declare type CssToShadow = (input?: CssShadow) => string | undefined;
export declare type CssShadow = {
    color: number | string;
    blur: number;
    x?: number;
    y?: number;
    inner?: boolean;
};
export declare type CssPosition = 'absolute' | 'fixed' | 'relative' | 'static' | 'sticky';
export declare type CssEdgePosition = CssEdges & {
    position: CssPosition;
};
export declare type CssToPosition = (position: CssPosition, edges: CssEdgesInput) => CssEdgePosition;
export declare type CssToAbsolute = (edges: CssEdgesInput) => CssEdgePosition;
export declare type CssRadiusInput = N | [N, N, N, N];
export declare type CssToRadius = (corner: CssRadiusInput) => string | undefined;
export {};
