import { MediaFeature, ValidValueToken } from "media-query-parser"; import { MediaFeatures, RangeFeatures, RangeNumberFeatures } from "./helpers.js"; import { CompileOptions } from "./compile.js"; export type LengthUnit = { type: "dimension"; subtype: "length"; px: number; }; export type TimeUnit = { type: "dimension"; subtype: "time"; ms: number; }; export type FrequencyUnit = { type: "dimension"; subtype: "frequency"; hz: number; }; export type ResolutionUnit = { type: "dimension"; subtype: "resolution"; dppx: number; }; export type InfiniteUnit = { type: "infinite"; }; export type IdentUnit = { type: "ident"; value: string; }; export type DimensionUnit = LengthUnit | TimeUnit | FrequencyUnit | ResolutionUnit | InfiniteUnit | IdentUnit; export type NumberUnit = { type: "number"; value: number; }; export type RatioUnit = { type: "ratio"; numerator: number; denominator: number; }; export type Unit = DimensionUnit | NumberUnit | RatioUnit; export type UnitConversions = { widthPx: number; heightPx: number; writingMode: "horizontal-tb" | "vertical-rl" | "vertical-lr" | "sideways-rl" | "sideways-lr"; emPx: number; lhPx: number; exPx: number; chPx: number; capPx: number; icPx: number; }; export type CompiledUnitConversions = { vw: number; vh: number; vmin: number; vmax: number; vi: number; vb: number; em: number; rem: number; lh: number; rlh: number; ex: number; ch: number; cap: number; ic: number; cm: number; mm: number; in: number; q: number; pc: number; pt: number; }; export declare const convertToUnit: (token: ValidValueToken, unitConversions: CompiledUnitConversions) => Unit; export declare const compileStaticUnitConversions: (units: Partial) => CompiledUnitConversions; export type DoubleRange = { type: "double"; name: keyof RangeFeatures; min: Unit; minOp: "<" | "<=" | ">" | ">="; maxOp: "<" | "<=" | ">" | ">="; max: Unit; }; export type SingleRange = { type: "single"; name: keyof RangeFeatures; op: "<" | "<=" | ">" | ">="; value: Unit; }; export type Equality = { type: "equals"; name: keyof MediaFeatures; value: Unit; }; export type BoolCtx = { type: "boolean"; name: keyof MediaFeatures; }; export type Invalid = { type: "invalid"; name: string; }; export declare const simplifyMediaFeature: (mediaFeature: MediaFeature, unitConversions: CompiledUnitConversions) => DoubleRange | SingleRange | Equality | BoolCtx | Invalid; export declare const getRatio: (unit: Unit) => null | readonly [number, number]; export declare const getValue: (unit: Unit, name: keyof RangeNumberFeatures, options: CompileOptions) => null | number;