import { type ElementPart } from 'lit/directive.js';
import type { CssLength } from '@breadstone/mosaik-themes';
import { DirectiveBase, type DirectiveArgs } from '../Abstracts/DirectiveBase';
/**
 * Represents the `FlexDirection` type.
 *
 * @public
 */
export type FlexDirection = 'row' | 'row-reverse' | 'column' | 'column-reverse';
/**
 * Represents the `FlexJustify` type.
 *
 * @public
 */
export type FlexJustify = 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around';
/**
 * Represents the `FlexAlignItems` type.
 *
 * @public
 */
export type FlexAlignItems = 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline';
/**
 * Represents the `FlexAlignContent` type.
 *
 * @public
 */
export type FlexAlignContent = 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'space-between' | 'space-around';
/**
 * Represents the `FlexWrap` type.
 *
 * @public
 */
export type FlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse';
/**
 * Represents the `IFlexDirectiveOptions` interface.
 *
 * @public
 */
export interface IFlexDirectiveOptions {
    justify: FlexJustify | undefined;
    alignItems: FlexAlignItems | undefined;
    alignContent: FlexAlignContent | undefined;
    direction: FlexDirection | undefined;
    wrap: FlexWrap | undefined;
    gap: CssLength | undefined;
    fill: boolean | number | undefined;
}
/**
 * @private
 */
declare class FlexDirective extends DirectiveBase {
    private _justify?;
    private _alignItems?;
    private _alignContent?;
    private _direction?;
    private _wrap?;
    private _gap?;
    private _fill?;
    /**
     * Constructs a new instance of the `FlexDirective` class.
     *
     * @public
     */
    constructor(args: DirectiveArgs);
    /**
     * @public
     */
    render(options?: Partial<IFlexDirectiveOptions>): unknown;
    /**
     * @public
     * @override
     */
    update(part: ElementPart, [options]: Parameters<this['render']>): unknown;
    /**
     * @private
     */
    private updateFlexProperty;
    /**
     * @private
     */
    private updateFillProperty;
}
/**
 * @public
 */
export declare const flex: (...values: Parameters<FlexDirective["render"]>) => any;
export {};
//# sourceMappingURL=FlexDirective.d.ts.map