///
import type { State } from "../state/state.js";
import { ChildTrait } from "../traits/child.js";
import { Entity } from "../traits/entity.js";
import { IdentityTrait } from "../traits/identity.js";
import { LabelTrait } from "../traits/label.js";
import { LocationTrait } from "../traits/location.js";
import { OwnershipTrait } from "../traits/ownership.js";
import { ParentTrait } from "../traits/parent.js";
import { SelectableChildrenTrait } from "../traits/selectableChildren.js";
/**
* A container of items to be placed in linear fashion.
* @category Entity
*/
export declare class Line extends Entity {
/**
* Sets maximum size of this container.
* - 0cm (default): items just sit next to each other
* - Any positive value: when approaching the size limit,
* items will squeeze in to stay within limits
*
* Remember, items never "*wrap*" to "*the next line*".
* @category Line
*/
length: number;
/**
* How should items align within the container.
* In zero-length container only "start" and "end" values make sense.
* @category Line
*/
align: LineAlign;
/**
* How should items align within the container.
* In zero-length container only "start" and "end" values make sense.
* @category Line
*/
lineDirection: LineDirection;
/**
* Margin or overlapping (negative values) between items
* @category Line
*/
itemSpacing: number;
create(state: State, options?: LineOptions): void;
}
type LineAlign = "start" | "end" | "justify";
type LineDirection = "row" | "column";
interface Mixin extends IdentityTrait, LocationTrait, ChildTrait, ParentTrait, LabelTrait, OwnershipTrait, SelectableChildrenTrait {
}
type LineOptions = Partial & {
/**
* Sets maximum size of this container.
* - 0cm (default): items just sit next to each other
* - Any positive value: when approaching the size limit,
* items will squeeze in to stay within limits
*
* Remember, items never "*wrap*" to "*the next line*".
*/
length: number;
/**
* How should items align within the container.
* In zero-length container only "start" and "end" values make sense.
*/
align: LineAlign;
/**
* How should items align within the container.
* In zero-length container only "start" and "end" values make sense.
*/
lineDirection: LineDirection;
/**
* Margin or overlapping (negative values) between items
*/
itemSpacing: number;
}>;
export interface Line extends Mixin {
}
export {};