/**
 * @typedef Options
 * @property {boolean} useLocations Use Locations (`{ 'item': [{ line, column, offset, length }] }`) instead of a regular count per occurrence (`{ 'item': 3 }`)
 */
/**
 * Analyze CSS
 * @param {string} css
 * @param {Options} options
 */
export function analyze(css: string, options?: Options): {
    stylesheet: {
        sourceLinesOfCode: number;
        linesOfCode: number;
        size: number;
        complexity: number;
        comments: {
            total: number;
            size: number;
        };
        embeddedContent: {
            size: {
                total: number;
                ratio: number;
            };
            types: {
                total: number;
                totalUnique: number;
                uniquenessRatio: number;
                unique: {
                    [k: string]: {
                        size: number;
                        count: number;
                    } & ({
                        uniqueWithLocations?: undefined;
                    } | {
                        uniqueWithLocations: {
                            offset: number;
                            line: number;
                            column: number;
                            length: number;
                        }[];
                    });
                };
            };
        };
    };
    atrules: ({
        total: number;
        totalUnique: number;
        uniquenessRatio: number;
        unique: Record<string, number>;
    } & ({
        uniqueWithLocations: Record<string, {
            line: number;
            column: number;
            offset: number;
            length: number;
        }[]>;
    } | {
        uniqueWithLocations?: undefined;
    })) & {
        fontface: {
            total: number;
            totalUnique: number;
            unique: Record<string, string>[];
            uniquenessRatio: number;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]> | undefined;
        } | {
            uniqueWithLocations?: undefined;
        });
        import: {
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        });
        media: ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })) & {
            browserhacks: {
                total: number;
                totalUnique: number;
                uniquenessRatio: number;
                unique: Record<string, number>;
            } & ({
                uniqueWithLocations: Record<string, {
                    line: number;
                    column: number;
                    offset: number;
                    length: number;
                }[]>;
            } | {
                uniqueWithLocations?: undefined;
            });
            features: {
                total: number;
                totalUnique: number;
                uniquenessRatio: number;
                unique: Record<string, number>;
            } & ({
                uniqueWithLocations: Record<string, {
                    line: number;
                    column: number;
                    offset: number;
                    length: number;
                }[]>;
            } | {
                uniqueWithLocations?: undefined;
            });
        };
        charset: {
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        });
        supports: ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })) & {
            browserhacks: {
                total: number;
                totalUnique: number;
                uniquenessRatio: number;
                unique: Record<string, number>;
            } & ({
                uniqueWithLocations: Record<string, {
                    line: number;
                    column: number;
                    offset: number;
                    length: number;
                }[]>;
            } | {
                uniqueWithLocations?: undefined;
            });
        };
        keyframes: ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })) & {
            prefixed: ({
                total: number;
                totalUnique: number;
                uniquenessRatio: number;
                unique: Record<string, number>;
            } & ({
                uniqueWithLocations: Record<string, {
                    line: number;
                    column: number;
                    offset: number;
                    length: number;
                }[]>;
            } | {
                uniqueWithLocations?: undefined;
            })) & {
                ratio: number;
            };
        };
        container: ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })) & {
            names: {
                total: number;
                totalUnique: number;
                uniquenessRatio: number;
                unique: Record<string, number>;
            } & ({
                uniqueWithLocations: Record<string, {
                    line: number;
                    column: number;
                    offset: number;
                    length: number;
                }[]>;
            } | {
                uniqueWithLocations?: undefined;
            });
        };
        layer: {
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        });
        property: {
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        });
        complexity: {
            min: number | undefined;
            max: number | undefined;
            mean: number;
            mode: number;
            range: number;
            sum: number;
        };
        nesting: {
            min: number | undefined;
            max: number | undefined;
            mean: number;
            mode: number;
            range: number;
            sum: number;
        } & ({
            items: number[];
        } & ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })));
    };
    rules: {
        total: number;
        empty: {
            total: number;
            ratio: number;
        };
        sizes: {
            min: number | undefined;
            max: number | undefined;
            mean: number;
            mode: number;
            range: number;
            sum: number;
        } & ({
            items: number[];
        } & ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })));
        nesting: {
            min: number | undefined;
            max: number | undefined;
            mean: number;
            mode: number;
            range: number;
            sum: number;
        } & ({
            items: number[];
        } & ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })));
        selectors: {
            min: number | undefined;
            max: number | undefined;
            mean: number;
            mode: number;
            range: number;
            sum: number;
        } & ({
            items: number[];
        } & ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })));
        declarations: {
            min: number | undefined;
            max: number | undefined;
            mean: number;
            mode: number;
            range: number;
            sum: number;
        } & ({
            items: number[];
        } & ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })));
    };
    selectors: {
        total: number;
        totalUnique: number;
        uniquenessRatio: number;
        specificity: {
            /** @type Specificity */
            min: Specificity;
            /** @type Specificity */
            max: Specificity;
            /** @type Specificity */
            sum: Specificity;
            /** @type Specificity */
            mean: Specificity;
            /** @type Specificity */
            mode: Specificity;
            /** @type Specificity */
            items: Specificity;
        } & ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        }));
        complexity: {
            min: number | undefined;
            max: number | undefined;
            mean: number;
            mode: number;
            range: number;
            sum: number;
        } & (({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })) & {
            items: number[];
        });
        nesting: {
            min: number | undefined;
            max: number | undefined;
            mean: number;
            mode: number;
            range: number;
            sum: number;
        } & ({
            items: number[];
        } & ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })));
        id: ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })) & {
            ratio: number;
        };
        pseudoClasses: {
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        });
        accessibility: ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })) & {
            ratio: number;
        };
        keyframes: {
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        });
        prefixed: ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })) & {
            ratio: number;
        };
        combinators: {
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        });
    };
    declarations: {
        total: number;
        totalUnique: number;
        uniquenessRatio: number;
        importants: {
            total: number;
            ratio: number;
            inKeyframes: {
                total: number;
                ratio: number;
            };
        };
        complexity: {
            min: number | undefined;
            max: number | undefined;
            mean: number;
            mode: number;
            range: number;
            sum: number;
        };
        nesting: {
            min: number | undefined;
            max: number | undefined;
            mean: number;
            mode: number;
            range: number;
            sum: number;
        } & ({
            items: number[];
        } & ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })));
    };
    properties: ({
        total: number;
        totalUnique: number;
        uniquenessRatio: number;
        unique: Record<string, number>;
    } & ({
        uniqueWithLocations: Record<string, {
            line: number;
            column: number;
            offset: number;
            length: number;
        }[]>;
    } | {
        uniqueWithLocations?: undefined;
    })) & {
        prefixed: ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })) & {
            ratio: number;
        };
        custom: ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })) & {
            ratio: number;
            importants: ({
                total: number;
                totalUnique: number;
                uniquenessRatio: number;
                unique: Record<string, number>;
            } & ({
                uniqueWithLocations: Record<string, {
                    line: number;
                    column: number;
                    offset: number;
                    length: number;
                }[]>;
            } | {
                uniqueWithLocations?: undefined;
            })) & {
                ratio: number;
            };
        };
        browserhacks: ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })) & {
            ratio: number;
        };
        complexity: {
            min: number | undefined;
            max: number | undefined;
            mean: number;
            mode: number;
            range: number;
            sum: number;
        };
    };
    values: {
        colors: (({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })) & {
            itemsPerContext: {
                [k: string]: {
                    total: number;
                    totalUnique: number;
                    unique: Record<string, number>;
                    uniquenessRatio: number;
                };
            };
        }) & {
            formats: {
                total: number;
                totalUnique: number;
                uniquenessRatio: number;
                unique: Record<string, number>;
            } & ({
                uniqueWithLocations: Record<string, {
                    line: number;
                    column: number;
                    offset: number;
                    length: number;
                }[]>;
            } | {
                uniqueWithLocations?: undefined;
            });
        };
        gradients: {
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        });
        fontFamilies: {
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        });
        fontSizes: {
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        });
        lineHeights: {
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        });
        zindexes: {
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        });
        textShadows: {
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        });
        boxShadows: {
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        });
        borderRadiuses: ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })) & {
            itemsPerContext: {
                [k: string]: {
                    total: number;
                    totalUnique: number;
                    unique: Record<string, number>;
                    uniquenessRatio: number;
                };
            };
        };
        animations: {
            durations: {
                total: number;
                totalUnique: number;
                uniquenessRatio: number;
                unique: Record<string, number>;
            } & ({
                uniqueWithLocations: Record<string, {
                    line: number;
                    column: number;
                    offset: number;
                    length: number;
                }[]>;
            } | {
                uniqueWithLocations?: undefined;
            });
            timingFunctions: {
                total: number;
                totalUnique: number;
                uniquenessRatio: number;
                unique: Record<string, number>;
            } & ({
                uniqueWithLocations: Record<string, {
                    line: number;
                    column: number;
                    offset: number;
                    length: number;
                }[]>;
            } | {
                uniqueWithLocations?: undefined;
            });
        };
        prefixes: {
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        });
        browserhacks: {
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        });
        units: ({
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        })) & {
            itemsPerContext: {
                [k: string]: {
                    total: number;
                    totalUnique: number;
                    unique: Record<string, number>;
                    uniquenessRatio: number;
                };
            };
        };
        complexity: {
            min: number | undefined;
            max: number | undefined;
            mean: number;
            mode: number;
            range: number;
            sum: number;
        };
        keywords: {
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        });
        resets: {
            total: number;
            totalUnique: number;
            uniquenessRatio: number;
            unique: Record<string, number>;
        } & ({
            uniqueWithLocations: Record<string, {
                line: number;
                column: number;
                offset: number;
                length: number;
            }[]>;
        } | {
            uniqueWithLocations?: undefined;
        });
    };
    __meta__: {
        parseTime: number;
        analyzeTime: number;
        total: number;
    };
};
/**
 * Compare specificity A to Specificity B
 * @param {Specificity} a - Specificity A
 * @param {Specificity} b - Specificity B
 * @returns {number} sortIndex - 0 when a==b, 1 when a<b, -1 when a>b
 */
export function compareSpecificity(a: Specificity, b: Specificity): number;
export { isHack as isPropertyHack } from './properties/property-utils.js';
export { isValuePrefixed } from './values/vendor-prefix.js';
export { hasVendorPrefix } from './vendor-prefix.js';
export type Options = {
    /**
     * Use Locations (`{ 'item': [{ line, column, offset, length }] }`) instead of a regular count per occurrence (`{ 'item': 3 }`)
     */
    useLocations: boolean;
};
export type Specificity = [number, number, number];
export { getComplexity as selectorComplexity, isPrefixed as isSelectorPrefixed, isAccessibility as isAccessibilitySelector } from './selectors/utils.js';
export { isSupportsBrowserhack, isMediaBrowserhack } from './atrules/atrules.js';
