/** The document-level style properties as they appear on an email channel node. */ export interface EmailChannelDocumentStyles { padding?: string; font_size?: string; line_height?: string; } /** * Resolve an email channel node's document-level styles into what the canvas * needs: the Frame's vertical/horizontal inset and the CSS variables that carry * the base font size and line height. * * Pure, so a read-only surface that renders a *stored* version of a template * (the version-comparison panes) resolves them exactly the way the live editor * does, instead of duplicating the cascade or silently falling back to presets. * {@link useEmailDocumentStyles} derives the same values for the live editor. */ export declare function resolveEmailDocumentStyles(channel: EmailChannelDocumentStyles | undefined | null): { emailPaddingVertical: number; emailPaddingHorizontal: number; emailFontSize: number | null; emailLineHeight: number | null; documentStyleVars: Record; }; interface UseEmailDocumentStylesOptions { isTemplateTransitioning?: boolean; } /** * Reads and writes the document-level email styles — body `padding`, base * `font_size` and base `line_height` — on the `channel: "email"` node. * * Mirrors {@link useEmailBackgroundColors}, with one deliberate difference: the * properties are never back-filled with defaults. An unset property means "use * the renderer's default", and writing one out would freeze today's default into * every template. The Frame/Text controls seed their inputs from the same * defaults instead, and `reset*` removes the property again. */ export declare function useEmailDocumentStyles(options?: UseEmailDocumentStylesOptions): { emailPaddingVertical: number; emailPaddingHorizontal: number; hasPaddingOverride: boolean; handlePaddingChange: (next: { vertical?: number; horizontal?: number; }) => void; resetPadding: () => void; emailFontSize: number | null; handleFontSizeChange: (value: number | null) => void; emailLineHeight: number | null; handleLineHeightChange: (value: number | null) => void; /** * What the Text inputs show — the renderer's base metrics when the property * is unset, mirroring how the Frame inputs fall back. * * Kept separate from `emailFontSize` / `emailLineHeight`, which stay `null` * when unset: that null is load-bearing. It drives `hasTypographyOverride` * (so "Reset to default" only appears once something is actually set), it * keeps `documentStyleVars` from pinning a value the author never chose, and * the text, list and quote blocks read `emailLineHeightAtom` directly to * decide whether a document base applies at all. */ emailFontSizeValue: number; emailLineHeightValue: number; hasTypographyOverride: boolean; resetTypography: () => void; documentStyleVars: Record; }; export {};