import type { Chunk } from "@effect-ts/core/Collections/Immutable/Chunk";
import type { FigHeader } from "../../FigHeader/index.js";
import type { FigletResult } from "../../FigletException/index.js";
/**
 * Represents rules for performing horizontal smushing for a Figlet font.
 *
 * See http://www.jave.de/figlet/figfont.html#smushingrules for more detail.
 */
export declare type HorizontalSmushingRule = EqualCharacter | Underscore | Hierarchy | OppositePair | BigX | Hardblank;
/**
 * Represents application of "equal" character horizontal smushing.
 *
 * **Horizontal Smushing Rule 1** (Code Value 1)
 *
 * Two sub-characters are smushed into a single sub-character if they are the
 * same. This rule does not smush hardblanks.
 */
export interface EqualCharacter {
    readonly _tag: "EqualCharacter";
}
/**
 * Represents application of "underscore" character horizontal smushing.
 *
 * **Horizontal Smushing Rule 2** (Code Value 2)
 *
 * An underscore ("_") will be replaced by any of: "|", "/", "\", "[", "]",
 * "{", "}", "(", ")", "<" or ">".
 */
export interface Underscore {
    readonly _tag: "Underscore";
}
/**
 * Represents application of "hierarchy" character horizontal smushing.
 *
 * **Horizontal Smushing Rule 3** (Code Value 4)
 *
 * A hierarchy of six classes is used: "|", "/\", "[]", "{}", "()", and "<>".
 * When two smushing sub-characters are from different classes, the one from
 * the latter class will be used.
 */
export interface Hierarchy {
    readonly _tag: "Hierarchy";
}
/**
 * Represents application of "opposite pair" character horizontal smushing.
 *
 * **Horizontal Smushing Rule 4** (Code Value 8)
 *
 * Smushes opposing brackets ("[]" or "]["), braces ("{}" or "}{") and
 * parentheses ("()" or ")(") together, replacing any such pair with a vertical
 * bar ("|").
 */
export interface OppositePair {
    readonly _tag: "OppositePair";
}
/**
 * Represents application of "big X" character horizontal smushing.
 *
 * **Horizontal Smushing Rule 5** (Code Value 16)
 *
 * Smushes "/\" into "|", "\/" into "Y", and "><" into "X". Note that "<>" is
 * not smushed in any way by this rule. The name "BIG X" is historical;
 * originally all three pairs were smushed into "X".
 */
export interface BigX {
    readonly _tag: "BigX";
}
/**
 * Represents application of "equal" character horizontal smushing.
 *
 * **Horizontal Smushing Rule 6** (Code Value 32)
 *
 * Smushes two hardblanks together, replacing them with a single hardblank.
 */
export interface Hardblank {
    readonly _tag: "Hardblank";
}
export declare const EqualCharacter: HorizontalSmushingRule;
export declare const Underscore: HorizontalSmushingRule;
export declare const Hierarchy: HorizontalSmushingRule;
export declare const OppositePair: HorizontalSmushingRule;
export declare const BigX: HorizontalSmushingRule;
export declare const Hardblank: HorizontalSmushingRule;
/**
 * Interprets the `fullLayout` header settings and returns the selected
 * `HorizontalSmushingRule`s.
 *
 * @param header The `FigHeader` where the `FullLayout` is defined.
 * @returns A `FigletResult` containing a list of `HorizontalSmushingRule`s, or
 * a list of `FigletException`s accumulated during parsing.
 */
export declare function fromFullLayout(header: FigHeader): FigletResult<Chunk<HorizontalSmushingRule>>;
/**
 * Interprets the `oldLayout` header settings and returns the selected
 * `HorizontalSmushingRule`s.
 *
 * @param header The `FigHeader` where the `OldLayout` is defined.
 * @returns A `FigletResult` containing a list of `HorizontalSmushingRule`s, or
 * a list of `FigletException`s accumulated during parsing.
 */
export declare function fromOldLayout(header: FigHeader): FigletResult<Chunk<HorizontalSmushingRule>>;
//# sourceMappingURL=index.d.ts.map