import type { FigmaColor } from './parseColor'; export type Guid = { sessionID: number; localID: number; }; export type Matrix = { m00: number; m01: number; m02: number; m10: number; m11: number; m12: number; }; export type ParentIndex = { guid: Guid; position: string; }; export type Paint = { type: 'SOLID'; color: FigmaColor; opacity: number; visible: boolean; blendMode: 'NORMAL'; } | { type: 'GRADIENT_LINEAR'; stops: Array<{ color: FigmaColor; position: number; }>; transform: Matrix; opacity: number; visible: boolean; blendMode: 'NORMAL'; }; export type Effect = { type: 'DROP_SHADOW' | 'INNER_SHADOW'; offset: { x: number; y: number; }; radius: number; spread?: number; color: FigmaColor; visible: boolean; blendMode: 'NORMAL'; }; export type BaseNode = { guid: Guid; phase: 'CREATED'; parentIndex?: ParentIndex; type: string; name: string; visible: boolean; opacity: number; size?: { x: number; y: number; }; transform: Matrix; strokeWeight: number; strokeAlign: 'INSIDE' | 'OUTSIDE' | 'CENTER'; strokeJoin: 'MITER' | 'BEVEL' | 'ROUND'; fillPaints?: Paint[]; strokePaints?: Paint[]; effects?: Effect[]; horizontalConstraint?: 'MIN' | 'CENTER' | 'MAX' | 'STRETCH' | 'SCALE'; verticalConstraint?: 'MIN' | 'CENTER' | 'MAX' | 'STRETCH' | 'SCALE'; cornerRadius?: number; rectangleTopLeftCornerRadius?: number; rectangleTopRightCornerRadius?: number; rectangleBottomLeftCornerRadius?: number; rectangleBottomRightCornerRadius?: number; }; export type FrameNode = BaseNode & { type: 'FRAME' | 'ROUNDED_RECTANGLE'; stackMode?: 'NONE' | 'HORIZONTAL' | 'VERTICAL'; stackSpacing?: number; stackHorizontalPadding?: number; stackVerticalPadding?: number; stackPaddingRight?: number; stackPaddingBottom?: number; stackPrimaryAlignItems?: 'MIN' | 'CENTER' | 'MAX' | 'SPACE_BETWEEN'; stackCounterAlignItems?: 'MIN' | 'CENTER' | 'MAX' | 'BASELINE'; stackPrimarySizing?: 'FIXED' | 'AUTO'; stackCounterSizing?: 'FIXED' | 'AUTO'; stackReverseZIndex?: boolean; frameMaskDisabled?: boolean; backgroundOpacity?: number; backgroundEnabled?: boolean; }; export type TextNode = BaseNode & { type: 'TEXT'; fontSize: number; fontName: { family: string; style: string; postscript: string; }; lineHeight: { value: number; units: 'PIXELS' | 'RAW' | 'PERCENT'; }; letterSpacing: { value: number; units: 'PIXELS' | 'PERCENT'; }; textAlignHorizontal: 'LEFT' | 'CENTER' | 'RIGHT' | 'JUSTIFIED'; textAlignVertical: 'TOP' | 'CENTER' | 'BOTTOM'; textAutoResize: 'NONE' | 'WIDTH_AND_HEIGHT' | 'HEIGHT'; textData: { characters: string; lines: Array<{ lineType: 'PLAIN'; styleId: number; indentationLevel: number; sourceDirectionality: 'AUTO'; listStartOffset: number; isFirstLineOfList: boolean; }>; }; autoRename: boolean; detachOpticalSizeFromFontSize: boolean; textBidiVersion: number; textUserLayoutVersion: number; textExplicitLayoutVersion: number; fontVariantCommonLigatures: boolean; fontVariantContextualLigatures: boolean; fontVariations: unknown[]; fontVersion: string; }; export type FigmaNode = BaseNode | FrameNode | TextNode; export type FigmaMessage = { type: 'NODE_CHANGES'; sessionID: number; ackID: number; nodeChanges: FigmaNode[]; blobs: Uint8Array[]; pasteID: number; pasteFileKey: number; pasteIsPartiallyOutsideEnclosingFrame: boolean; pastePageId: Guid; isCut: boolean; pasteEditorType: 'DESIGN'; publishedAssetGuids: unknown[]; }; export declare const CONTENT_SESSION_ID = 100; export declare const INTERNAL_CANVAS_GUID: Guid; export declare const DEFAULT_TRANSFORM: Matrix; export declare function translate(x: number, y: number): Matrix;