import type { CurrentWritable } from '@threlte/core'; import { type Emitter } from 'mitt'; import type { Group } from 'three'; import type { Node } from 'yoga-layout'; import type Yoga from 'yoga-layout'; import type { Axis, ClassParser, NodeProps } from '../lib/props.js'; type FlexContextEvents = { 'reflow:before': void; 'reflow:after': void; }; type FlexContextNode = { node: Node; group: Group; props: NodeProps; }; export type FlexContextData = { yoga: typeof Yoga; nodes: Map; addNode: (node: Node, group: Group, props: NodeProps) => void; updateNodeProps: (node: Node, props: NodeProps, force?: boolean) => void; removeNode: (node: Node) => void; scaleFactor: CurrentWritable; mainAxis: CurrentWritable; crossAxis: CurrentWritable; depthAxis: CurrentWritable; rootGroup: Group; rootWidth: CurrentWritable; rootHeight: CurrentWritable; reflow: () => void; classParser?: ClassParser; }; export type FlexContext = FlexContextData & Emitter & { onEvent: (type: Type, callback: (payload: FlexContextEvents[Type]) => void) => void; }; export declare const flexContextName = "__threlte-flex"; export declare const createFlexContext: (data: FlexContextData) => FlexContextData & Emitter & { onEvent: (type: Type, callback: (payload: FlexContextEvents[Type]) => void) => void; }; export declare const useFlex: () => FlexContext; export {};