modern-idoc
Version: 
Intermediate document for modern codec libs
906 lines (838 loc) • 34.3 kB
text/typescript
import { Colord } from 'colord';
interface NormalizedAudio {
    src: string;
}
type Audio = string | NormalizedAudio;
declare function normalizeAudio(audio: Audio): NormalizedAudio | undefined;
interface RgbColor {
    r: number;
    g: number;
    b: number;
}
interface HslColor {
    h: number;
    s: number;
    l: number;
}
interface HsvColor {
    h: number;
    s: number;
    v: number;
}
interface HwbColor {
    h: number;
    w: number;
    b: number;
}
interface XyzColor {
    x: number;
    y: number;
    z: number;
}
interface LabColor {
    l: number;
    a: number;
    b: number;
}
interface LchColor {
    l: number;
    c: number;
    h: number;
}
interface CmykColor {
    c: number;
    m: number;
    y: number;
    k: number;
}
type WithAlpha<O> = O & {
    a: number;
};
type RgbaColor = WithAlpha<RgbColor>;
type HslaColor = WithAlpha<HslColor>;
type HsvaColor = WithAlpha<HsvColor>;
type HwbaColor = WithAlpha<HwbColor>;
type XyzaColor = WithAlpha<XyzColor>;
type LabaColor = LabColor & {
    alpha: number;
};
type LchaColor = WithAlpha<LchColor>;
type CmykaColor = WithAlpha<CmykColor>;
type ObjectColor = RgbColor | RgbaColor | HslColor | HslaColor | HsvColor | HsvaColor | HwbColor | HwbaColor | XyzColor | XyzaColor | LabColor | LabaColor | LchColor | LchaColor | CmykColor | CmykaColor;
type Uint32Color = number;
type Color = Uint32Color | ObjectColor | string;
type Hex8Color = string;
type NormalizedColor = Hex8Color;
declare function parseColor(color: Color): Colord;
declare const defaultColor: NormalizedColor;
declare function isColor(value: string): boolean;
declare function normalizeColor(color: Color, orFail?: boolean): NormalizedColor;
interface ColorStop {
    offset: number;
    color: NormalizedColor;
}
interface LinearGradient {
    angle: number;
    stops: ColorStop[];
    repeat?: boolean;
}
type LinearGradientWithType = LinearGradient & {
    type: 'linear-gradient';
};
interface RadialGradient {
    stops: ColorStop[];
    repeat?: boolean;
}
type RadialGradientWithType = RadialGradient & {
    type: 'radial-gradient';
};
declare function isGradient(cssText: string): boolean;
declare function normalizeGradient(cssText: string): (LinearGradientWithType | RadialGradientWithType)[];
interface LinearGradientNode {
  type: 'linear-gradient'
  orientation?: DirectionalNode | AngularNode | undefined
  colorStops: ColorStopNode[]
}
interface RepeatingLinearGradientNode {
  type: 'repeating-linear-gradient'
  orientation?: DirectionalNode | AngularNode | undefined
  colorStops: ColorStopNode[]
}
interface RadialGradientNode {
  type: 'radial-gradient'
  orientation?: (ShapeNode | DefaultRadialNode | ExtentKeywordNode)[] | undefined
  colorStops: ColorStopNode[]
}
interface RepeatingRadialGradientNode {
  type: 'repeating-radial-gradient'
  orientation?: (ShapeNode | DefaultRadialNode | ExtentKeywordNode)[] | undefined
  colorStops: ColorStopNode[]
}
interface DirectionalNode {
  type: 'directional'
  value:
    | 'left'
    | 'top'
    | 'bottom'
    | 'right'
    | 'left top'
    | 'top left'
    | 'left bottom'
    | 'bottom left'
    | 'right top'
    | 'top right'
    | 'right bottom'
    | 'bottom right'
}
interface AngularNode {
  type: 'angular'
  value: string
}
interface LiteralNode {
  type: 'literal'
  value: string
  length?: PxNode | EmNode | PercentNode | undefined
}
interface HexNode {
  type: 'hex'
  value: string
  length?: PxNode | EmNode | PercentNode | undefined
}
interface RgbNode {
  type: 'rgb'
  value: [string, string, string]
  length?: PxNode | EmNode | PercentNode | undefined
}
interface RgbaNode {
  type: 'rgba'
  value: [string, string, string, string?]
  length?: PxNode | EmNode | PercentNode | undefined
}
interface ShapeNode {
  type: 'shape'
  style?: ExtentKeywordNode | PxNode | EmNode | PercentNode | PositionKeywordNode | undefined
  value: 'ellipse' | 'circle'
  at?: PositionNode | undefined
}
interface DefaultRadialNode {
  type: 'default-radial'
  at: PositionNode
}
interface PositionKeywordNode {
  type: 'position-keyword'
  value: 'center' | 'left' | 'top' | 'bottom' | 'right'
}
interface PositionNode {
  type: 'position'
  value: {
    x: ExtentKeywordNode | PxNode | EmNode | PercentNode | PositionKeywordNode
    y: ExtentKeywordNode | PxNode | EmNode | PercentNode | PositionKeywordNode
  }
}
interface ExtentKeywordNode {
  type: 'extent-keyword'
  value: 'closest-side' | 'closest-corner' | 'farthest-side' | 'farthest-corner' | 'contain' | 'cover'
  at?: PositionNode | undefined
}
interface PxNode {
  type: 'px'
  value: string
}
interface EmNode {
  type: 'em'
  value: string
}
interface PercentNode {
  type: '%'
  value: string
}
type ColorStopNode = LiteralNode | HexNode | RgbNode | RgbaNode
type GradientNode = LinearGradientNode | RepeatingLinearGradientNode | RadialGradientNode | RepeatingRadialGradientNode
declare function parseGradient(cssText: string): GradientNode[]
declare function stringifyGradient(ast: GradientNode[]): string
interface ColorFillObject {
    color: Color;
}
type ColorFill = string | ColorFillObject;
interface NormalizedColorFill {
    color: NormalizedColor;
}
declare function normalizeColorFill(fill: ColorFill): NormalizedColorFill;
type GradientFillObject = {
    image?: string;
} & Partial<NormalizedGradientFill>;
type GradientFill = string | GradientFillObject;
interface NormalizedGradientFill {
    linearGradient?: LinearGradient;
    radialGradient?: RadialGradient;
    rotateWithShape?: boolean;
}
declare function normalizeGradientFill(fill: GradientFill): NormalizedGradientFill;
/**
 * 0    -0.5   0
 * -0.5        -0.5
 * 0    -0.5   0
 */
interface ImageFillCropRect {
    left?: number;
    top?: number;
    bottom?: number;
    right?: number;
}
/**
 * 0    0.5   0
 * 0.5        0.5
 * 0    0.5   0
 */
interface ImageFillStretchRect {
    left?: number;
    top?: number;
    bottom?: number;
    right?: number;
}
interface ImageFillTile {
    alignment?: string;
    scaleX?: number;
    scaleY?: number;
    translateX?: number;
    translateY?: number;
    flip?: string;
}
interface ImageFillObject {
    image: string;
    cropRect?: ImageFillCropRect;
    stretchRect?: ImageFillStretchRect;
    tile?: ImageFillTile;
    dpi?: number;
    opacity?: number;
    rotateWithShape?: boolean;
}
type ImageFill = string | ImageFillObject;
interface NormalizedImageFill extends ImageFillObject {
}
declare function normalizeImageFill(fill: ImageFill): NormalizedImageFill;
type None = undefined | null | 'none';
type WithNone<T> = T | None;
type WithStyleNone<T> = T | 'none';
type LineCap = 'butt' | 'round' | 'square';
type LineJoin = 'miter' | 'round' | 'bevel';
interface PresetFillObject {
    preset: string;
    foregroundColor?: WithNone<Color>;
    backgroundColor?: WithNone<Color>;
}
type PresetFill = string | PresetFillObject;
interface NormalizedPresetFill extends PresetFillObject {
    foregroundColor?: NormalizedColor;
    backgroundColor?: NormalizedColor;
}
declare function normalizePresetFill(fill: PresetFill): NormalizedPresetFill;
type FillObject = {
    enabled?: boolean;
} & Partial<ColorFillObject> & Partial<GradientFillObject> & Partial<ImageFillObject> & Partial<PresetFillObject>;
type Fill = string | FillObject;
type NormalizedFill = {
    enabled?: boolean;
} & Partial<NormalizedColorFill> & Partial<NormalizedGradientFill> & Partial<NormalizedImageFill> & Partial<NormalizedPresetFill>;
declare function isColorFillObject(fill: FillObject): fill is ColorFillObject;
declare function isColorFill(fill: Fill): fill is ColorFill;
declare function isGradientFillObject(fill: FillObject): fill is GradientFillObject;
declare function isGradientFill(fill: Fill): fill is GradientFill;
declare function isImageFillObject(fill: FillObject): fill is ImageFillObject;
declare function isImageFill(fill: Fill): fill is ImageFill;
declare function isPresetFillObject(fill: FillObject): fill is PresetFillObject;
declare function isPresetFill(fill: Fill): fill is PresetFill;
declare function normalizeFill(fill: Fill): NormalizedFill;
interface NormalizedBaseBackground {
    fillWithShape?: boolean;
}
type NormalizedBackground = NormalizedFill & NormalizedBaseBackground;
type BackgroundObject = FillObject & Partial<NormalizedBaseBackground>;
type Background = string | BackgroundObject;
declare function normalizeBackground(background: Background): NormalizedBackground;
interface PropertyDeclaration {
    [key: string]: unknown;
    default?: unknown | (() => unknown);
    fallback?: unknown | (() => unknown);
    alias?: string;
    internal?: boolean;
    internalKey: symbol;
}
interface PropertyAccessor {
    getProperty?: (key: string) => any;
    setProperty?: (key: string, newValue: any) => void;
    onUpdateProperty?: (key: string, newValue: any, oldValue: any) => void;
}
declare function getDeclarations(constructor: any): Map<string, PropertyDeclaration>;
declare function propertyOffsetSet(target: any & PropertyAccessor, key: string, newValue: any, declaration: PropertyDeclaration): void;
declare function propertyOffsetGet(target: any & PropertyAccessor, key: string, declaration: PropertyDeclaration): any;
declare function propertyOffsetDefaultValue(target: any & PropertyAccessor, key: string, declaration: PropertyDeclaration): any;
declare function getPropertyDescriptor<V, T extends PropertyAccessor>(key: string, declaration: PropertyDeclaration): {
    get: () => any;
    set: (v: any) => void;
};
declare function defineProperty<V, T extends PropertyAccessor>(constructor: any, key: string, declaration?: Partial<PropertyDeclaration>): void;
declare function property<V, T extends PropertyAccessor>(declaration?: Partial<PropertyDeclaration>): PropertyDecorator;
declare function property2<V, T extends PropertyAccessor>(declaration?: Partial<PropertyDeclaration>): (_: ClassAccessorDecoratorTarget<T, V>, context: ClassAccessorDecoratorContext) => ClassAccessorDecoratorResult<T, V>;
interface NormalizedInnerShadow {
    color: NormalizedColor;
    offsetX: number;
    offsetY: number;
    blurRadius: number;
}
type InnerShadowObject = Partial<NormalizedInnerShadow> & {
    color?: WithNone<Color>;
};
type InnerShadow = InnerShadowObject;
declare function getDefaultInnerShadow(): NormalizedInnerShadow;
declare function normalizeInnerShadow(shadow: InnerShadow): NormalizedInnerShadow;
interface NormalizedBaseOuterShadow {
    scaleX: number;
    scaleY: number;
}
type NormalizedOuterShadow = NormalizedBaseOuterShadow & NormalizedInnerShadow;
type OuterShadowObject = Partial<NormalizedBaseOuterShadow> & InnerShadowObject;
type OuterShadow = OuterShadowObject;
declare function getDefaultOuterShadow(): NormalizedOuterShadow;
declare function normalizeOuterShadow(shadow: OuterShadow): NormalizedOuterShadow;
interface NormalizedSoftEdge {
    radius: number;
}
type SoftEdge = NormalizedSoftEdge;
declare function normalizeSoftEdge(softEdge: SoftEdge): NormalizedSoftEdge;
interface NormalizedEffect {
    innerShadow?: NormalizedInnerShadow;
    outerShadow?: NormalizedOuterShadow;
    softEdge?: NormalizedSoftEdge;
}
interface EffectObject {
    innerShadow?: WithNone<InnerShadow>;
    outerShadow?: WithNone<OuterShadow>;
    softEdge?: WithNone<SoftEdge>;
}
type Effect = EffectObject;
declare function normalizeEffect(effect: Effect): NormalizedEffect;
interface NormalizedBaseForeground {
    fillWithShape?: boolean;
}
type NormalizedForeground = NormalizedBaseForeground & NormalizedFill;
type ForegroundObject = Partial<NormalizedBaseForeground> & FillObject;
type Foreground = string | ForegroundObject;
declare function normalizeForeground(foreground: Foreground): NormalizedForeground | undefined;
interface Meta {
    [key: string]: any;
}
interface Node<T = Meta> {
    name?: string;
    children?: Node[];
    meta?: T;
}
type LineEndType = 'oval' | 'stealth' | 'triangle' | 'arrow' | 'diamond';
type LineEndSize = 'sm' | 'md' | 'lg';
interface HeadEnd {
    type: LineEndType;
    width?: WithNone<LineEndSize>;
    height?: WithNone<LineEndSize>;
}
interface TailEnd {
    type: LineEndType;
    width?: WithNone<LineEndSize>;
    height?: WithNone<LineEndSize>;
}
type OutlineStyle = 'dashed' | 'solid' | string;
interface NormalizedBaseOutline {
    width?: number;
    style?: OutlineStyle;
    lineCap?: LineCap;
    lineJoin?: LineJoin;
    headEnd?: HeadEnd;
    tailEnd?: TailEnd;
}
type NormalizedOutline = NormalizedFill & NormalizedBaseOutline;
type OutlineObject = FillObject & Partial<NormalizedBaseOutline>;
type Outline = string | OutlineObject;
declare function normalizeOutline(outline: Outline): NormalizedOutline;
type BoxShadow = string;
interface NormalizedShadow {
    color: NormalizedColor;
    offsetX?: number;
    offsetY?: number;
    blur?: number;
}
type ShadowObject = Partial<NormalizedShadow> & {
    color?: WithNone<Color>;
};
type Shadow = BoxShadow | ShadowObject;
declare function normalizeShadow(shadow: Shadow): NormalizedShadow;
interface NormalizedShadowStyle {
    boxShadow: BoxShadow;
    shadowColor?: NormalizedColor;
    shadowOffsetX?: number;
    shadowOffsetY?: number;
    shadowBlur?: number;
}
declare function getDefaultShadowStyle(): NormalizedShadowStyle;
type SVGPathData = string;
type FillRule = 'nonzero' | 'evenodd';
type StrokeLinecap = 'butt' | 'round' | 'square';
type StrokeLinejoin = 'arcs' | 'bevel' | 'miter' | 'miter-clip' | 'round';
interface ShapePathStyle {
    [key: string]: any;
    opacity: number;
    visibility: string;
    shadowColor: NormalizedColor;
    shadowOffsetX: number;
    shadowOffsetY: number;
    shadowBlur: number;
    fill: string;
    fillOpacity: number;
    fillRule: FillRule;
    stroke: string;
    strokeOpacity: number;
    strokeWidth: number;
    strokeLinecap: StrokeLinecap;
    strokeLinejoin: StrokeLinejoin;
    strokeMiterlimit: number;
    strokeDasharray: number[];
    strokeDashoffset: number;
}
interface ShapePath extends Partial<ShapePathStyle> {
    data: SVGPathData;
}
interface NormalizedShape {
    preset?: string;
    viewBox?: number[];
    svg?: string;
    paths?: ShapePath[];
}
type Shape = SVGPathData | SVGPathData[] | ShapePath[] | NormalizedShape;
declare function normalizeShape(shape: Shape): NormalizedShape;
type StyleUnit = `${number}%` | number;
type Display = 'flex' | 'contents';
type Direction = 'inherit' | 'ltr' | 'rtl';
type Overflow = 'hidden' | 'visible';
type Visibility = 'hidden' | 'visible';
type FontWeight = 'normal' | 'bold' | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
type FontStyle = 'normal' | 'italic' | 'oblique' | `oblique ${string}`;
type FontKerning = WithStyleNone<'auto' | 'normal'>;
type TextWrap = 'wrap' | 'nowrap';
type TextAlign = WithStyleNone<'center' | 'end' | 'left' | 'right' | 'start' | 'justify'>;
type TextTransform = WithStyleNone<'uppercase' | 'lowercase'>;
type TextOrientation = 'mixed' | 'upright' | 'sideways-right' | 'sideways';
type TextDecoration = WithStyleNone<'underline' | 'line-through' | 'overline'>;
type VerticalAlign = 'baseline' | 'top' | 'middle' | 'bottom' | 'sub' | 'super' | 'text-top' | 'text-bottom';
type WritingMode = 'horizontal-tb' | 'vertical-lr' | 'vertical-rl';
type Align = 'auto' | 'flex-start' | 'center' | 'flex-end' | 'stretch' | 'baseline' | 'space-between' | 'space-around' | 'space-evenly';
type FlexDirection = 'column' | 'column-reverse' | 'row' | 'row-reverse';
type FlexWrap = 'nowrap' | 'wrap' | 'Wrap-reverse';
type Justify = 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'space-evenly';
type Position = 'static' | 'relative' | 'absolute';
type BorderStyle = WithStyleNone<'dashed' | 'solid'>;
type BoxSizing = 'border-box' | 'content-box';
type PointerEvents = 'auto' | 'none';
type ListStyleType = WithStyleNone<'disc'>;
type ListStyleImage = WithStyleNone<string>;
type ListStyleColormap = WithStyleNone<Record<string, string>>;
type ListStyleSize = StyleUnit | `${number}rem` | 'cover';
type ListStylePosition = 'inside' | 'outside';
type HighlightLine = TextDecoration | 'outline';
type HighlightImage = WithStyleNone<string>;
type HighlightReferImage = WithStyleNone<string>;
type HighlightColormap = WithStyleNone<Record<string, string>>;
type HighlightSize = StyleUnit | `${number}rem` | 'cover';
type HighlightThickness = StyleUnit;
interface NormalizedLayoutStyle {
    overflow: Overflow;
    direction: Direction;
    display: Display;
    boxSizing: BoxSizing;
    width: StyleUnit | 'auto';
    height: StyleUnit | 'auto';
    maxHeight: StyleUnit;
    maxWidth: StyleUnit;
    minHeight: StyleUnit;
    minWidth: StyleUnit;
    position: Position;
    left: StyleUnit;
    top: StyleUnit;
    right: StyleUnit;
    bottom: StyleUnit;
    borderTop: string;
    borderLeft: string;
    borderRight: string;
    borderBottom: string;
    borderWidth: number;
    border: string;
    flex: number;
    flexBasis: StyleUnit | 'auto';
    flexDirection: FlexDirection;
    flexGrow: number;
    flexShrink: number;
    flexWrap: FlexWrap;
    alignContent: Align;
    alignItems: Align;
    alignSelf: Align;
    justifyContent: Justify;
    gap: StyleUnit;
    marginTop: WithStyleNone<StyleUnit | 'auto'>;
    marginLeft: WithStyleNone<StyleUnit | 'auto'>;
    marginRight: WithStyleNone<StyleUnit | 'auto'>;
    marginBottom: WithStyleNone<StyleUnit | 'auto'>;
    margin: WithStyleNone<StyleUnit | 'auto'>;
    paddingTop: StyleUnit;
    paddingLeft: StyleUnit;
    paddingRight: StyleUnit;
    paddingBottom: StyleUnit;
    padding: StyleUnit;
}
declare function getDefaultLayoutStyle(): Partial<NormalizedLayoutStyle>;
interface NormalizedTransformStyle {
    rotate: number;
    scaleX: number;
    scaleY: number;
    skewX: number;
    skewY: number;
    translateX: number;
    translateY: number;
    transform: WithStyleNone<string>;
    transformOrigin: string;
}
declare function getDefaultTransformStyle(): NormalizedTransformStyle;
type BackgroundSize = 'contain' | 'cover' | string | 'stretch' | 'rigid';
type NormalizedElementStyle = Partial<NormalizedLayoutStyle> & NormalizedTransformStyle & NormalizedShadowStyle & {
    backgroundImage: WithStyleNone<string>;
    backgroundSize: BackgroundSize;
    backgroundColor: WithStyleNone<NormalizedColor>;
    backgroundColormap: WithStyleNone<Record<string, string>>;
    borderRadius: number;
    borderColor: WithStyleNone<NormalizedColor>;
    borderStyle: BorderStyle;
    outlineWidth: number;
    outlineOffset: number;
    outlineColor: WithStyleNone<NormalizedColor>;
    outlineStyle: string;
    visibility: Visibility;
    filter: string;
    opacity: number;
    pointerEvents: PointerEvents;
    maskImage: WithStyleNone<string>;
};
declare function getDefaultElementStyle(): NormalizedElementStyle;
interface NormalizedHighlight {
    image: HighlightImage;
    referImage: HighlightReferImage;
    colormap: HighlightColormap;
    line: HighlightLine;
    size: HighlightSize;
    thickness: HighlightThickness;
}
interface NormalizedHighlightStyle {
    highlight: Partial<NormalizedHighlight>;
    highlightImage: HighlightImage;
    highlightReferImage: HighlightReferImage;
    highlightColormap: HighlightColormap;
    highlightLine: HighlightLine;
    highlightSize: HighlightSize;
    highlightThickness: HighlightThickness;
}
declare function getDefaultHighlightStyle(): Required<NormalizedHighlightStyle>;
interface NormalizedListStyle {
    type: ListStyleType;
    image: ListStyleImage;
    colormap: ListStyleColormap;
    size: ListStyleSize;
    position: ListStylePosition;
}
interface NormalizedListStyleStyle {
    listStyle: Partial<NormalizedListStyle>;
    listStyleType: ListStyleType;
    listStyleImage: ListStyleImage;
    listStyleColormap: ListStyleColormap;
    listStyleSize: ListStyleSize;
    listStylePosition: ListStylePosition;
}
declare function getDefaultListStyleStyle(): NormalizedListStyleStyle;
type NormalizedTextInlineStyle = NormalizedHighlightStyle & {
    color: NormalizedColor;
    verticalAlign: VerticalAlign;
    letterSpacing: number;
    wordSpacing: number;
    fontSize: number;
    fontWeight: FontWeight;
    fontFamily: string;
    fontStyle: FontStyle;
    fontKerning: FontKerning;
    textTransform: TextTransform;
    textOrientation: TextOrientation;
    textDecoration: TextDecoration;
};
declare function getDefaultTextInlineStyle(): Required<NormalizedTextInlineStyle>;
type NormalizedTextLineStyle = NormalizedListStyleStyle & {
    writingMode: WritingMode;
    textWrap: TextWrap;
    textAlign: TextAlign;
    textIndent: number;
    lineHeight: number;
};
declare function getDefaultTextLineStyle(): NormalizedTextLineStyle;
interface NormalizedTextDrawStyle {
    textStrokeWidth: number;
    textStrokeColor: NormalizedColor;
}
type NormalizedTextStyle = NormalizedTextLineStyle & NormalizedTextInlineStyle & NormalizedTextDrawStyle;
declare function getDefaultTextStyle(): Required<NormalizedTextStyle>;
type FullStyle = NormalizedTextStyle & NormalizedElementStyle;
type NormalizedStyle = Partial<FullStyle>;
type StyleObject = NormalizedStyle & {
    color?: WithStyleNone<Color>;
    backgroundColor?: WithStyleNone<Color>;
    borderColor?: WithStyleNone<Color>;
    outlineColor?: WithStyleNone<Color>;
    shadowColor?: WithStyleNone<Color>;
};
type Style = StyleObject;
declare function normalizeStyle(style: Style): NormalizedStyle;
declare function getDefaultStyle(): FullStyle;
interface FragmentObject extends StyleObject {
    content: string;
    fill?: Fill;
    outline?: Outline;
}
interface NormalizedFragment extends NormalizedStyle {
    content: string;
    fill?: NormalizedFill;
    outline?: NormalizedOutline;
}
interface ParagraphObject extends StyleObject {
    fragments: FragmentObject[];
    fill?: Fill;
    outline?: Outline;
}
interface NormalizedParagraph extends NormalizedStyle {
    fragments: NormalizedFragment[];
    fill?: NormalizedFill;
    outline?: NormalizedOutline;
}
type FlatTextContent = string | FragmentObject | ParagraphObject | (string | FragmentObject)[];
type TextContent = FlatTextContent | FlatTextContent[];
type NormalizedTextContent = NormalizedParagraph[];
interface TextObject {
    content?: TextContent;
    enabled?: boolean;
    style?: Style;
    effects?: Style[];
    measureDom?: any;
    fonts?: any;
    fill?: Fill;
    outline?: Outline;
}
interface NormalizedText {
    content: NormalizedTextContent;
    enabled?: boolean;
    style?: NormalizedStyle;
    effects?: NormalizedStyle[];
    measureDom?: any;
    fonts?: any;
    fill?: NormalizedFill;
    outline?: NormalizedOutline;
}
type Text = string | FlatTextContent[] | TextObject;
declare function hasCRLF(content: string): boolean;
declare function isCRLF(char: string): boolean;
declare function normalizeCRLF(content: string): string;
declare function normalizeTextContent(value: TextContent): NormalizedTextContent;
declare function isParagraphObject(value: any): value is ParagraphObject;
declare function isFragmentObject(value: any): value is FragmentObject;
declare function normalizeText(value: Text): NormalizedText;
declare function textContentToString(value: TextContent): string;
interface NormalizedVideo {
    src: string;
}
type Video = string | NormalizedVideo;
declare function normalizeVideo(video: Video): NormalizedVideo | undefined;
interface Element<T = Meta> extends Omit<Node<T>, 'children'> {
    id?: string;
    style?: WithNone<Style>;
    text?: WithNone<Text>;
    background?: WithNone<Background>;
    shape?: WithNone<Shape>;
    fill?: WithNone<Fill>;
    outline?: WithNone<Outline>;
    foreground?: WithNone<Foreground>;
    shadow?: WithNone<Shadow>;
    video?: WithNone<Video>;
    audio?: WithNone<Audio>;
    effect?: WithNone<Effect>;
    children?: Element[];
}
interface NormalizedElement<T = Meta> extends Omit<Node<T>, 'children'> {
    id: string;
    style?: NormalizedStyle;
    text?: NormalizedText;
    background?: NormalizedBackground;
    shape?: NormalizedShape;
    fill?: NormalizedFill;
    outline?: NormalizedOutline;
    foreground?: NormalizedForeground;
    shadow?: NormalizedShadow;
    video?: NormalizedVideo;
    audio?: NormalizedAudio;
    effect?: NormalizedEffect;
    children?: NormalizedElement[];
}
declare function normalizeElement<T = Meta>(element: Element<T>): NormalizedElement<T>;
interface Document extends Element {
    fonts?: any;
}
interface NormalizedDocument extends NormalizedElement {
    fonts?: any;
}
declare function normalizeDocument(doc: Document): NormalizedDocument;
interface FlatElement extends Omit<Element, 'children'> {
    parentId?: string;
    childrenIds?: string[];
}
interface FlatDocument extends Omit<Element, 'children'> {
    fonts?: any;
    children: Record<string, FlatElement>;
}
interface NormalizedFlatElement extends Omit<NormalizedElement, 'children'> {
    parentId?: string;
    childrenIds?: string[];
}
interface NormalizedFlatDocument {
    fonts?: any;
    children: Record<string, NormalizedFlatElement>;
}
declare function normalizeFlatDocument(doc: FlatDocument): NormalizedFlatDocument;
declare function flatDocumentToDocument(flatDoc: FlatDocument): Document;
type IdGenerator = () => string;
declare const nanoid: IdGenerator;
declare const idGenerator: IdGenerator;
type EventListenerValue<T extends any[] = any[]> = (...args: T) => void;
type EventListenerOptions = boolean | {
    once?: boolean;
};
interface EventListener$1<T extends any[] = any[]> {
    value: EventListenerValue<T>;
    options?: EventListenerOptions;
}
declare class EventEmitter<T extends Record<string, any> = Record<string, any>> {
    eventListeners: Map<keyof T, EventListener$1<any[]> | EventListener$1<any[]>[]>;
    addEventListener<K extends keyof T>(event: K, listener: EventListenerValue<T[K]>, options?: EventListenerOptions): this;
    removeEventListener<K extends keyof T>(event: K, listener: EventListenerValue<T[K]>, options?: EventListenerOptions): this;
    removeAllListeners(): this;
    hasEventListener(event: string): boolean;
    dispatchEvent<K extends keyof T>(event: K, ...args: T[K]): boolean;
    on<K extends keyof T>(event: K, listener: EventListenerValue<T[K]>, options?: EventListenerOptions): this;
    once<K extends keyof T>(event: K, listener: EventListenerValue<T[K]>): this;
    off<K extends keyof T>(event: K, listener: EventListenerValue<T[K]>, options?: EventListenerOptions): this;
    emit<K extends keyof T>(event: K, ...args: T[K]): void;
}
declare function isNone<T>(value: T): value is Extract<T, null | undefined | 'none'>;
declare function round(number: number, digits?: number, base?: number): number;
declare function clearUndef<T>(obj: T, deep?: boolean): T;
declare function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
declare function isEqualObject(a: any, b: any): boolean;
declare function getNestedValue(obj: any, path: (string | number)[], fallback?: any): any;
declare function setNestedValue(obj: any, path: (string | number)[], value: any): void;
declare function getObjectValueByPath(obj: any, path: string, fallback?: any): any;
declare function setObjectValueByPath(obj: any, path: string, value: any): void;
type EventListener = (...args: any[]) => void;
interface ObservableEvents {
    [event: string]: EventListener;
}
declare class Observable<T extends ObservableEvents = ObservableEvents> {
    _observers: Map<string, Set<any>>;
    on<K extends keyof T & string>(event: K, listener: T[K]): this;
    once<K extends keyof T & string>(event: K, listener: T[K]): this;
    off<K extends keyof T & string>(event: K, listener: T[K]): this;
    emit<K extends keyof T & string>(event: K, ...args: Parameters<T[K]>): this;
    destroy(): void;
}
declare class RawWeakMap<K extends WeakKey = WeakKey, V = any> {
    protected _map: WeakMap<K, V>;
    protected _toRaw(value: any): any;
    delete(key: K): boolean;
    get(key: K): V | undefined;
    has(key: K): boolean;
    set(key: K, value: V): this;
}
interface ReactivableEvents extends ObservableEvents {
    updateProperty: (key: string, newValue: any, oldValue: any) => void;
}
interface Reactivable {
    on: <K extends keyof ReactivableEvents & string>(event: K, listener: ReactivableEvents[K]) => this;
    once: <K extends keyof ReactivableEvents & string>(event: K, listener: ReactivableEvents[K]) => this;
    off: <K extends keyof ReactivableEvents & string>(event: K, listener: ReactivableEvents[K]) => this;
    emit: <K extends keyof ReactivableEvents & string>(event: K, ...args: Parameters<ReactivableEvents[K]>) => this;
}
declare class Reactivable extends Observable implements PropertyAccessor {
    protected _propertyAccessor?: PropertyAccessor;
    protected _properties: Map<string, unknown>;
    protected _updatedProperties: Map<string, unknown>;
    protected _changedProperties: Set<string>;
    protected _updatingPromise: Promise<void>;
    protected _updating: boolean;
    constructor(properties?: Record<string, any>);
    isDirty(key?: string): boolean;
    getProperty(key: string): any;
    setProperty(key: string, newValue: any): void;
    getProperties(keys?: string[]): Record<string, any>;
    setProperties(properties?: Record<string, any>): this;
    resetProperties(): this;
    getPropertyDeclarations(): Map<string, PropertyDeclaration>;
    getPropertyDeclaration(key: string): PropertyDeclaration | undefined;
    setPropertyAccessor(accessor: PropertyAccessor): this;
    protected _nextTick(): Promise<void>;
    protected _enqueueUpdate(): Promise<void>;
    onUpdate(): void;
    onUpdateProperty(key: string, newValue: any, oldValue: any): void;
    requestUpdate(key?: string, newValue?: any, oldValue?: any): void;
    protected _update(changed: Map<string, any>): void;
    protected _updateProperty(key: string, newValue: any, oldValue: any): void;
    toJSON(): Record<string, any>;
    clone(): this;
}
export { EventEmitter, Observable, RawWeakMap, Reactivable, clearUndef, defaultColor, defineProperty, flatDocumentToDocument, getDeclarations, getDefaultElementStyle, getDefaultHighlightStyle, getDefaultInnerShadow, getDefaultLayoutStyle, getDefaultListStyleStyle, getDefaultOuterShadow, getDefaultShadowStyle, getDefaultStyle, getDefaultTextInlineStyle, getDefaultTextLineStyle, getDefaultTextStyle, getDefaultTransformStyle, getNestedValue, getObjectValueByPath, getPropertyDescriptor, hasCRLF, idGenerator, isCRLF, isColor, isColorFill, isColorFillObject, isEqualObject, isFragmentObject, isGradient, isGradientFill, isGradientFillObject, isImageFill, isImageFillObject, isNone, isParagraphObject, isPresetFill, isPresetFillObject, nanoid, normalizeAudio, normalizeBackground, normalizeCRLF, normalizeColor, normalizeColorFill, normalizeDocument, normalizeEffect, normalizeElement, normalizeFill, normalizeFlatDocument, normalizeForeground, normalizeGradient, normalizeGradientFill, normalizeImageFill, normalizeInnerShadow, normalizeOuterShadow, normalizeOutline, normalizePresetFill, normalizeShadow, normalizeShape, normalizeSoftEdge, normalizeStyle, normalizeText, normalizeTextContent, normalizeVideo, parseColor, parseGradient, pick, property, property2, propertyOffsetDefaultValue, propertyOffsetGet, propertyOffsetSet, round, setNestedValue, setObjectValueByPath, stringifyGradient, textContentToString };
export type { Align, AngularNode, Audio, Background, BackgroundObject, BackgroundSize, BorderStyle, BoxShadow, BoxSizing, CmykColor, CmykaColor, Color, ColorFill, ColorFillObject, ColorStop, ColorStopNode, DefaultRadialNode, Direction, DirectionalNode, Display, Document, Effect, EffectObject, Element, EmNode, EventListenerOptions, EventListenerValue, ExtentKeywordNode, Fill, FillObject, FillRule, FlatDocument, FlatElement, FlatTextContent, FlexDirection, FlexWrap, FontKerning, FontStyle, FontWeight, Foreground, ForegroundObject, FragmentObject, FullStyle, GradientFill, GradientFillObject, GradientNode, HeadEnd, Hex8Color, HexNode, HighlightColormap, HighlightImage, HighlightLine, HighlightReferImage, HighlightSize, HighlightThickness, HslColor, HslaColor, HsvColor, HsvaColor, HwbColor, HwbaColor, IdGenerator, ImageFill, ImageFillCropRect, ImageFillObject, ImageFillStretchRect, ImageFillTile, InnerShadow, InnerShadowObject, Justify, LabColor, LabaColor, LchColor, LchaColor, LineCap, LineEndSize, LineEndType, LineJoin, LinearGradient, LinearGradientNode, LinearGradientWithType, ListStyleColormap, ListStyleImage, ListStylePosition, ListStyleSize, ListStyleType, LiteralNode, Meta, Node, None, NormalizedAudio, NormalizedBackground, NormalizedBaseBackground, NormalizedBaseForeground, NormalizedBaseOuterShadow, NormalizedBaseOutline, NormalizedColor, NormalizedColorFill, NormalizedDocument, NormalizedEffect, NormalizedElement, NormalizedElementStyle, NormalizedFill, NormalizedFlatDocument, NormalizedFlatElement, NormalizedForeground, NormalizedFragment, NormalizedGradientFill, NormalizedHighlight, NormalizedHighlightStyle, NormalizedImageFill, NormalizedInnerShadow, NormalizedLayoutStyle, NormalizedListStyle, NormalizedListStyleStyle, NormalizedOuterShadow, NormalizedOutline, NormalizedParagraph, NormalizedPresetFill, NormalizedShadow, NormalizedShadowStyle, NormalizedShape, NormalizedSoftEdge, NormalizedStyle, NormalizedText, NormalizedTextContent, NormalizedTextDrawStyle, NormalizedTextInlineStyle, NormalizedTextLineStyle, NormalizedTextStyle, NormalizedTransformStyle, NormalizedVideo, ObjectColor, ObservableEvents, OuterShadow, OuterShadowObject, Outline, OutlineObject, OutlineStyle, Overflow, ParagraphObject, PercentNode, PointerEvents, Position, PositionKeywordNode, PositionNode, PresetFill, PresetFillObject, PropertyAccessor, PropertyDeclaration, PxNode, RadialGradient, RadialGradientNode, RadialGradientWithType, ReactivableEvents, RepeatingLinearGradientNode, RepeatingRadialGradientNode, RgbColor, RgbNode, RgbaColor, RgbaNode, SVGPathData, Shadow, ShadowObject, Shape, ShapeNode, ShapePath, ShapePathStyle, SoftEdge, StrokeLinecap, StrokeLinejoin, Style, StyleObject, StyleUnit, TailEnd, Text, TextAlign, TextContent, TextDecoration, TextObject, TextOrientation, TextTransform, TextWrap, Uint32Color, VerticalAlign, Video, Visibility, WithNone, WithStyleNone, WritingMode, XyzColor, XyzaColor };