import type { TextAlign, TextDirection, LineInfo, HyphenationPatternsMap } from '../types'; export declare enum ItemType { BOX = 0,// character or word with fixed width GLUE = 1,// stretchable/shrinkable space PENALTY = 2,// potential breakpoint with penalty cost DISCRETIONARY = 3 } export declare enum FitnessClass { VERY_LOOSE = 0,// lines stretching more than their stretchability LOOSE = 1,// lines stretching 0.5 to 1.0 of their stretchability DECENT = 2,// all other lines TIGHT = 3 } interface Item { type: ItemType; width: number; text?: string; originIndex?: number; } export interface Box extends Item { type: ItemType.BOX; } export interface Glue extends Item { type: ItemType.GLUE; stretch: number; shrink: number; } export interface Penalty extends Item { type: ItemType.PENALTY; penalty: number; flagged?: boolean; } export interface Discretionary extends Item { type: ItemType.DISCRETIONARY; preBreak: string; postBreak: string; noBreak: string; preBreakWidth: number; penalty: number; flagged?: boolean; } export interface LineBreakOptions { text: string; width?: number; align?: TextAlign; direction?: TextDirection; hyphenate?: boolean; language?: string; measureText: (text: string) => number; measureTextWidths?: (text: string) => number[]; respectExistingBreaks?: boolean; hyphenationPatterns?: HyphenationPatternsMap; unitsPerEm?: number; letterSpacing?: number; tolerance?: number; pretolerance?: number; emergencyStretch?: number; autoEmergencyStretch?: number; lefthyphenmin?: number; righthyphenmin?: number; linepenalty?: number; adjdemerits?: number; hyphenpenalty?: number; exhyphenpenalty?: number; doublehyphendemerits?: number; finalhyphendemerits?: number; } interface LineBreakContext { linePenalty: number; adjDemerits: number; doubleHyphenDemerits: number; finalHyphenDemerits: number; hyphenPenalty: number; exHyphenPenalty: number; currentAlign: TextAlign; unitsPerEm?: number; letterSpacingFU?: number; } export declare class LineBreak { private static badness; private static fitnessClass; static findHyphenationPoints(word: string, language?: string, availablePatterns?: HyphenationPatternsMap, lefthyphenmin?: number, righthyphenmin?: number): number[]; static itemizeText(text: string, measureText: (text: string) => number, measureTextWidths: ((text: string) => number[]) | undefined, hyphenate?: boolean, language?: string, availablePatterns?: HyphenationPatternsMap, lefthyphenmin?: number, righthyphenmin?: number, context?: LineBreakContext, lineWidth?: number): Item[]; static isCJK(char: string): boolean; static isCJClosingPunctuation(char: string): boolean; static isCJOpeningPunctuation(char: string): boolean; static isCJPunctuation(char: string): boolean; private static itemizeCJKText; private static itemizeParagraph; private static itemizeWordBased; private static lineBreak; static breakText(options: LineBreakOptions): LineInfo[]; private static postLineBreak; } export {};