import { type PointerShape } from "./pointer-shape.js"; export type { PointerShape }; export type TransitionProperty = "x" | "y" | "position" | "width" | "height" | "size" | "bg" | "overlay" | "borderColor" | "borderWidth" | "all"; export type Easing = "linear" | "easeIn" | "easeOut" | "easeInOut"; export interface Transition { duration: number; easing?: Easing; properties: TransitionProperty[]; interactive?: boolean; } declare const OP_OPEN_ELEMENT = 2; declare const OP_TEXT = 3; declare const OP_CLOSE_ELEMENT = 4; declare const OP_SNAPSHOT = 5; export declare function pack(ops: Op[], mem: ArrayBufferLike, offset: number, limit?: number): number; export declare function rgba(r: number, g: number, b: number, a?: number): number; export type SizingAxis = { type: "fit"; min?: number; max?: number; } | { type: "grow"; min?: number; max?: number; } | { type: "percent"; value: number; } | { type: "fixed"; value: number; }; export declare const fit: (min?: number, max?: number) => SizingAxis; export declare const grow: (min?: number, max?: number) => SizingAxis; export declare const percent: (value: number) => SizingAxis; export declare const fixed: (value: number) => SizingAxis; export interface CloseElement { directive: typeof OP_CLOSE_ELEMENT; } export type BorderSide = number | { width: number; color?: number; bg?: number; }; export interface OpenElement { directive: typeof OP_OPEN_ELEMENT; id: string; layout?: { width?: SizingAxis; height?: SizingAxis; padding?: { left?: number; right?: number; top?: number; bottom?: number; }; gap?: number; direction?: "ltr" | "ttb"; alignX?: "left" | "center" | "right"; alignY?: "top" | "center" | "bottom"; }; bg?: number; cornerRadius?: { tl?: number; tr?: number; bl?: number; br?: number; }; border?: { color: number; bg?: number; left?: BorderSide; right?: BorderSide; top?: BorderSide; bottom?: BorderSide; }; clip?: { horizontal?: boolean; vertical?: boolean; }; floating?: { x?: number; y?: number; expand?: { width?: number; height?: number; }; parent?: number; attachTo?: AttachTo; attachPoints?: { element?: AttachPoint; parent?: AttachPoint; }; pointerCaptureMode?: PointerCaptureMode; clipTo?: ClipTo; zIndex?: number; }; transition?: Transition; cursor?: PointerShape; } export type AttachPoint = "left-top" | "left-center" | "left-bottom" | "center-top" | "center-center" | "center-bottom" | "right-top" | "right-center" | "right-bottom"; export type AttachTo = "none" | "parent" | "element" | "root"; export type PointerCaptureMode = "capture" | "passthrough"; export type ClipTo = "none" | "attached-parent"; export interface Text { directive: typeof OP_TEXT; content: string; color?: number; bg?: number; fontSize?: number; fontId?: number; wrap?: number; attrs?: number; caret?: number; } interface Snapshot { directive: typeof OP_SNAPSHOT; data: Uint8Array; } export type Op = OpenElement | Text | CloseElement | Snapshot; export declare function open(id: string, props?: Omit): OpenElement; export declare function text(content: string, props?: Omit): Text; export declare function close(): CloseElement; export declare function snapshot(ops: Op[]): Op;