/** @packageDocumentation
 * @module Symbology
 */
import { Id64String } from "@itwin/core-bentley";
import { Transform, Vector3d, XYZProps, YawPitchRollAngles, YawPitchRollProps } from "@itwin/core-geometry";
/** @public */
export declare namespace LineStyle {
    /** Modify the line style appearance without changing the line style definition.
     * Applies to the style previously established by a [[GeometryAppearanceProps]] or current [[SubCategoryAppearance]].
     * Most of the modifiers affect the line style stroke pattern, with the orientation and scales being the exception.
     * @see [[GeometryStreamEntryProps]]
     */
    interface ModifierProps {
        /** Optional scale to apply to all length values, 1.0 if undefined */
        scale?: number;
        /** Optional scale to apply to scalable dashes, 1.0 if undefined */
        dashScale?: number;
        /** Optional scale to apply to scalable gaps, 1.0 if undefined */
        gapScale?: number;
        /** Optional start width in meters to apply to dashes, no width if undefined */
        startWidth?: number;
        /** Optional end width in meters to apply to dashes, same as startWidth if undefined */
        endWidth?: number;
        /** Optional shift by distance in meters, 0.0 if undefined */
        distPhase?: number;
        /** Optional shift by fraction, 0.0 if undefined */
        fractPhase?: number;
        /** Optional flag to center stroke pattern and stretch ends, false if undefined */
        centerPhase?: boolean;
        /** Optional flag to enable or disable single segment mode */
        segmentMode?: boolean;
        /** Optional flag that denotes startWidth and endWidth represent physical widths that should not be affected by scale, false if undefined */
        physicalWidth?: boolean;
        /** Optional up vector for style (applicable to 3d only), 0.0,0.0,1.0 if undefined */
        normal?: XYZProps;
        /** Optional orientation for style (applicable to 3d only), 0.0,0.0,0.0 if undefined */
        rotation?: YawPitchRollProps;
    }
    /** Optional modifiers to override line style definition */
    class Modifier implements ModifierProps {
        scale?: number;
        dashScale?: number;
        gapScale?: number;
        startWidth?: number;
        endWidth?: number;
        distPhase?: number;
        fractPhase?: number;
        centerPhase?: boolean;
        segmentMode?: boolean;
        physicalWidth?: boolean;
        normal?: Vector3d;
        rotation?: YawPitchRollAngles;
        /** constructor for LineStyle.Modifier */
        constructor(props: ModifierProps);
        /** Returns a deep copy of this object. */
        clone(): Modifier;
        /** Compare two LineStyle.Modifier for equivalence */
        equals(other: Modifier): boolean;
        applyTransform(transform: Transform): boolean;
    }
    /** Line style id and optional modifiers to override line style definition */
    class Info {
        styleId: Id64String;
        styleMod?: Modifier;
        /** Creates a LineStyle.Info object */
        constructor(styleId: Id64String, styleMod?: Modifier);
        /** Returns a deep copy of this object. */
        clone(): Info;
        equals(other: Info): boolean;
    }
}
//# sourceMappingURL=LineStyle.d.ts.map