import { GridLength, type GridLengthInput } from './GridLength';
import { RowDefinition } from './RowDefinition';
/**
 * Describes the object form of a single row definition input.
 *
 * The `height` property is required and accepts any `GridLengthInput`
 * shorthand or a `GridLength` instance. The optional `minHeight` and
 * `maxHeight` constrain the resolved track height in pixels/DIPs.
 *
 * @example
 * ```ts
 * const row: IRowDefinitionInput = {
 *     height: '2*',
 *     minHeight: 40,
 *     maxHeight: 200,
 * };
 * ```
 *
 * @public
 */
export interface IRowDefinitionInput {
    /**
     * The height specification for this row.
     *
     * Accepts a `GridLengthInput` shorthand (`number`, `'auto'`,
     * `'*'`, `` `${number}*` ``) or a `GridLength` instance.
     *
     * @public
     */
    height: GridLengthInput | GridLength;
    /**
     * The minimum height of this row in pixels/DIPs.
     * Must be non-negative. Defaults to `0` when omitted.
     *
     * @public
     */
    minHeight?: number;
    /**
     * The maximum height of this row in pixels/DIPs.
     * Must be non-negative and `≥ minHeight`.
     * Defaults to `Number.MAX_SAFE_INTEGER` when omitted.
     *
     * @public
     */
    maxHeight?: number;
}
/**
 * Accepted input for a single row track.
 *
 * | Form                        | Example                                          | Meaning                                  |
 * |-----------------------------|--------------------------------------------------|------------------------------------------|
 * | `number`                    | `100`                                            | Fixed height in pixels/DIPs.             |
 * | `'auto'`                    | `'auto'`                                         | Content-based sizing.                    |
 * | `'*'` / `` `${number}*` `` | `'*'`, `'2*'`, `'0.5*'`                           | Star (proportional) sizing.              |
 * | object                      | `{ height: '2*', minHeight: 40, maxHeight: 200 }` | Full definition with optional min/max.   |
 *
 * Bare `string` is **not** accepted - only the exact literal forms listed
 * above pass compile-time validation.
 *
 * @public
 */
export type RowDefinitionInput = GridLengthInput | IRowDefinitionInput;
/**
 * A space-separated string of `GridLengthInput` tokens that can be
 * used as an HTML attribute value to define row tracks.
 *
 * Each token must be one of:
 * - A non-negative number (pixels/DIPs), e.g. `"100"`
 * - `"auto"` for content-based sizing
 * - `"*"` or `"n*"` for star (proportional) sizing, e.g. `"2*"`
 *
 * Tokens are separated by whitespace.
 *
 * @example
 * ```html
 * <mosaik-grid row-definitions="auto * 100"></mosaik-grid>
 * ```
 *
 * @public
 */
export type RowDefinitionsString = string & {
    readonly __brand?: 'RowDefinitionsString';
};
/**
 * Row track definitions for a grid layout.
 *
 * Accepts either an array of `RowDefinitionInput` entries (for
 * programmatic / Lit property binding usage) or a space-separated
 * `RowDefinitionsString` (for plain HTML attribute usage).
 *
 * The array length (or number of tokens) determines the number of
 * rows; each entry defines the sizing of the corresponding row track.
 *
 * @example
 * Array form (JavaScript / Lit property binding):
 * ```ts
 * const rows: RowDefinitions = [
 *     'auto',                            // content-sized
 *     '*',                               // 1 star (proportional)
 *     '2*',                              // 2 stars (proportional)
 *     100,                               // 100 px fixed
 *     { height: '0.5*', minHeight: 40, maxHeight: 200 }
 * ];
 * ```
 *
 * @example
 * String form (HTML attribute):
 * ```html
 * <mosaik-grid row-definitions="auto * 2* 100"></mosaik-grid>
 * ```
 *
 * @public
 */
export type RowDefinitions = Array<RowDefinitionInput> | RowDefinitionsString;
/**
 * @public
 */
export declare namespace RowDefinitions {
    /**
     * Parses a `RowDefinitions` value (array or space-separated
     * string) into validated `RowDefinition` instances.
     *
     * When `self` is a `string`, it is first split on whitespace into
     * individual tokens, each of which must be a valid
     * `GridLengthInput` literal (`number`, `'auto'`, `'*'`,
     * `` `${number}*` ``).
     *
     * When `self` is an array, each element is validated strictly:
     * - Numbers must be non-negative (absolute pixel sizing).
     * - String literals are parsed via `parseGridLength`.
     * - Object entries must carry a valid `height` and optional
     *   non-negative `minHeight` / `maxHeight` where `minHeight ≤ maxHeight`.
     *
     * @public
     * @param self The raw definitions to parse.
     * @returns An array of fully validated `RowDefinition` instances.
     * @throws {Error} If any entry is invalid.
     */
    function parse(self: RowDefinitions): Array<RowDefinition>;
    /**
     * Parses a space-separated string of grid-length tokens into an
     * array of `RowDefinitionInput` values.
     *
     * Each whitespace-delimited token is interpreted as a
     * `GridLengthInput`: a non-negative number (pixels), `"auto"`,
     * `"*"`, or `"n*"` (star sizing).
     *
     * @example
     * ```ts
     * RowDefinitions.fromString('auto * 100');
     * // → ['auto', '*', 100]
     * ```
     *
     * @public
     * @param value The space-separated definition string.
     * @returns An array of parsed `RowDefinitionInput` values.
     * @throws {Error} If the string is empty or any token is invalid.
     */
    function fromString(value: RowDefinitionsString): Array<RowDefinitionInput>;
    /**
     * Serializes a `RowDefinitions` value into a space-separated
     * string suitable for use as an HTML attribute value.
     *
     * Each entry is converted to its shortest `GridLength` string
     * representation via `GridLength.toString`. Object entries
     * (with `minHeight`/`maxHeight`) are serialized using their `height`
     * component only, as min/max constraints cannot be expressed in the
     * string format.
     *
     * @example
     * ```ts
     * RowDefinitions.toString(['auto', '*', 100]);
     * // → 'auto * 100'
     * ```
     *
     * @public
     * @param self The definitions to serialize.
     * @returns A space-separated string representation.
     */
    function toString(self: RowDefinitions): RowDefinitionsString;
}
//# sourceMappingURL=RowDefinitions.d.ts.map