import type { PostextConfig, HeadingsConfig, HeadingLevelConfig, HeadingBreakBeforeConfig, ResolvedHeadingsConfig, ResolvedHeadingLevelConfig, ResolvedHeadingBreakBeforeConfig, ClosingBoxLever, StretchAfterWideFloats, TrailingStep } from '../types.js'; /** A partial `breakBefore` merged field by field over `base` (the level's * default, or the level a heading style applies to): setting only * `parity` keeps the base's `enabled`, and vice versa. */ export declare function resolveBreakBefore(raw?: HeadingBreakBeforeConfig, base?: ResolvedHeadingBreakBeforeConfig): ResolvedHeadingBreakBeforeConfig; export declare const DEFAULT_COLUMN_BALANCING: { enabled: boolean; maxLinesPerHeading: number; maxLinesBeforeLoose: number; stretchAfterLists: boolean; maxLinesAfterList: number; stretchAfterDisplays: boolean; stretchAfterFloats: boolean; maxLinesAfterFloat: number; stretchAfterWideFloats: StretchAfterWideFloats; looseParagraphs: boolean; maxLooseParagraphs: number; trackParagraphs: boolean; maxTracking: number; fillShortColumns: boolean; trailing: boolean; trailingStep: TrailingStep; beforeSpan: boolean; closingBox: ClosingBoxLever; }; /** * Whether column balancing is on when `config` does not set * `headings.balancing.enabled` itself. Off in two cases: * - tiers of vertical text are not balanced: the flow fills the upper * tier, then the next, and a chapter's last tiers end where their text * ends (clreq §7.1.3.4); * - a page on a character grid (`cjk.grid`, #632) is filled cell by cell * and line by line, the way the standards that count its lines set it * (GB/T 9704: 22 lines of 28 characters): a column that ends short is * left short, and no row is added above a heading. A config that turns * balancing on there gets the levers that keep every character in its * cell (see `pipeline/columnBalancing.ts`). */ export declare function balancingOnByDefault(config: PostextConfig | undefined): boolean; export declare const DEFAULT_HEADINGS_CONFIG: ResolvedHeadingsConfig; export declare function resolveHeadingsConfig(partial?: HeadingsConfig): ResolvedHeadingsConfig; /** A level's `lineSpan`, `indent` and `jidori` (#424) and its * `firstLineIndent` (#636) as they resolve: each present only when set to * something that takes effect (a whole number of lines from 1, a non-zero * indent, a width over one character), * so a configuration without them resolves exactly as before. */ export declare function headingPlacementFields(partial: Pick | undefined): Pick; /** The level fields a heading style (or any partial level config) sets, * resolved to their final shape — `breakBefore` and `advancedDesign` * normalised, everything else passed through — so they can be merged * over a resolved level with a spread. `breakBefore` is resolved on its * own here (unset fields as for a level without a break); a heading * style's break is merged over its level's instead (see * `createHeadingLevelResolver`). */ export declare function resolveHeadingLevelOverrides(partial: Omit): Partial>; /** `headings` without the fields at their default. `balancingOn` is * whether the document balances its columns when it does not say * (`balancingOnByDefault(config)`, #651): `balancing.enabled` is dropped * when it restates that, so `true` is kept on a character grid and in * vertical text, where balancing is off by default, and `false` is * dropped there. */ export declare function stripHeadingsDefaults(headings?: HeadingsConfig, balancingOn?: boolean): HeadingsConfig | undefined; //# sourceMappingURL=headings.d.ts.map