import type { Universe } from '@ephox/boss'; import type { Optional } from '@ephox/katamari'; import * as SpanWrap from '../../wrap/SpanWrap'; import * as Wrapper from '../../wrap/Wrapper'; import { Wraps } from '../../wrap/Wraps'; import type { SpanWrapRange, SpotPoints, Wrapter } from '../data/Types'; type NuApi = (universe: Universe, item: E) => Wrapter; const nu: NuApi = Wraps; type WrapWithApi = (universe: Universe, base: E, baseOffset: number, end: E, endOffset: number, nu: () => Wrapter) => E[]; const wrapWith: WrapWithApi = Wrapper.wrapWith; type WrapperApi = (universe: Universe, wrapped: E[], nu: () => Wrapter) => E[]; const wrapper: WrapperApi = Wrapper.wrapper; type LeavesApi = (universe: Universe, base: E, baseOffset: number, end: E, endOffset: number, nu: () => Wrapter) => Optional>; const leaves: LeavesApi = Wrapper.leaves; type ReuseApi = (universe: Universe, base: E, baseOffset: number, end: E, endOffset: number, predicate: (e: E) => boolean, nu: () => Wrapter) => E[]; const reuse: ReuseApi = Wrapper.reuse; const spans = (universe: Universe, base: E, baseOffset: number, end: E, endOffset: number, exclusions?: (e: E) => boolean): Optional> => { return SpanWrap.spans(universe, base, baseOffset, end, endOffset, exclusions); }; export { nu, wrapWith, wrapper, leaves, reuse, spans };