import { Size } from '../../../Types/Size';
import type { Spacing } from '../../../Types/Spacing';
import { CustomElement } from '../../Abstracts/CustomElement';
import { type ISpacerElementProps } from './ISpacerElementProps';
declare const SpacerElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Spacer - An empty or transparent element used for creating space or layout separation.
 *
 * @description
 * The Spacer component is a versatile layout element used to add spacing, margins, or gaps between other UI elements.
 * It helps control the visual layout and alignment of components in a user interface, providing consistent spacing between elements.
 * Spacers can be applied both horizontally and vertically to achieve precise spacing and alignment.
 *
 * @element mosaik-spacer
 *
 * @public
 */
export declare class SpacerElement extends SpacerElement_base implements ISpacerElementProps {
    private _multiplier;
    private _size;
    private _thickness;
    private _invert;
    private _multiplierValidator;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     * The `{@link is}` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `multiplier` property.
     *
     * The multiplier factor for spacing. Adjusts the space based on a numeric value.
     *
     * @public
     * @attr
     */
    get multiplier(): number;
    set multiplier(value: number);
    /**
     * Gets or sets the `density` property.
     *
     * Possible values are `tiny`, `small`, `medium`, `large` or `giant`.
     * The default is `medium`.
     *
     * @public
     * @attr
     */
    get size(): Size;
    set size(value: Size);
    /**
     * Gets or sets the `thickness` property.
     *
     * The thickness or sides for which the Spacer applies. Accepts values: `top`, `right`, `bottom`, `left`, `vertical`, `horizontal`, `all` or `none`.
     * The default is `null`.
     *
     * @public
     * @attr
     */
    get thickness(): Spacing | Array<Spacing> | null;
    set thickness(value: Spacing | Array<Spacing> | null);
    /**
     * Gets or sets the `invert` property.
     *
     * Inverts the spacing. This is useful for creating negative space.
     * The default is `false`.
     *
     * @public
     * @attr
     */
    get invert(): boolean;
    set invert(value: boolean);
    /**
     * Gets or sets the `multiplierValidator` property.
     *
     * The multiplier validator function.
     * The default is `DEFAULT_SPACER_ELEMENT_PROPS.multiplierValidator`.
     *
     * @public
     */
    get multiplierValidator(): (value: number) => boolean;
    set multiplierValidator(value: (value: number) => boolean);
    /**
     * Tries to get the thickness.
     *
     * @private
     * @template
     */
    tryGetThickness(thicknesses: Array<Spacing>): string | boolean;
    /**
     * Parses the `thickness` property into an array of `Spacing`.
     *
     * @private
     */
    private parseThickness;
    /**
     * Validates the `thickness` property.
     *
     * @private
     */
    private validateThickness;
    /**
     * Gets the size as number.
     *
     * @private
     */
    private getSizeAsNumber;
    /**
     * Parses the size.
     *
     * @private
     */
    private parseSize;
}
/**
 * @public
 */
export declare namespace SpacerElement {
    type Props = ISpacerElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-spacer': SpacerElement;
    }
}
export {};
//# sourceMappingURL=SpacerElement.d.ts.map